数据库选型的一些看法

    在做项目的技术选型时,对于数据库我们一般是这么选择的:
客户指定了数据库的情况。比如某些**用户指定要用Oracle,我们当然是以客户的要求为最高优先级了。
项目总预算不高的情况,对于企业级应用,如各种管理系统、OA之类的项目,我们会优先选择MySQL、PostgreSQL。因为MySQL、PostgreSQL都是免费的数据库,而且第三方工具也很多,比如Sqlyog,资料、文档也非常多,社区力量强大,遇到问题很容易解决。数据库优化也不是问题,有很多技巧可以掌握。
在项目总预算不高的情况,对于实时性要求很高的项目,我们会选择NoSQL,比如内存数据库Redis或者面向文档的数据库(像MongoDB)。这种情况下对于团队的技术要求较高,因为NoSQL正处于迅猛发展中,文档资料相对要少一些,解决问题的难度相对要大一些。因此还要考虑团队自身的实际情况,比如团队中有多少成员掌握Redis的使用方法,积累了多少经验等。
在报价较高且预算充足的情况下,对于企业级应用,如各种企业级管理系统、OA之类的项目,我们会选择SQL Server或者Oracle。其中SQL Server相对易用,项目开发速度较快。Oralce不用说,数据库领域的领先产品。此外在遇到问题时还能获得数据库厂商的技术支持。
在项目报价较高且预算充足的情况,对于项目主要是面向BI、数据分析之类的需求,那么我们会选择列式数据库,比如Hbase,Google的BigTable等

当然以上的各种选择也并非绝对,有句俗话说“一招鲜,吃遍天”。如果项目团队把MySQL完全吃透了,能够从源码级进行改进和开发,那么99%需求都可以选择MySQL来搞定它。

关于数据库平台的选型,一般需要先对应用系统进行大致的分类。个人认为,就目前的大部分应用系统而言,可以分为以下的三类:
企业中用于日常生产的ERP系统。
企业中的数据仓库的各项应用。
互联网的一些应用系统。

这三类应用系统各有特点,这些特点也就大致的决定的数据库的平台:
1,ERP系统一般是内网运行,即通常意义上的OLTP系统,呈现出在某个时间段内交易事务量较大,并发会话较多,但大部分都是对单条记录进行DML操作,对数据库的主要要求也是交易吞吐量与事务控制的完整性,这一点,大部分的关系型数据库都可以满足,对于数据库的选型,也可以根据公司的经济情况及人力资源来决定。常规选择一般是ORACLE,SQL SERVER,MYSQL等。对于大型企业中的大型ERP,可考虑选用ORACLE数据库,如果选用ORACLE数据库,则意味着需要更多的经济成本,同时,也需要请相应的技术人员来管理与维护ORACLE数据库。如果选用SQL SERVER数据库,可以节省一定的经济成本。但如果选用开源的MYSQL数据库,虽可节省购买软件的成本,但也需要请专业人员对MYSQL进行管理。对于这类ERP系统,一般较少公司会去选用DB2,一则,DB2数据库开放性不好,二则,数据库的监控也较难,三则,DB2数据库的技术人才也较难请到。


2,数据仓库的相关应用,目前,国内数据仓库的应用系统主要呈现的特点是:存放在数据仓库中的数据量非常大,一般都是TB级;大部分的应用都是报表程序,需进行大量的统计分析。针对于这些特点,如果选用一般的关系型数据库(如DB2,ORACLE或SQL SERVER),可能会对应用统计的性能有较大的影响。因为这一类数据库,以事务型为主,并大量的使用锁机制,确保并发事务对数据操作的正确性,可以支持高的并发会话数。但在数据仓库中,所有的应用都以查询为主,较少或者不会对数据仓库中的数据进行DML操作,此时,关系型数据库中的锁机制,似乎就对数据仓库中的大量数据读产生限制,也没有较高的并发量,但是,由于统计程序需要统计大量的数据,这个就需要所选用的数据库能解决IO瓶颈的问题,同时,也需要支持并行操作。针对于数据仓库应用的这些特点及关系型数据库的特性,如果在大型的企业级数据仓库中,选用常规的DB2,ORACLE等数据库,显然显得不太合适。从业界的数据仓库的平台使用情况来看,早年创建的EDW,大多选用的还是DB2(金融业)与ORACLE(制造业与通信行业),但选SQL SERVER的较少。目前,大多数大公司的EDW基本都采用了TD,较少国内公司也采用了ORACLE公司的EXADATA一体机,当然,也有采用IBM公司的ISAS一体机。这次我们公司在数据仓库平台选型的POC测试中,就是从TD,ORACLE EXADATA,IBM ISAS三家数据库中进行选型,这三家公司推出的都是一体机,数据库本身都还是TD13,ORACLE11G,DB29.7,但是从硬进行上进行大量的优化。TD的并行性最好,也从数据仓库这门技术是对数据库进行大量的改进,是三家数据库中,最适合用于数据仓库中(比如,较少的REDO日志,对全量表的操作的特殊处理,时序表等技术),ORACLE有效的解决了IO的瓶颈,能达到30GB/S,这一点是其它两家所达不到的。TD与ORACLE在所有的表上均没有索引,这有效的节约了存储空间,但对数据的操作性能并没有因此而下降。在本次的POC中,IBM排在了最后。


3,互联网的应用,其主要特点就是实时性要求高,数据量非常大,但对于部分数据的事务一致性,完整性,可能要求并不是很高。比如,一般客户的QQ聊天记录,可能对于运营公司来说,这类数据可能都不需要保存在数据库中。再如现在的微信中手机摇一摇,有哪一个手机用户对于运营公司所给出的结果进行了正确性的验证呢,手机用户只是知道运营公司给了结果,但运营公司是不是将同一时刻摇手机的所有用户都返馈给手机用户了,谁也不知道。这就是说,对于这类应用,完全可以选用一些开源的数据库,节省公司的经济成本,但对于关键型的数据,还是需要选用商用数据库(比如,用户数据,交易支付数据等)。对于开源数据库,目前,用户量最大的应属MYSQL了。MYSQL数据库也可以跨平台运行,并且也可以很容易的得到帮助(无论是官方的,还是社区的)。

说了这么多,其主要想表达的思想是:数据库的选定,应以应用系统的特点来驱动,当然,应用系统的使用者也可决定数据库的平台。

转载于:https://my.oschina.net/aiguozhe/blog/117347

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值