了解点开源数据库

软件和网站开发以及相关技术探讨
回复
头像
alex_3515
帖子: 94
注册时间: 2005-09-01 9:45
联系:

了解点开源数据库

#1

帖子 alex_3515 » 2005-11-01 11:27

开源数据库发飙

开源数据库的销售额在增长,并正在被越来越多的用户所采用。在嵌入式数据库领域,开源数据库优势明显。分析师称开放源码正在迅速被数据库技术所采用。开放源码“从2003年被怀疑到2006年将被发展成为全球的主流技术”。低成本甚至免费的开源数据库时代即将来临。

像很多公司一样,美国国家半导体公司一直在寻找一种削减系统成本的方法,并把Linux和其热衷的开源软件列入了公司IT发展策略的清单。当这家位于美国加利福尼亚的公司开始向Linux转移时,其中一个大的项目就是把目光对准了开源数据库,希望借助开源数据库,找到一种适合其系统架构的低成本数据管理产品。美国国家半导体公司的CIO Ulrich Seif 先生说:“去年我们就开始关注开源数据库MySQL,希望它能尽快支持我们选择的Linux服务器等硬件产品,我们希望能够将基于IBM硬件的数据库应用业务转移到基于Intel平台的硬件上。”

公司也考虑采用PostgreSQL,同时一些小的商业应用也运行在这一开放源码的数据库系统上。Seif说:“今年开始实施的项目密切注视开源数据库产品的发展路线图,并关心它如何在第二层的数据库环境成功地部署和应用。”

其实,美国国家半导体公司并不孤独。开源数据库系统并不是一个新事物,如Postgres已经有20年的发展历史了,而著名的MySQL今年4月刚刚度过了其10周年纪念活动。开源数据库系统也越来越具有更多的企业级产品特征。迅速增长的企业级用户看重它与庞大的、昂贵的、版权私有的商业数据库系统相比的低成本。开源数据库的销售额在增长,并正在被越来越多的用户所采用。开源数据库的时代即将来临。

开源数据库长大了

选择开放源码软件的因素有多种,而近来大量开发者的加入让这一市场变得越来越成熟。以前,人们总认为开放源代码数据库也有它的劣势,比如它没有稳定的技术支持,如果使用中出了问题将会是很麻烦的事。不过目前也出现了一些公司对这些开放源代码的数据库产品提供非免费的技术支持。看看,Novell、Dell 和HP公司等开始出售MySQLAB的数据库产品,并提供支持服务。

8月初,Apache Foundation公司发布了Apache Derby的第一个版本,这是IBM于去年贡献给开放源码社区的一个数据库原型产品。至于Postgres,最近有许多公司宣布可以提供对 Postgres的技术支持。这些公司中的代表如EnterpriseDB成立于今年5月23日,在今年的LinuxWorld上战胜了IBM、 MySQL和Oracle,赢得了“最佳数据库解决方案”。在8月初,它宣布了其基于开放源码的关系数据库管理系统软件EnterpriseDB 2005。

在今年2月,MySQL发布了其基于订阅的MySQL网络,以提供全面支持和公司应用部署。在其冗长的用户名单中包括了Sabre Holdings、大陆航空公司和克莱斯勒汽车公司等。Sleepycat软件公司9月初宣布General Dynamics公司的子公司General Dynamics C4 Systems已经部署了其用Java编写伯克利版的数据库,支持美国国防部过去使用的可视化和协同工具。

各种开放源代码数据库有许多种,主要来说有三种:一是由大学科研原型系统转变为当今的开放源代码数据库,如 PostgreSOL;二是由一个入或者几个人自发开发的数据库系统,如MySQL;三是一些商业数据库为了推广自己的产品,扩大市场份额,开放了自己的源代码,如interBase和SAPDB。

Forrester调研公司高级分析师Michael Goulde说,我们现在每天都要回答大量的对开放源码数据库的用户咨询,以便寻找到一种方式减少IT系统的成本。用户关注其IT系统中最常见的IT技术和产品,希望采用开放源码的技术和产品代替他们以前花费了大量资金购买的技术和产品,这其中就包括数据库。

的确, SQL和其他已经确立的数据库标准,为开放源码数据库项目发展自己的产品,以更简单的方式满足商业公司的IT架构需要提供了一个难得的发展机遇。开源数据库可能不能提供如Oracle或者IBM的数据库那么多的功能和性能,但是分析师指出,在很多情况下,用户实际拥有的系统很多功能和性能没有应用,但是用户通常却要为整个系统付费。

开源数据库如雨后春笋般涌现

今天,开放源代码软件的使用越来越广泛。像Linux操作系统一样,开放源代码数据库的出现也有其必然性。在当 Oracle、IBM、Microsoft、Sybase等几大数据库厂商在数据库领域处于垄断地位的时候,出现了以MySQL、PostgreSQL为代表的开放源代码的数据库系统,推动了开源软件事业的发展。

Forrester公司调查后认为,目前有2/3商业用户以不同形式使用开放源码数据库产品。用户认同了开放源代码数据库相比商业数据库的许多优势,其中包括使用免费,管理简单,系统小巧精干,功能可以与商业数据库相比,甚至更强大(如PostgreSQL)等。开放源代码数据库没有稳定技术支持的劣势,正逐渐被解决。

据不完全统计,目前世界上存在至少上百种开放源代码数据库系统。ACM/SIGMOD(美国计算机学会数据库专委会)列出了60种公众可以使用的开放源代码数据库系统。这其中包括比较著名的MySQL、PostgreSQL、SAPDB、InterBase、 mSQL(miniSQL)等数据库系统,同时还有许多用Java写的数据库系统和XML数据库,如HyperSonic、XQL、MekoiSQL、 sMYLE、eXist等。

MySQL是1979年Michael Monty 为瑞典一家公司TcX开发的数据库,它是一个快速的多线程和多用户的数据库系统。MySQL在开发初期就为自己定了一个目标,那就是“世界上最流行的开放源代码的数据库”。现在看来,MySQL堪称开源数据库的领军者,同时其数据库在功能上也不存在明显缺陷。9月初 MySQL 5.0已经分发。MySQL自称安装用户已经达到了600万,包括了1500 家网上签约客户和合作伙伴,以分发产品和提供服务。其中不乏大型商用用户,如 Sabre Holdings和PriceGrabber.com。

PostgreSQL对自己的定位是最先进的开放源代码的数据库。的确,20年来,在应用中用户也深深地体会到了这一点。Postgres项目开始于l984年,它是加州大学Berkeley分校的Michael Stonebraker领导的一个科研项目,当时Postgres使用的查询语言是自己定义的Postquel语言,1994年Andrew Yu和Joliy Chen为Postgres增加了一个SQL的解释器,这就是Postgre95。l996年开发者选择了一个新的名字PostgreSQL,以反映 Postgres版本和SQL的能力。

PostgreSQL是一对象关系数据库系统,它不仅支持关系数据库的各种功能,而且还支持类、继承等功能。 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这一数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。


SAPDB给自己的定位是面向企业的开放源代码数据库。SAPDB是德国软件巨头SAP公司开发的数据库系统,2000年年底SAP公司决定开放其数据库系统的源代码。SAPDB国内用户比较少,在欧洲使用的人可能多一些。SRPDB系统给我们的感觉是与 Oracle很像,兼容Oracle的SQL语法,并有像Oracle一样的数据库管理的GUl,管理数据库非常容易方便。

firebird是一个全功能的、高效的、轻量级、免维护的数据库。它很容易让您从单用户、单数据库升级到企业级的应用。一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。Firebird可以在最常见的硬件环境中工作,甚至非常差的硬件中,也能很好地工作。当然,硬件的要求依赖于你想做什么,例如,你有多少个并发用户等。Firebird在常见的平台上都可运行,如Linux和Windows(包括Windows终端服务器)。它支持的平台还包括MAC OS、Solaris及HP-UX。当前有三个服务器版本:标准服务器,每一个客户连接将引发一个服务器进程(支持多处理器);超级服务器,一组服务器进程模块管理所有的客户端连接,当前不支持多处理器;嵌入服务器,整个服务器引擎就是一个动态库,只支持本地通过I/O进行调用。但是,所有的服务器都使用一种数据库格式,因此,你可以很方便地在不同的引擎之间共享数据库文件的数据。

开源数据库嵌入式应用占头筹

自出现商业应用软件以来,数据库就成为软件应用程序的主要组成部分。与数据库管理系统非常关键一样,它们也变得非常庞大,并占用了相当多的系统资源,增加了管理的复杂性。随着软件应用程序逐渐模块化,一种新型数据库会比大型复杂的传统数据库管理系统更适应用户的需求。嵌入式数据库直接在应用程序进程中运行,提供了零配置(zero-configuration)运行模式,并且资源占用非常少。

嵌入式数据库有其独特的运行模式。这种数据库嵌入到了应用程序进程中,消除了与客户机/服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时,需要的内存较少。它们是使用精简代码编写的,对于嵌入式设备,其速度更快,效果更理想。嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。

嵌入式数据库还提供零配置运行模式,这样可以启用其中一个并运行一个快照。这意味着事务是原子的,它们要么完全执行,要么根本不执行。事务也是一致的,因为在不一致的状态中,该数据库从未被保留,事务还是独立的。所以,如果在同一时间在同一数据库上有两个执行操作的事务,那么这两个事务是互不干扰的,而且事务是持久性的。所以,该数据库能够在崩溃和断电时幸免于难,不会丢失数据或损坏。

基于嵌入式移动数据库的应用可划分为水平应用和垂直应用。所谓水平应用,是指应用方案能够用于多种不同行业,只需要极少的定制工作;而垂直应用则针对特定行业的应用,数据处理具有独特性。

开源的嵌入式数据库产品很多,Berkeley DB就是一个开放源代码的内嵌式数据库管理系统。应用它程序员只需要调用一些简单的API,就可以完成对数据的访问和管理。它是通过内嵌在程序中的 Berkeley DB函数库来完成对数据的保存、查询、修改和删除等操作。

Berkeley DB为许多编程语言提供了实用的API接口。所有同数据库相关的操作都由Berkeley DB函数库负责统一完成。这样无论是系统中的多个进程,或者是相同进程中的多个线程,都可以在同一时间调用访问数据库的函数。而底层的数据加锁、事务日志和存储管理等都在Berkeley DB函数库中实现。它们对应用程序来讲是完全透明的。

麻雀虽小五脏俱全。Berkeley DB函数库本身虽然只有300KB左右,但却能够用来管理多达256TB的数据,并且在许多方面的性能还能够同商业级的数据库系统相抗衡。就拿对数据的并发操作来说,Berkeley DB能够很轻松地应付几千个用户同时访问同一个数据库的情况。此外,如果想在资源受限的嵌入式系统上进行数据库管理,Berkeley DB可能是上佳的选择。

SQLite是D. Richard Hipp 用C语言编写的开源嵌入式数据库引擎。它是完全独立的,不具有外部依赖性。SQLite支持多数 SQL 92标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite还非常健壮。其创建者保守地估计, SQLite 可以处理每天负荷多达1万次点击率的Web站点,并且 SQLite有时候可以处理10倍于上述数字的负载。

SQLite的数据库权限只依赖于文件系统,没有用户账户的概念。SQLite 有数据库级锁定,没有网络服务器,并且可以实现多数SQL92标准(但不是全部)。用户需要了解哪些SQL92功能未实现。

SQLite 通过数据库级上的独占性和共享锁定来实现独立事务处理。这意味着当多个进程和线程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据。在某个进程或线程向数据库执行写入操作之前,必须获得独占锁定。在发出独占锁定后,其他的读或写操作将不会再发生。

HSQ是一个用Java编写的轻量级数据库。程序员可以用自己的软件直接连接数据库源代码。

移植到开源数据库时应注意的问题

Forrester分析师Noel Yuhanna 在2004年12月撰写的题目为“开放源码数据库时代来了”的报告中认为:“数据库变得越来越通用化和日常化,很少有企业需要高级的数据库功能。我们估计,由商业关系数据库系统产品提供的大多数高级功能很少有企业用户采用,它们有时可能需要,但是在许多项目或者应用中并不需要。”

以国家半导体公司为例,Seif最近将应用从Sybase数据库移植到 Oracle数据库,但是了解到并不是所有的应用都需要高端的Oracle数据库的所有功能。每一个用户都有一个小的合身的数据库,但是它们却拥有一个高端的数据库解决方案,需要专门的技术人员和厂商的支持。

许多用户认为,当考虑开放源码数据库时,一个问题逐渐浮出水面,那就是应用移植的方便性、性能的水平和支持来自哪儿。

PriceGrabber.com 公司技术总监Corey Ostman认为:“假如你正在将应用从商业的个人拥有的数据库转移到开源数据库上时,那么你必须仔细检查应用的类型。”这家位于美国加利福尼亚的公司从 1999年就开始使用MySQL。该公司也曾经考虑采用Oracle的产品,但是最后选择了性能和支持都更好的MySQL。一个简单的只读应用选择一个新型的数据库产品一般不会引起太大的争论。更复杂的是,读/写事物处理的数据库可能需要商用数据库,可能需要做更多的工作。

加利福尼亚州Garden Grove城的高级信息系统分析师Noel Proffitt说,数据库应用部署成功的关键是从小做起。Garden Grove自2002年开始就在使用PostgreSQL,同时大多数应用使用开放源码的数据库。下载PostgreSQL就可以开始用了,你不会收到任何让你付费的通知。没有许可证到期的顾虑。所以在你的应用中用它,应用会变得越来越成熟。

IBM、Oracle和Microsoft 并没有重视来自开放源码数据库的压力。Oracle公司总裁Charles Phillips 说,开放源码数据库对引入新用户发挥着重要的作用,这些用户我们以前不了解。40%的开源数据库用户以前没有使用过数据库,当他们需要数据库完成关键业务时,他们会选择商用数据库,包括Oracle的产品。

但是采用开放源码系统包括开放源码数据库的用户很明显正在快速增长。Forrester公司估计,开源数据库在 2004年的市场销售额已经达到了1.2亿美元,虽然只占超过100亿美元的DBMS市场的一小部分。今年,Forrester通过对95位已经使用或者在未来12个月计划使用Linux 或者开放源码系统的IT主管的调查后发现,其中超过一半的企业已经使用了开源数据库MySQL。

分析师认为,在大多数情况下,开源数据库并不支持大多数关键应用。正因为如此,除了专门应用领域外,开放源码数据库很难撼动占据企业核心应用的IBM、Microsoft和Oracle数据库产品的地位。Burton集团高级分析 Peter O'Kelly认为,“在商业DBMS市场中,这三家企业控制了超过85%的收入。

(计算机世界报 2005年10月10日 第38、39期 B2、B3)
*** 物量无穷寸无止 ***
回复