Firebird数据库自增字段设置方法

阿木 发布于 8 小时前 2 次阅读


你知道那种感觉吗?

即这般情形,于整个世界范围之内寻觅一款具备免费特性、好用特质且不会折腾人的数据库,最终却发觉它竟然在你眼皮子底下潜藏了二十多年之久。

我也是最近才挖到这个宝。说实话一开始不信,哪有这种好事?

但用了一段日子,我发现真香了。

它很小。真的小。

嵌入式版本仅有一个动态库,它与你的软件一同递送给客户,对方无需进行任何安装操作,只需双击便可运行起来。这般“全然无需操心”的畅快感受,对于撰写小工具的独行侠来讲,无疑堪称救赎。

可它真的只是玩具吗?

U.S. Navy在用。

没错,你所见到的,是美国海军。还有那个德意志新闻社,以及莫斯科的证券交易所,它们每日都要进行几百万笔的交易运算处理,这对于系统可靠度的要求是极高的 “五年时间里只允许出现一分钟故障” 的那种可靠率——也就是达到99.999% 的可靠性标准。

一个几百K的数据库,扛着几百万人的电话计费。

这反差,让人有点恍惚。

它有着被称作“多版本并发控制”的核心逻辑,这个词听起来令人觉得很唬人,然而翻译过来实际上是特别简单的,即为你进行你的修改,我开展我的查询,咱们两者谁都不要锁住谁,彼此不产生冲突。

所以,就算是在那种配备赛扬处理器、仅有256M内存堪称老古董的机器之上,它也依旧能够应付得过来,不至于被耗尽精力而无法运行。

怎么做到的?

这就得说它的“生成器”了。

即是序列,INT64长度,大得惊人,于一个事务里随意取,不会重复。你若想要自增字段,一条命令就能达成,无需费尽周折去配权限。

还有存储过程。

选用PSQL来进行编写,编写完成之后直接当作表来进行查询——从存储过程()选择 全部(),所返回的便是虚拟表。对于从事写报表工作的人而言,这简直就如同作弊的工具。你只需将参数进行传递,其便会把结果集直接呈现在你面前。

触发器也能扔事件。

那个用于客户服务的终端设备那儿,竖着耳朵去听着,一旦出现任何动静,就立刻做出反应。这情形类似数据库它自身长出了嘴巴,能够呼喊出“嘿,数据已经改动了”。

说到备份

在线备份。不用停服务。

一面跑着业务,一面将快照取走。对于那种7x24小时都不能停歇的系统来说,此功能究竟有着多么金贵,凡是经历过停机备份的人都清楚。

还有更绝的。

仅用于读取的数据库,将数据库文件直接刻录至光盘内,把应用程序以及数据引擎都一并放置进去,插入光盘即可运行。CD - Live的理念,在当下听来有些复古,然而在某些涉及机密、防止篡改的情境当中,这般物理层面的只读状态,相较于任何权限设定而言都更为强硬。

当然它也有脾气

在网络之上,有人声称,Firebird于二零零五年左右的时候,相较于PostgreSQL而言,还要更加火爆,特别是在像捷克那样的地方。

后来呢?

随后,RoR兴起了,PostGIS兴起了,JSON四处皆是。Firebird依旧在那里规规矩矩地处理它的事务,支撑它的ACID。

它不支持自动分片,想做分布式?自己搭房子。

它并非拥有像MongoDB那般,想要增添字段便能增添的洒脱自在,模式一旦确定下来,那便是确定下来了,不会再有变动。

但换个角度想——

倘若你的应用在这一辈子都计划运行于一台服务器之上,倘若你并不想聘请一个DBA团队每日去调整参数,倘若你仅仅只是期望让数据拥有一个可靠的存放之处,使数据不被丢失、不会混乱、不会缓慢。

那它可能就是你的菜。

三种服务器模式

标准版:来一个连接开一个进程,多CPU用满。

超级版:所有连接挤一个进程,省内存。

嵌入式:刚才说的,一个动态库搞定一切。

具有极度令人汗颜特征的是,这三种模式共同享用同一套数据库格式,你今日于笔记本的运行环境里进行嵌入式开发,明日将其放置在服务器的运行环境中以超级版运行,实现毫无阻隔的切换,就这样进行操作。

协议也很友好

IPL和IDPL,类似Mozilla那种。

它能够被你塞入商业软件当中,你无需将你的代码进行开源,唯有在对引擎本身做出改动的情况下,才需要把相关内容交呈出来。

法律上的安全感,有时候比技术上的爽感更重要。

写到这儿,忽地忆起那些年被Oracle掌控的惧怕,安装包有几个G,配置监听要折腾许久,稍有不慎忘掉打补丁就会被安全扫描报出高风险。

Firebird没有这些。

它仿若一位守旧的匠人,话语并不多,活计做得精细,对所处之地毫无挑剔之意,只要给些吃食进而能够维持生计便可以干上一生一世。

你不一定需要它。

但如果你需要,它一直在那儿。