博主的Borland InterBase 2007之路

 最近被MS SQL Server 2000的执行效率折磨了好一阵子,于是想找个执行效率高一点的DB system。Orcle,别说是价格和我那抠门的客户了,单看块头,自已就先怕怕了。MySQL---很好的一个东东,在Linux下的执行效率也很好,可在Windows平台上那就……,嘿,你不会弄个Linux吗又不用花钱。如果你真这么想那么你就会死得很难看,具有中国特色的系统后期维护绝对累死你,我现在这客户折腾个Windows都够呛,让他碰Linux.....他准说:“别给我玩高深了行不!?”我现在也总算明白Linux在我们伟大的祖国叫好不叫座的原因了。再说了,让我把MS SQL移植到MySQL上去,那家伙、那改动,可不只是一点点。

   找了很长时间,也试过很多Free产品,一直不太满意,大多还不如MS SQL。

   InterBase---用过一段时间,好象是6.5版本,说实话许多MS SQL中很容易实现的功能它没有,最不能容忍的是居然还不支持触发器,存储过程,视图。从此之后不再InterBase了。尽管我是一个坚定的Borlander,不,现在应该是叫CodeGear了。直到一次无意之间,看了一下Borland® InterBase® 2007的简介并试用了一下,于是决定让那位可恨可爱又抠门的客户支持一把CodeGear,也算了结一下我多年来对Borland的一种愧疚之情和感激之意吧。

   另外,再转发一段关于Borland® InterBase® 2007的功能简介,就算是为它做点宣传吧(不知会不会弄巧成拙而让CodeGear fans提着大马刀狂追……^_^)!

购买Borland® InterBase® 2007的五大理由
持久保护数据,维持高可用性

为进一步提高可用性,InterBase® 2007提供了故障保护的新功能,并增加了灾难恢复的手段,如用于短期恢复的日志和在硬件系统出现故障后用于长期恢复的日志存档。此外,InterBase® 2007还引入了数据库文件的Online Dump以及从存档中进行实时恢复。

可移动、国际化、跨平台的数据库允许进一步扩展,方便灵活

InterBase® 2007被证明可在不改动Windows®, Linux and Solaris™的情况下顺利运行。它可在多种平台上进行布署而无须重新编码。InterBase® 2007可在各个平台之间移动,也可在InterBase® 2007桌面版和服务器版之间移动,布署方便灵活。此外,InterBase® 2007支持国际字符集,如最新的Unicode,UTF-8和UCS2,便于国际布署。

适应不通的硬件平台,达到最高的数据库性能

InterBase 2007是现有最快的本地数据库之一。通过支持SMP(对称多处理器),InterBase 2007能够适应多种CPU,包括多核CPU。在多个方面还进行了性能提高和最优化,如批量更新、查询最优化以及通过日志实现的OLTP改进。InterBase 2007执行多代结构,能够提供独一无二的版本化,因此交易处理用户和决策支持用户能够同时享受数据的高可用性。在同一机器上同时支持多实例能够实现应用隔离和负载均衡。

嵌入—布署—零维护

InterBase 2007安装简单,能够自动进行灾难恢复,并提供丰富的配置API接口以便于嵌入应用。最适于那些需要较小内存和磁盘空间却又不能因此影响复杂功能实现强劲关键业务的应用,如ISVs,OEMs以及VARs。与其它企业数据库不同,InterBase 2007不需要昂贵的支持和维护,基本上可以做到零维护。

为开发人员而设计

使用Borland Developer Studio 2006,包括Delphi® 和Delphi for .NET, C++Builder®, C#Builder® ,Borland JBuilder® 2006 以及其它工具的开发人员可以通过ODBC, JDBC, ADO.NET,和IBX支持多个标准数据库连接选项。业务监控工具能为开发人员提供粒状数据库控件用以查看、开始、停止或回滚交易、处理和查询。InterBase采用 SQL92标准,能够满足开发人员对SQL数据库的任何要求:触发器,存储过程,视图以及一些先进的概念如域和事件预警。

不知道国内是否还有Interbase的使用者。Interbase是一种非常棒的数据库产品,速度奇快,在同样的硬件环境下速度比MSSQL快很多。在2007版中增加了很多新的功能,解决了很多Interbase以前的问题。
感觉最棒的两个功能是在线增量备份和批量更新。
在线增量备份,就像名字上写的那样,可以在基本不影响前台工作的前提下比较快速的将数据库进行备份。我作了一个实验,当第一次对一个1.5G的数据库进行online dump(增量备份也叫在线倾倒)的时候用了40分钟(不好意思,机器比较老旧),然后向数据库里面插入了一万条记录,然后再执行相同的命令,两分钟完成。在Dump的同时进行的数据库操作会比平时慢一些,但是还是可以接受的。当数据库发生问题的时候,可以直接将Dump的文件作为Interbase数据库进行加载,基本上可以做到无缝实时恢复。有了这个技术基本上可以保证我们的程序每30分钟到60分钟进行一次增量备份。
增量备份的实现方法对于Delphi程序员来说主要有两种:
1、命令行:
gbak -d dbtest.gdb dbtest.dmp -user sysdba -pass masterkey
第一次执行这个命令的时候会进行一次完整的备份。以后每次执行就进行增量备份。
如果键入
gbak -d dbtest.gdb dbtest.dmp -user sysdba -pass masterkey -ov
则进行一次强制的完整备份。
2、通过IBX组件实现同样的功能:
Interbase2007提供了新的IBX组件,其中IBDatabase支持增量备份。
首先在IBDatabase1中设置好数据库连接,然后执行下面的这个语句完整增量备份动作(建议在后台线程里面执行):
IBDatabase1.OnlineDump(['dbtest.dmp'], [], false, false);
这个函数一共有四个参数,第一个是dump文件数组,可以有多个dump文件;第二个是文件容量数组,如果有多个dump文件,你就必须告诉Interbase每个文件的容量是多大,当前面的文件满了,才开始写后面的文件,最后一个文件的容量一般不写;第三个参数是确定是进行增量备份还是全备份,如果是true的话就是全备份,所以我们使用false进行增量备份;第四个参数是是否overwrite整个dump文件,如果是true的话,就相当于在命令行的时候加了'-ov'这个参数。
批量更新准许我们把一批SQL语句(insert、update、delete)一起提交到数据库服务器中去,统一执行。我试过了,插入一千条记录所用时间基本上是逐条插入的三分之一。
应用方法:
使用IBScript组件,
IBScript1.Script.Clear;
IBScript1.Script.Add('Batch Start;');
IBScript1.Script.Add('Insert .......;');
...
...
...
IBScript1.script.Add('Batch Execute;');
IBScript1.ExecuteScript;
注意事项:开始的第一句是Batch Start ,最后一句是Batch Execute ,每句都以分号结尾, 里面的语句不要太多,我试过2000条没什么问题,但是我的字段比较少,所以建议大家控制在500~1000条之间。

先写这些,其它的新功能我正在研究,等登过一段时间在和大家分享。

 

小宇飞刀    

2006-11-29  

posted @ 2009-04-25 09:47  小宇飞刀  阅读(353)  评论(0编辑  收藏  举报