Firebird版本发行录(202x)
2017-04-08 21:54:51 阿炯

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

Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性,它是一个开源的,可以自由使用的数据库(即使是商业上的使用)。具有以下的特点:

支持原子性,并发性,隔离性等概念。
支持事务的多个版本功能。
支持存储过程。
支持事件:存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到。
生成子:生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个INT64的长度,因此,它可以用在一个事务中,也可以用在其它很多方面。
只读数据库:我们可以把数据库存放在CD中,形成一个只读数据库。如果我们的应用程序也在光盘上,再加上嵌入式的FB数据库服务器,便可以得到一个无与伦比的 CDLIVE(即只用光盘就可以运行起来)应用。
全事务控制:一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。
触发器:每一个表可以有多个并发的行级触发器,可以在插入前,插入后,更新前,更新后,删除前,删除后进行触发。我们可以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。
字符集:Firebird实现了很多国际标准的字符集,包括Unicode。
扩展函数:可以使用C语言,C++,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能.
SQL标准兼容:Firebird 实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限于"FULL/LEFT/RIGHT [OUTER] JOIN , UNION, DISTINCT , 子查询 (IN, EXISTS),内部函数 (AVG, SUM, MIN, MAX, COALESCE, CASE, ..), 主键,外键,唯一索引以及所有通用的数据类型。
在线备份:不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天) 的操作。
Firebird还实现了域,字段级别的约束,视图,异常,规则和权限管理
协议:Firebird协议使用IPL(interbase public license)和IDPL(Initial Developer's Public License),这种协议类似于Mozilla协议。你可以完全的自由使用并且可以自由的布署在你的客户应用上。
包含三个版本:(a)标准服务器:每一个客户连接将引发一个服务器进程(支持多处理器);(b)超级服务器:一相服务器进程模块管理所有的客户端连接,当前不支持多处理器;(c)嵌入服务器:整个服务器引擎就是一个动态库,只支持本地通过IO进行调用;
NET C# 和 Java 的支持:官方提供了.NET Data Provider 和 JDBC Driver 。
 
发展历程

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时代吧!
 
拥抱开源

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会越飞越高。

firebird.conf详解

1、RootDirectory  "写上Firebird服务器的安装路径" 如果不对FbServer服务是企动会出错的。
2、DatabaseAcces 指的是访问Firebird数据库的路径,可以用相对路径,也可以用绝对路径。如果是访问整个服务器的磁盘空间写:DatabaseAcces=Full
3、ExternalFileAccess 外部表文件存放的路径。缺省值是non,也就是不允许你建外部表文件。如可以把外部表文件保存在C:\ExternalTables, 可以这样设定:ExternalFileAccess=C:\ExternalTables。
4、UdfAccess 外部涵数的位置,如不指定,默认是:Restrict UDF,也就是数据服务器安装目录下的UDF目录。如我们也把外部函数放到c:\udf ,可以这样写 UdfAccess =c:\udf
5、TempDirectories 临时目录的路径,可以指定其大小 如TempDirectories= user\data 50000000就表示在firebird的根目录的\user\data目录限定一个50MB大小目录作临时目录用。默认的是以FIREBIRD_TMP,TMP等系统变量指定的值。
6、DefaultDbCachePages 指定数据络存的页数,如不指定SuperServer 模式默认是2048页。classic 模式默认是75页。相当于 gfix -buffer XXX指信令。一般设个10000页较好。对服务器性能提高很重要。
7、SortMemBlockSize 查询是索引排序的大小,以Byte为单位 默认为1M。如果表的记录数可以把他加大些。
8、SortMemUpperLimit 索引排序内存大小限制,如设定SortMemUpperLimit=8388608(8MB)那么就不能起过个大小。对superserver指全部,对classic是针对每client。(建议以8M为好)如不高定这个值,对服务器性能有影响。
9、OldParameterOrdering 默认为0,如果是以1。5新开发应用程序只能写0。
10、CompleteBooleanuation 对于条件表达式(and 与or 运算)是短路判断还是全部判定。系统默认是短路(0),这样可以加快过程与触发器的运行速度。
11、DeadlockTimeout 单位为秒。当两个客户端同时修改一个对象发生冲空时,而让其等待不报告错误的最大时间。默认是10秒。太低很容易使很多修改不成功。太高又占资源。
12、MaxUnflushedWrites 在win服务器平台,对于关闭强制写选项时,这个很有少。为什么很多人用异步写方式出现数据损坏的Bug,就是没有设定这个值。可以设100页,当有100页数据时系统就会提交到磁盘。
13、MaxUnflushedWriteTime 在win服务器平台,对于关闭强制写选项时,这个很有少。为什么很多人用异步写方式出现数据损坏的Bug,就是没有设定这个值,以秒为单位可设5少。当与12有冲空时,以13为准进行处理。
14、BugcheckAbort
15、ConnectionTimeout 客户端连接超时设定
16、DummyPacketInterval 单位是秒。客户端如不动,需要保持连接的时间。TCP/IP连接不能用。
17、RemoteServiceName 指定服务名 如RemoteServiceName = gds_db RemoteServicePort = 3050 相当天在services文件中写了一行 gds 3050
18、RemoteAuxPort 服务器提供的端口,如是0,随机选。如为了不与IB冲空,FB可以设在成5078
19、TcpRemoteBufferSize 对于远程连接可用。用tcp/ip连接后,s/c的缓存包数。
20、RemoteBindAddress 固定了IP
21、LockMemSize = 262144 锁处理大小 win缺省256K Linux 16K。以byte为单位。可以加大
22、LockSemCount 对于classic模式而言有效,指的是进程间通信的信号数。
23、GuardianOption 对于win平台有效,指的当fbserver 进程意外终止下,fbguard进程重启fbserver的次数,如Guardianoption=0,fbguard仅启动fbserver一次。如果为1,则可以多次启动意外终止的fbserver,如不指定,默认值为1。
24、ProcessPriorityLevel 设置fbserver进程的优先级。值为0表示正常的优先级。设定此值要小心调试。
25、PriorityBoost 进程优先级由低向高的步长:默认是5
26、PrioritySwitchDelay 线程调度交换时间,默认是100Ms。
27、DeadThreadsCollection
28、CreateInternalWindow 如设为0,则本地连接会禁止,你去连数据库出现的提示是:"Unsuccessful Exception caused by unavailable resource 。unavailable database"所以当你的本地连接不可用时,你要查查这参数数是否设定为0了。 这是win平台上特有的。
29、IpcMapSize 针对本地连接来说,它使用内存映射文件来完成应用与服务器间的通讯,如果服务器数据行与列多,有大的Blob建议增加此内存映射文件的大小。默认是4096(4k)。
30、IpcName 内存映射文件的名称。Firebird1。5 默认是"FirebirdIPI", 与FB1。0/IB不兼容, FB1。0/IB是"InterBaseIPI"
31、RemotePipeName 用NetBEUI协议连时指定管道的名称。类似TCP/IP协议的端口号。默认是"interbas",与FB1。0/IB兼容。
32、CpuAffinityMask 对于对cpu的操作系统。因为fb1。5到目前不支持smtp,进程在多cpu之间浮动会使程序性能下降,建议使用固定的单cpu来固定fbserver服务。例:用一个服务器,cpuAffinityMask=1,用第二个则为2 如用二个cpu则值为3,假设有每电脑有四个cpu,要用第二与第四个cpu,则值为cpuAffinityMask=10
33、LockSignal unix/liux 进程间通信(IPC)通信的信号量
34、RemoteFileOpenAbility 针对liunx/unix 的NFS文件系统,如果数据库的文件以NFS格式共享时,远程能否打开数据文件的指示,1表示能打开。0不能。为了安全起见最好设为0
35、EventMemSize 事件管理线程使用的内存大小。默认是65536(64K)
36、lockAcquireSpins 不明白,请高人指点
37、LockHashSlots 不明白,请高人指点


Firebird 3.0 新功能

完成了firebird执行程序的统一

完成超级服务器模式(Superserver)对真SMP的支持完成,Firebird的核心现在是一个统一的库,支持一个单一ODS,可以以一个嵌入引擎方式加载,也可以”网络监听器“方式运行。服务器模式的选择,取决于一个新的设置参数:ServerMode,定义锁定及缓存模式。这可以在全局水平(在 firebird.conf 文件)或者 ”单一数据库(per database)“(在 databases.conf文件)中定义。

默认情况下,ServerMode = Super (alias ThreadedDedicated), 即超级服务器模式。

注意:
以前的 aliases.conf  文件被 databases.conf 文件取代,现在包含的不只是数据库别名,还有(可选)设置参数,使之能设置数据库和/或单独改变本地数据库安全设置。

超级服务器模式支持 True SMP
超级服务器模式下,引擎现在可使用多CPU和多内核。

新特性,面向对象的C++ API。

面向对象的C++ API,使外部插件可以在Firebird引擎内部安全运行。包含但不限于:
• 数据加密
• 用户审计,包括密钥修改
• 为存储过程、触发器和函数提供插件支持,这些插件可以用 Java, C++, Object-Pascal来写。

“Per-Database” 配置
通过对 databases.conf 文件进行修改,达到在数据库层面进行配置(以前是 aliases.conf文件)。

在多个方面增大了以前限制的最大值
Transaction 编号, attachment 编号, statement 编号的最大值增加了。为64位服务器增加了页面缓存。最大数据库体积增大。

多安全数据库
Firebird 现在支持在服务器端通过多个安全数据库进行用户存取控制。使用 databases.conf  中配置的参数安全数据库,使用一个指定数据库,而不是默认的 security3.fdb, 可以对每个数据库进行设置。可以在用户数据库中对用户结构进行定义。

注意
监控表 MON$DATABASE 中增加了 MON$SEC_DATABASE 字段,用来确定使用了何种类型的安全数据库——Default, Self 还是Other。

几个新的sql命令,用来管理用户和进行数据存取

用户审计信息中可以使用国际化字符

支持新的数据类型

A true BOOLEAN type (True/False/Unknown), complete with support for logical predicates, e.g.,

UPDATE ATABLE SET MYBOOL = (COLUMN1 IS DISTINCT FROM COLUMN2)
IDENTITY type, spawning unique identifiers for the defined column from an internal generator.

支持SQL包

DDL 触发器

数据定义语言中使用window函数

统计函数

可滚动游标

兼容SQL2008 中OFFSET 和 FETCH 规范

支持IPv6

在线校验

使用gbak进行运行时统计

参考来源:
Firebird 3.0 新功能
FireBird编程从入门到精通
System Properties Comparison Firebird vs. SQLite
sqlite - Speed Comparison


最新版本:4.0
Firebird 4.0于2022年8月中旬正式发布,主要变化如下:
新增内置函数 BLOB_APPEND
Trace: 为 DDL 语句提供性能统计
使用 firebird.pas 可以避免 Pascal 程序中的 fbclient 依赖
在恢复期间忽略丢失的 UDR 库
将 zlib 升级到 1.2.12
当最后一个 key 字符是 collated contractions 的一部分时,提升字符串的索引查找速度
优化CURRENT_TIME性能
在强制附件 (forced attachment) 关闭期间,不执行 ON DISCONNECT触发器
提供支持 Apple M1 架构的 Firebird 移植
优化不敏感排序的 STARTING WITH的性能
Trace: 提供查看 STATEMENT RESTART事件的能力

详情查看版本发行说明