Firebird与MySQL: 钟为谁鸣[为提高Interbase版人气转贴]

Tirecoed 2007-08-28 08:28:02
老板要我开发一个LINUX平台上的数据库项目,要求一定要用开源免费数据库。我知道这个数据库必须能够上网操作,同时作为公司的核心骨干数据库,除了必须是稳定的存储数据库外还必须有很强的数据和数据库控管功能。

我想了想说,就用MYSQL吧。老板问为什么。 我把所知的好处倒背如流地数说一遍,并强调据MySQL执行副总裁Zack Urlocker讲,MySQ在中国的下载量已经超过了美国,中国市场现在是第一大下载量。去年截至九月份的数字是380万的下载量。。。MYSQL一定是最好的。

老板面有迟疑,说他太不明白我的意思。他想要知道的是什么数据库最适用我们公司,我却告诉他MySQ在中国的下载量世界第一,因此MYSQL一定是最好的。他说中国的自行车产量用量都是世界第一,但不能因此就说中国的自行车质量性能也一定是世界第一,更重要的是不能因此就说中国的自行车一定适用我们公司,看不出两者间的必然联系。

我说下载的人多,用的人也就多,前有古人,后有来者,道路平坦,不需摸索。MYSQL书籍比比皆是,各种案例垂手可得,路熟驾轻,好写好用。随大流,准没错。

老板一笑,说恐怕这才是真正原因之一。接着说, 听说中国有个叫鲁迅的说过,其实世上本是没有路的,走的人多了,也便渐渐地成了路。就是MYSQL最初也一定有拓路者,摸索者,开例者,著书者,现在才能有“前有古人,后有来者,道路平坦,不需摸索”。

我略吃一惊,没想到这个喝过点洋汤的假洋鬼子还知道中国有个叫鲁迅的(老实说,我都不太知道,鲁迅的书没读过几本)。接着老板又交给我一份表格,要我回答驳倒所例问题,并顺便问一下, 这380万的下载量中有多少是经过认真比较堪察之后决定用MYSQL的。

我接过一看,又是一惊,其中许多问题还是第一次看到。因此决定拿到这里。高手云集,冠盖繁星(各位中老总,少总不少吧),请直陈理由,无论如何要把假洋鬼子顶倒。

老板推荐的是 FIREBIRD FOR LINUX 。

所有比较和数据均以已在运行中的正式发行版为依据。
多处引用 “专访MySQL副总:MySQL的空间在哪里?” 日期:2007-05-29 作者:IT168 来自:linux.chinaunix.net 


据MySQL执行副总裁Zack Urlocker讲:
在安装成本上,MySQL是根据服务器来收费的,即一个服务器收取多少钱。MySQL旧版升级必须付费. 像政府、企业、电信用户,他们可以向万里开源公司来买商业许可证。
据悉,MySQL 3.23和4.0版本的用户如果要继续获得安全更新服务,则必须购买“MySQL网络支持”服务。该服务的启动时间为:3.23版从八月一日开始,4.0 版则从十月一日开始。 网络支持的收费为:美国服务期每年595美元;欧洲服务期每年495欧元。(也许对中国情况很了解,干脆不收费了?)。

近日,MySQL低调宣布它将不再把MySQL企业版服务器作为一个tar包发布,而这距离这个公司宣布将MySQL分为免费版和付费版的时间还不到一年。尽管它的企业版服务器代码依然在通用公共许可下推出,MySQL正在使不是它的客户的人们更加难于访问这个源代码。 MySQL公司负责社区关系的副总裁Kaj Arno写到,企业版的tar包“将从ftp.mysql.com中删除,而增加到enterprise.mysql.com中,将只对我们的付费申请者提供。”令许多用户感到担心的事情之一是,以后的社区版是否会一个功能低劣的版本 (新闻来源:IT168 发布日期:2007-08-15)

FIREBIRD 彻底免费. 源代码彻底公开。
http://sourceforge.net/projects/firebird ;
http://www.ibphoenix.com ;
http://www.firebirdsql.org


MySQL也可以提供一些企业级的技术服务,我们经常提到的它的三个服务就是它的性能、可靠性、易用性。
易用性。我们这里依赖几个数字,MySQL的安装包非常的小,大概是15兆到20兆。作为一个数据库,这么小的安装程序这是其他软件做不到的。另外, MySQL的安装非常简单,只需要15分钟。有的客户不相信,我们的工程师就现场教给他,15分钟就可以安装完,这是你不可想象的。

FIREBIRD的安装包只有 6M, 安装简单,只需要 3-5 分钟。(一个RPM命令)


在安装之后, MySQL必须决定应用于何种类型
第一种是开发服务器,将只用尽量少的内存,
第二种是普通WEB服务器,将使用中等数量内存,
最后一种是这台服务器上面只跑mysql数据库,将占用全部的内存.
象我们公司这样, 这个数据库必须能够上网操作,必须合用服务器(这台服务器上面除mysql数据库外, 还有其他程式, mysql不能单独占用服务器),怎么办?

FIREBIRD 安装之后只有一种默认类型, 占用 32-64 MB 内存。 完全不需单独占用服务器。

然后MySQL必须决定选择数据库用途,
第一种是多功能用途,将把数据库优化成很好的innodb存储类型和高效率的myisam存储类型,(最多选用).在MySQL的用户中,比如说在新浪或者雅虎,MySQL是作为存储性的数据库,而不是作为事务处理和管理性的数据库, MySQL都是应用在非管理性业务中。
第二种是只用于事务处理类型,最好的优化innodb,但同时也支持myisam。
最后一种是非事务处理类型,适合于简单的应用,只有不支持事务的myisam类型是被支持的。
象我们公司这样, 这个数据库必须能够上网操作,同时作为公司的核心骨干数据库,除了必须是稳定的存储数据库外还必须有很强的数据和数据库控管功能。怎么办? 选哪种好?
...全文
502 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangpuqing 2008-05-18
  • 打赏
  • 举报
回复
firebird是INTERBASE的开源版,而INTERBASE是CODEGEAR公司的产品(DELPHI也是该公司的)
我还是相信老比的一句话,商业的比开源的要好.所以我一直都用的是INTERBASE,至于MYSQL早就听说有些机制问题直到现在的6.0才好些,我也是最近才开始研究的,而微软的SQL2005中的一些功能如影子系统等在INTERBASE7.0的时候就出现了,时间早1年左右.
听说新版的INTERBASE将能实现一个DLL就能使数据库服务运作起来,不知道是不是真的.
zhuchengchuan 2008-05-07
  • 打赏
  • 举报
回复
以前用过Interbase,很不错.就是相关资料太少.
zhujinqiang 2008-03-18
  • 打赏
  • 举报
回复
hao,支持FireBird。
使用看看。

下载:
http://www.firebirdsql.org/index.php?op=files&id=engine
liuyann 2008-03-14
  • 打赏
  • 举报
回复

mySQL
== 思想重于技巧 ==
xjhwc 2008-03-14
  • 打赏
  • 举报
回复
发个广告:firebird数据库论坛(www.fbsql.cn)欢迎大家,呵呵
速度慢了点,准备换个空间,希望能更好的服务大家。
kmzs 2008-03-12
  • 打赏
  • 举报
回复
嗯,支持FireBird。
csjinjian 2007-09-03
  • 打赏
  • 举报
回复
真强。据说SAS公司用的也是firebird
Tirecoed 2007-08-28
  • 打赏
  • 举报
回复

FIREBIRD高效率的存储功能是其默认的基本功能之一, 而数据和数据库控管功能则是其强项之一。

因为MySQL的存储引擎是可以更换的这个优势,所以MySQL有很多的存储引擎,当然各种存储引擎有各自的特点,客户因为用了MySQL有这种灵活地选择存储引擎的优势,所以可以选择不同的存储引擎来适合自己的应用。

优势呼, 劣势呼!麻烦大了。不错,MYSQL是有4种引擎,但每种引擎都有各自不同(不通)的数据库表结构,不同的磁盘文件结构,不同的数据和数据库控管要求。严格地讲,按RDBMS标准MYSQL不是一个,而是4个数据库。比如DBD(Berkeley)数据库引擎会在表头内写下该表的完整路径,因此不能把含有该表的数据库挪到另外目录中去操作。这样在硬件升级或系统故障而必须把含有该表的数据库挪到另外目录中去时,只好先甩出数据,在新地点新建数据库,再塞回数据。稍有闪失,数据出错。如果是一大型数据库,不堪设想。实际上是, 多种引擎, 一个工作,一旦选定,极难转换。

MYSQL最为得意的是高效快捷的SELECT回选功能,这也是MYSQL优先标榜的高端性能之一。这一功能是在MYISAM引擎上提供的,其他3个都不行。同时MYISAM也是唯一一个提供表内全文索引的引擎。但这是在实验室内最理想条件下达到的。MYISAM引擎在进行SELECT时要给INSERT,UPDATE,DELETE优先权。同时必须全表加锁。而在进行INSERT,UPDATE,DELETE时,任何其他用户不能对该表内任何一行进行读写。就是说在这一刻只能有一个用户对该表进行操作,从而得到高效快捷的SELECT回选功能。试问,对一个多用户上网操作的数据库来说,这不是实验室内最理想条件又是什么。在现实中可要了命了。 这可能也是为什么大户的MySQL都是作为存储性的数据库,而不是作为事务处理和管理性的数据库,MySQL都是应用在非管理性业务中。

今天的数据库大都要求又读又写。(至少我们公司要求这样)。如果MYSQL工作在一多用户的频繁,交叉,众多的INSERT,UPDATE,DELETE数据库环境下,发出SELECT的用户可能会感觉到“泥牛入海无消息”。因为MYISAM引擎在进行SELECT前要给何改变表的SQL指令,特别是UPDATE指令,以绝对优先权。如果一个UPDATE指令要刷新很多行或半个表,那发出SELECT的用户就在那慢慢熬吧。

DBD(Berkeley)数据库引擎好了点,是全叶加锁。UPDATE一行只锁一叶。但却没有了MYSQL最为得意的高效快捷的SELECT回选功能。而且如上所述,不能把含有该表的数据库挪到另外目录中去操作。

MYSQL数据库引擎中功能最好的就是以前一直使用的,现被Oracle收购了的InnoDB。但同样没有了MYSQL最为得意的高效快捷的SELECT回选功能。

FIREBIRD数据库只有两个引擎, 一个是FIREBIRD CLASSIC, 一个是FIREBIRDSS (FIREBIRD SUPPERSERVER)。两种引擎所发出的指令,进行的操作,所得结果,创建的数据库,表等完全一模一样,数据库可(在LINUX权限内)任意移动,操作。两引擎创建的数据库,表等可互换操作。不同平台上产生的数据库可互换操作。

FIREBIRD两个引擎不同的是:FIREBIRD CLASSIC对每一联结开通一个进程(Process), 而FIREBIRDSS则开通一个线程(thread)。 由于FIREBIRD CLASSIC支持多核主机(multiple CPU's)并可自动为每一个联结开通一个进程, 因此特别适合网上不须互动输入,多个网点连续不断的无人值守自动信息采集和数据输入。另外,FIREBIRD CLASSIC还适用于要求高效但系统资源有限的地方。如嵌入系统。事实上其早就被广泛地应用在嵌入系统中,特别是可移动嵌入系统中。(听说已形成了几个常规系列,因此有意保持低调 ?)除上述原因,用途外,应全部使用FIREBIRDSS。(FIREBIRDSS的多核支持工作正在进行中)。

FIREBIRD采用多代体版本模式结构(Multi-Generational-Architecture-Versioning-Model), 这是目前最先进的多用户并发解决方案中的首选方案。其鼻祖正是Jim Starkey. 就连软件之林的呼啸者在抵制数年后,最终也羞羞嗒嗒地说了一句,嘿,俺也用上了MGA呢。由于FIREBIRD采用多代体版本模式结构,上述MYSQL的各种问题在FIREBIRD中都不会发生,也不明白为什么会发生, 更不明白为什么还要用。FIREBIRD一个引擎可同时运行,控管多个数据库,跨越多个数据库进行事物操作,其特别适用于需要海量数据的决策系统。(这是MYSQL望尘莫及的)例如有些大户被迫采用两台MYSQL数据库主机,一台MYSQL进行数据和数据库控管, 另一台MYSQL只管查询。(还记得上述SELECT问题吧)。这在FIREBIRD中都不会发生,也不允许会发生。(我们公司不允许如此配置,单是两台数据库主机的数据同步,维护就麻烦大了,更别说灾难恢复)。

现在看看MYSQL数据库引擎中功能最好的InnoDB引擎。首先看看最基本的。

InnoDB不支持DOMAIN数据类型。整个MYSQL中也没有DOAMIN这一说。什么是DOMAIN(域)呢?比如说一个表中有3个栏目(字段)是相同的数据类型,在MYSQL中就要重复定义3次。如果一个数据库中有300个栏目(字段)是相同的数据类型,在MYSQL中就要重复定义300次。如果要更改的话,就要一个一个地再重新重复定义300次。忘记几个栏目(字段)是常有的。

在FIREBIRD中只要定义1次。这就是DOMAIN(域)。然后就可以在整个数据库中无数次使用。遇到相同数据类型的栏目(字段),只要把这DOAMIN的名字填上就可以。如果要更改的话只要改一个DOAMIN的定义就可以了,300个栏目(字段)就全改过来。你看哪个更容易维护, 更不容易出错。

InnoDB不支持ROLE(角色)。这样授权时要一个一个用户(user)授权。修改时要一个一个用户(user)改。

FIREBIRD支持ROLE。可以把所有权限相同的用户名集中在一个ROLE名下,一次授权,全体获益。修改时,收权时也一样。一个用户可还以同时归集在几个ROLE名下,享有不同的权限。(如在数个表中)。你看哪个更容易维护, 更不容易出错。

MYSQL(InnoDB)不支持ARRAY( 数组)数据类型。这一在小学,中学算数中都有的数据类型MYSQL竟然不支持。就是说不能在MYSQL表中创建含有ARRAY( 数组)数据类型的栏目(字段)。

FIREBIRD不仅支持ARRAY(数组)数据类型, 而且支持多维ARRAY(数组)数据类型。就是说可以在FIREBIRD表中创建含有ARRAY(数组)数据类型的栏目(字段)。

MYSQL(InnoDB)中有些数据类型既不是SQL──99标准,也不是SQL200X标准,甚至不是ANSI标准。

FIREBIRD中的所有数据类型则是紧跟着上述标准走。你看哪个更容易维护, 更不容易出错。

MYSQL(InnoDB)不支持CHECK约束(复查约束)。必须把复查条件写死在用户程式中。

FIREBIRD支持CHECK约束(复查约束),可以把复查条件写在数据库中,加在DOAMIN里,加在字段中, 哪用哪调。你看哪个更容易维护, 更不容易出错。

再来看看MYSQL(InnoDB)中高端点的功能。(实在是不敢恭维,别太难为了)
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。 PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQLFirebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。 本课程作为PostgreSQL数据库管理之三,主要讲解以下内容:1.     PostgreSQL约束讲解和剖析2.     PostgreSQL数据类型3.     PostgreSQL的结构管理4.     PostgreSQL条件表达式和操作5.     PostgreSQL使用小技巧

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧