如今市面上的数据管理产品真的是数不胜数,选择余地前所未有地广泛。除了传统的商用关系数据库外,有许多优秀的开源产品可供选择,另外还有一大批云数据库和NoSQL数据库可以考虑。
由于选择如此之多,采购数据库的买家该如何是好?办法跟你在购买任何大宗商品之前一样:调查市场,把选择范围缩小到符合自身要求和预算情况的几种产品,一旦你准备作出明智的决定,就可以找商家洽谈了。这正是本文的初衷:旨在帮助你把潜在候选者的范围缩小到最终名单,之后你可以更深入地比较一下。
选择哪种类型的数据库?
数据库主要有三种类型,各自有其优缺点。贵企业的需求、预算、技术专长和场地限制都会对数据库平台的选择起到影响。三种主要的数据库类型是桌面数据库、服务器数据库和Web版数据库,以及Cloud DBaaS。
1.桌面数据库
你可能熟悉至少一款桌面数据库产品。主导这个市场的是像微软Access、FileMaker Pro和Lotus Approach这些知名厂商。这些产品的价格相对便宜,很适合个人用户或非交互式Web应用。
2.服务器数据库
如果你打算使用一种任务密集型的数据库应用(如电子商务网站)或一种多用户数据库,那么就要选购大牌厂商的产品。微软SQL Server和甲骨文等服务器数据库提供了强大的功能,不过售价相应也很高。
3.Web版数据库
现在,几乎每种数据库应用都需要某种Web交互性。许多人以为,如果你打算将数据库放到互联网上,就需要使用服务器数据库。其实未必如此。价格便宜得多的桌面数据库也许能满足你的要求。
Cloud DBaaS
云服务(包括数据库即服务,简称DBaaS)由第三方托管的一个或多个数据库组成。在这种环境下,有许多架构模式和商业模式可供选择。这种选择具有的一些优点包括:自动备份、具有扩展性,另外可通过简单的Web界面获得巨大的计算资源和存储容量。此外,这种环境便于使用复制机制,为生产型数据库增强了可用性和可靠性,而且便于向外扩展来处理繁重流量,而不是仅限于单一数据库的容量。我们以后会详细介绍云数据库。
商用还是开源?
与大多数软件一样,数据库分为商用版和开源版。这方面主要的决定性因素是支持问题。虽然开源数据库有在线社区,可以齐心协力解决出现的问题;但对一些人来说,没有什么比签一份正式的支持合同以求安心更重要的了。
甲骨文等商用数据库具有的一些专门功能是开源数据库所没有的。仅举几个例子,一些高级功能包括触发器、视图、继承、序列、存储过程、游标和用户定义的数据类型。商用产品的稳定性也往往更胜一筹。
存储机制
数据库存储数据的方式并不是都一样。存储机制实际上有几种类型,包括ISAM/MyISAM、BDB(BerkeleyDB)和MERGE(又叫MRG_MyISAM),以及比较先进的InnoDB。选择一种存储机制时,确保你完全清楚自己打算实施的所有功能。我为写这篇文章搜集素材时,发现一些功能存在于某些存储机制,另一些存储机制就没有这些功能。尤其是,InnoDB和BDB是少数事务安全型的存储类型中的两个。想了解数据库存储引擎的更多信息,MySQL开发网站上有一份全面的总结(http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html)。
数据完整性
任何数据库引擎的关键功能之一是数据完整性。符合事务的原子性、一致性、独立性及持久性(ACID)是确保数据完整性的一个先决条件。ACID实际上意味着,当事务在数据库里面处理时,不是整个事务成功处理、信息写入到数据库,就是什么都不写入到数据库。有些数据库支持符合ACID的事务功能,PostgreSQL、MySQL、甲骨文和Sybase就是几个例子。
那些数据库还支持事务的局部回滚,万一出现死锁,就可以采取纠正错误。比如说,MySQL使用传统的行级锁。多版本并发性控制(MVCC)是另一种记录锁。MVCC与行级锁有点不一样,原因在于它根据数据快照来处理数据库上的事务,然后序列化。
支持的语言
SQL是基本的ANSI标准,可用于访问关系数据库中的数据。许多数据库支持额外的语言特性和提供专门功能的变种。比如说,T-SQL是微软SQL Server使用的专有形式的SQL。它包括了类型转换函数(cast和convert)和日期函数(date)等有用的函数,但这些函数不是ANSI标准的一部分。Transact-SQL/T-SQL是Sybase为其数据库服务器而开发的,后来微软购买了它的许可证。你可能还会遇到plSQL,这是甲骨文自己的SQL版本。还有其他一些版本,比如微软Access使用的Jet SQL。
值得一提的是,连SLQ这个ANSI标准也有不同版本,通常以发布的年份来命名,比如92或99。不同的数据库引擎在宣传时自称“大部分与ANSI-92兼容”,或者“与ANSI-99完全兼容”,把任何例外情况记入文档。一条经验法则是,ANSI版本越是最近发布的,这种语言的功能越强大。
还可以用其他语言来编写过程和触发器,比如PL/TCL、PL/Perl和PL/python。这些额外语言分为两种基本类型:安全的和不安全的。安全语言只允许该编程语言访问主机系统的资源,比如文件系统。
正如所你见,在购买数据库管理系统之前有好多方面要考虑;实际上要考虑的方面太多了,下一个部分会介绍需要考虑的更多因素。
原文链接:http://www.databasejournal.com/news/article.php/3930406/Database-Buyers-Guide-Database-Types-and-Features.htm
原文链接:http://database.51cto.com/art/201107/272942.htm