C++ 系统 & C# 应用 & F# 金融 & Erlang 通讯 & JavaScript 全栈 & PHP Web

Firebird

来自开放百科 - 灰狐
跳转到: 导航, 搜索
Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 Firebird Thanks, Wikipedia.
Firebird-logo 90.gif

Firebird 20.gif http://www.firebirdsql.org/index.php?op=files&id=engine_200

目录

简介

Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品, 用C和C++开发。由于与interbase的血缘关系,大部分interbase的开发工具可以直接应用 到Firebird开发中。Firebird使用Mozilla Public License v.1.1许可证发行。

特性

  • 有免费版本/简单易用/运作稳定/维护成本低/可以简单快速的安装
  • 跨平台、多种网络协议。

OS: Winows / Unix / Solaris / Linux / BSD, Protocol: TCP/IP、NetBEUI

  • 具备关系数据库都有的功能,包括 Database 、 Table 、 Row 、 Index 、 View 、 Sps 、 Trigger 、 Default 、 Roles 、 Constraint 约束...等等对象.
  • SQL语法与SQL92标准一致、优秀的第三方DBA管理工具IBExpert 、 EMS QuickDesk 、 IBAdmin等,类似SQL Server数据库管理员

浴火重生的Firebird

  “火鸟是传说中的不死鸟,它可以穿越时空,不死不灭,阿拉伯人叫它费利克斯,中国人则称它们为凤凰,火鸟不会死亡,它们会在火中重生……” ——手冢治虫

  Firebird(火鸟)是一个“开放源代码”的大型关系数据库管理系统,具有跨平台、高并发、高性能等特点,被很多应用系统采用。其独创的多代体系结构,与目前流行的其他关系数据库管理系统截然不同。 Firebird自1984年诞生以来,稳步向前发展,历经几次名称变更,如传说中的火鸟,每次都在烈火中重生、升华。

发展历程

  Firebird见证了关系数据库从无到有,从发展到壮大的历史进程。让我们回到过去吧,亲身感受一下Firebird的次次烈火重生!

  上世纪70年代,在数据库领域,网状数据库和层次数据库占绝对统治地位。1970年,IBM的研究员E.F.Codd博士在刊物Communication of CAM上发表了“A Relational Model of Data for Large Shared Data Banks”论文,奠定了关系模型的理论基础。从此以后,很多厂商、学校加入关系数据库的研发热潮。

  1975年,一个编写关系数据库的机会驱使Jim Starkey来到了DEC公司,在此期间,Jim Starkey负责设计编写了Datatrieve(一个运行在平面文件和DBMS-32上的关系查询语言)。DEC公司的关系数据库设计小组一直忙于在开会、研究文献、争论问题,没有写一行代码。Jim Starkey等得不耐烦了,就自行研究数据影像技术。在一次早晨沐浴时,当他透过浴室多重窗户看到外面的树林时,灵感突现,意识到数据影像技术也是防止数据更改冲突以及取消失败事务的灵丹妙药。Jim Starkey发明了“多代体系结构”(Multi Generational Architecture)!随后,在兴趣的驱使下,他以多代结构为核心,开始设计自己的数据库管理系统——JED。当DEC的管理层发现公司内部存在两个关系数据库项目时,一场“战争”不可避免地爆发了。结果是,政治谋杀了JRD。

  “如果注定要痛苦,那么我宁愿忍受自己的错误(而不是别人的错误)造成的痛苦”。1984年8月,Jim Starkey离开了工作近10年的DEC公司。1984年9月4日,他独立创业,成立了Groton Database Systems(扩展名gds的由来)公司,开发通用型关系数据库管理系统,JRD获得了新生,JRD变成了Groton。后来,受到客户启发,公司改名为InterBase,其产品由Groton改名为InterBase。他的太太Ann Harrison也加入了公司,负责公司的日常运营,而Jim Starkey则专注于开发。1986年,InterBase推出2.0版;1988年推出3.0版;1989年,VAX/VMS平台上的版本推出;到 1991年,HP-UX、DG/UX、Ultrix、SunOS/Solaris、AIX、SCO平台上的版本也相继推出。

  InterBase在当时获得了巨大成功,数千美元一份,附带几个很少的命令行工具。没有利用外资,InterBase自食其力,独立发展了5年。同一年代,ORACLE于1979年夏天发布了第一个版本的商用SOL关系数据库系统,用于DEC公司的PDP-11计算机,不支持事务处理。1983年,IBM公司第一次推出关系数据库产品——DB2 for MVSV1。1984年Sybase公司成立,获得了数千美元的风险投资,于1987年5月推出第一个关系数据库产品Sybase SQLServer 1.0,提出了Client/Server数据库体系结构思想。微软公司与Sybase公司签订了合作协议,于1989年发布了SQL Server 1.0版。从此以后,随着技术的成熟和完善,关系数据库日益流行和普及。

  当时,InterBase能够在ORACLE、DB2、Sybase SQLServer、Informix、MS SQL Server等的夹缝中自力更生,顽强生存了5年,真是个奇迹。

  1991年,Ashton-Tate公司购买了全部的 InterBase。随后,InterBase便扩展到了18个操作系统平台上运行。公司管理层不仅好大喜功,不切实际地要求InterBase超过同时代的dBase和Sybase,而且还三心二意,同时投资支持Sybase公司。随后,Jim Starkey独自离开了约65人的InterBase开发团队,这一去便是10多年。

  1992年Borland收购了Ashton-Tate公司,InterBase成为Borland产品中的重要一员。伴随着Borland公司的开发工具,InterBase在全球遍地开花。1994年,Borland公司发布了Interbase 4.0,直到1997年12月1日才发布Interbase 5.0。让全世界人们吃惊的是,2000年7月25日Borland竟宣布Interbase 6.0公开源代码,在全世界关系数据库领域中掀起了一股开源热潮。

  条件已经成熟,准备迎接Firdbird时代吧!

拥抱开源

  摆脱了禁锢的Firebird,海阔天空,自由翱翔吧!

  火山岩熔积聚太久,即将喷发。InterBase的命运应该由用户决定。由于开源的Interbase 6.0不允许外部开发者参与,2000年7月31日,Mark O'Donohue和一群InterBase狂热爱好者遵循IPL(InterBase Public License)v.1.0协议,在Source Forge网站上建立了FirebirdSQL Project项目。自由开放的Firebird诞生了。刚开始处境艰难,他们手中只有“只读”的Interbase 6.0源文件,Borland未公布“makefile”等其它技术细节,不能直接编译运行。另外,缺乏资金支持,毕竟程序员也要吃饭。

  2000年7月28日,InterBase元老级人物Ann Harrison从Borland公司辞职。8月23日,她和Paul Beach带领几个InterBase开发人员成立了IBPhoenix组织,对Firebird用户提供咨询、支持服务,赞助Firebird开发。随后,加拿大公司BroadView也加入了赞助商的行列。为了更好地开展工作,2002年12月12日FirebirdSQL基金会成立,一个非赢利组织,目的是提供一个非商业性基础设施,用来收取、支付基金,推进和支持FirebirdSQL项目和子项目的开发。加入该组织需要每年交付会费, IBPhoenix和BroadView均是金牌会员。FirebirdSQL基金会的委员会决定基金的使用,他们把资金给予那些在关键领域、主线开发的 Firebird开发人员。

  万事俱备,全世界那些天才的开发人员开始发力,Firebird该为世人表演那精美绝伦的舞蹈了!2002年3月12日,Firebird 1.0发布。V1.0开发完成后,工作重心转到“将代码从C移植到C++”上面,Firebird 1.5项目成立。经过了三个版本,到2004年12月25日,正式发布了V1.52。

  2001年春天,一群俄罗斯人自立门户,在Firebird基础上,发布了一个商业关系数据库——Yaffil,专注于Windows平台,增强了系统性能,只支持俄语,服务本民族用户。令人高兴的是,2003年11月, Yaffil主动回到了Firebird怀抱,Yaffil新的功能将会融入到Firebird 2.0中。2003年冬天发生了Firebird历史上最重要的一件事:阔别10多年的InterBase之父Jim Starkey又回来了。20年来,他所创建的核心构架一直没有变动。他要带领旧部大干一场,为未来的20年再重新搭建一个新的基础构架!他们进行的项目被称为“Vulcan”。

  Firebird 2.0项目已于2005年2月份开发完成,2005年5月发布。下面列举一些Firdbird 2.0新增加的功能:

  1、对SQL标准支持增强:支持SQL200X标准定义的“派生表”(derived tables)、为了和SQL-99标准一致,引进了“SEQUENCE”,用来代替“GENERATOR”;

  2、经典结构模式(Classic architecture)支持全部API;

  3、支持64位操作系统平台;

  4、内置函数增加;

  5、存储过程语言(PSQL)增强:支持“显式游标”、存储过程支持默认参数、支持“LEAVE标号”语法、将用户自定义函数(UDF)作为存储过程调用等;

  6、索引得到增强:252字节限制取消、支持“表达式索引”等;

  7、改进的优化器;

  8、安全增强:安全数据库结构改变、口令加密更安全、远程不能访问安全数据库、阻止“暴力破解”行为;

  9、在线增量备份。

  Vulcan是和Firebird 2.0并行开发的项目,已于2004年底开发完成。Firebird 2.0正式发布后,Vulcan和Firebird 2.0合并,成为Firebird 3.0。目前最新的发布版本是Firebird 2.1。下面列举一些Vulcan新增加的功能特性:

  1、支持SMP:在一台机器上,Vulcan在4处理器上的基准测试成绩是单处理器的3.5倍。

  2、统一数据库存取体系结构:根据目前流行软硬件技术,核心体系进行了重新梳理更新;原来的“超级服务器模式”、“经典模式”、“嵌入模式”得到统一,用户可根据配置文件指定使用何种模式。

  3、配置文件显著更新:支持级联配置文件。

  4、安全管理器可自定义配置:不同单位需要不同级别的用户权限管理,可由用户加载安全管理器。

  5、数据库引擎集成SQL:DSQL集成到数据库引擎内部,更加高效。

  Firebird 3.0那些新增加的诱人的特性,为Firebird挺进高端市场又增加了一块重要砝码。随着Firebird的成功表现,一些商业数据库也纷纷拥抱开源,多米诺骨牌效应产生了。许多IT公司对开放源代码的立场已经从抵触、怀疑、观望转变为参与直至推动。2004年8月10日,CA公司公布了数据库 Ingres r3的源代码。接着IBM公司向Apache捐献了关系数据库Cloudscape,也公开了Cloudscape源代码。另外,据说DB2也要走向开源。

功能特性

  Firebird具备一个完整关系型数据库管理系统(RDBMS)的全部优点,下面列举了一些特性:

  1、支持SQL标准。Firebird完全符合SQL-92标准要求,并与许多ANSI SQL-99、SQL-2003标准项目兼容。通过机连操作、更新视图、外连结,它支持声明引用完整性。Firebird服务器提供了大量的程序库,支持嵌入式SQL和DSQL客户端应用程序开发。在所有的平台上,客户端应用程序能够写成Firebird API形式,通过它向数据库服务器发送操作请求。Firebird还支持扩展SQL特性,部分已经达到了SQL99、SQL2003的标准,包括存储过程、触发器、SQL角色、BLOB段、序列、派生表等。

  2、多代体系结构(MGA)。Firebird采用了多代体系结构(Multi-Generational Architecture:MGA),这是其区别于其它任何大型关系数据库的显著特点,也是使性能大幅提升的关键所在。在MGA体系中,独创了版本事务模式(Versioning Model),与其它数据库系统传统的加锁方式比较而言,应该说这是目前最先进的解决多用户并发访问的方法之一。在多代结构中,会为记录保留多个记录版本,它的卓越之处在于“长的读事务不会堵塞写事务”,因而特别适合涉及到大量客户的大型在线事务处理(OLTP)和需要海量数据的数据决策支持(DSS)的混合应用系统。

  3、卓越的多数据库管理功能以及自动两阶段提交和分布式两阶段提交恢复机制。Firebird是一个多数据库的RDBMS,一个数据库引擎可以同时运行并管理多个数据库,每个数据库都包含自己的数据库对象和事务日志。在跨越 2个以上的数据库事务操作中,Firebird提供了良好的两阶段提交和两阶段提交恢复机制,确保了每个数据库数据的一致性。

  4、最简单的安装配置。Firebird是目前世界上安装最快捷、最简单的大型关系数据库。点击几个“Next”便可在5分钟内完成全部安装。建立数据库配置完成后,Firebird自动调节成最优状态运行,无需专职数据库管理员,几乎是零维护。

  5、自动化管理、零维护。Firebird可以及时根据用户的使用情况、操作系统的运行状况,在底层自动调节自身的多项参数以保证其始终运行在最优状态。这种卓越特性使得即便没有专职数据库管理员,整个数据库系统也可以高枕无忧地运行使用,达到了零维护。

  6、齐全的数据库对象。Firebird支持几乎所有大型关系数据库都有的对象,包括数据库、表、列、索引、视图、存储过程、增强的触发器、缺省、规则、约束、用户自定义函数(UDF)等,具备丰富的字段数据类型,特别是支持18位大型精确数字类型,全面满足金融财会等关键业务需求;还支持用户自定义数据类型(域)、支持数组字段、大容量的无格式二进制数据(BLOB)字段,与其它某些数据库系统不同,Firebird的BLOB数据完全是在事务的控制下操作的,并且连同其它数据一起存放在同一个数据库中,确保了对大型数据操作的一致性和效率。

  7、卓越的跨平台特性、支持多种网络协议。Firebird可以在所有的Windows操作系统、各种Linux发行版本、各种Unix及Unix的后代等操作系统平台上安装运行,其优越性不仅仅在于这些平台的透明性,更重要的是这些平台间数据的无缝连接,你只要使用简单的备份和恢复操作,就可以把一种平台中的数据顺利移植到另一种平台中正常使用,一点都不需要其它复杂转换。Firebird支持多种网络协议,所有平台的Firebird均支持TCP/IP;Windows平台上的Firebird支持 NetBEUI/named pipes;服务器版的Firebird和所有Windows客户端均支持IPX/SPX。

  8、最方便的客户端安装。Firebird的嵌入式版本一张软盘容量,既可以作为本地单机版的服务器,也可以作为远程服务器的客户端,可以将这几个文件打包到应用程序安装盘中。应用程序安装后系统即可连接远程服务器运行,不用再单独安装Firebird的客户端。

  9、灵活性、高可靠性、安全性和可扩充性。Firebird具备完善的用户管理和权限管理,确保了数据库的安全,其强大的联机事务处理功能可以边进行数据库操作边进行数据库备份。Firebird的异步取消机制可以让用户方便地取消正在执行的操作,特别是当运行较长的或复杂的查询影响数据库性能时。 XML功能可以让用户直接从Firebird数据库中创建XML文档。Firebird的自动崩溃恢复能力使得在断电或其它故障导致系统崩溃时完全可以在没有专职数据库管理员的干预下自动、及时、快速地进行数据恢复,用户需要做的就是接通电源让数据库工作,其他一切都交给Firebird处理。此外,可以为数据库创建分布式镜像,进一步确保Firebird的可靠性。无论是单用户应用还是企业级应用、无论桌面版还是服务器版,Firebird均使用统一的底层代码,极大地方便了用户的扩展。

  10、最广泛的管理工具、开发工具的支持。其范围之广、数量之多,是其他数据库所不能比的。

  Firebird与其它所有关系数据库的最大区别是“多带体系结构(MGA)”,其“长的读事务不会堵塞写事务”的特性使得Firebird在相同的硬件条件下性能优于传统“加锁事务”机制的数据库。我们经常看到许多使用了商业数据库的大型应用系统,为了提高系统性能和并发度,往往采用两台数据库服务器,一台为主业务数据库,另一台为查询数据库,这种情况在Firebird身上是不会发生的。在企业级的中端市场,同其他商业数据库相比,Firebird具有极强的综合竞争力;在低端嵌入式市场,其地位是DB2、Oracle、Sybase所无法撼动的。唯有高端大型主机集群领域,Firebird现在还底气不足。

  Firebird的前身Interbase在全球拥有数百万商业用户,驰骋疆场15载,是一个成熟稳定的企业级产品,这一点是其它开源关系数据库(PostGreSql、MySQL、BerkelyDB等)所不能比的。

总结

  Firebird历经重重艰难险阻,现在终能昂首自由飞翔。在全世界开源自由爱好者的推动下, Firebird六年来飞速发展。作为一个成熟的企业级商业关系数据库的后代,Firebird可应用于各种领域,胜任关键性任务。其独创的“多代版本体系”使得系统短小精悍,高效健壮。各种完备的开发接口技术,适合各种开发环境。然而,目前Firebird在中国没有流行开来,这和开源软件没有进行商业广告宣传有很大的关系。我免费使用Firebird多年,未对其作出多大贡献,本文就算是一种补偿吧。愿国内同行积极评估、使用Firebird,提高产品的竞争力;有能力者加入Firebird开发团队,锦上添花。Firebird 3.0发布后,Jim Starkey会在Firebird中嵌入Java虚拟机来支持触发器、存储过程、用户自定义函数。可以预见,在Jim Starkey的领导下,未来的Firebird会越飞越高。

文/田永利

来源: http://blog.sina.com.cn/s/blog_4c83c6bf010009lu.html

链接

Comment-32x32.png

<discussion>characters_max=300</discussion>

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱