DB2与Sybase/Oracle/Informix的比较
DB2是IBM的数据库产品,近年来Oracle、Sybase等数据库的大力发展曾使很多人认为DB2将逐步退出数据库市场,但几年过去了,DB2不但没有退出的迹象,反而一步步发展壮大,逐步夺回失去的市场。在这篇文章中我将其与Oracle、Sybase等数据库作一简单的对比,希望能让读者了解DB2能屹立不倒的原因。
DB2与Oracle比较
开放性/可移植性
IBM DB2 UDB在各层面,从网络协议的支持到应用开发程序的编程接口,数据库存储程序及触发器,服务器之
间的分布式运作,都是基于最新的国际标准,以确保其开放性及移植性。ORACLE的许多功能都是使用其私有的,非开放性的技术。例
如:ORACLEPL/SQL语言是ORACLE私有的。其存储程序语句也不符合ANSISQL及ISOSQL的标准,客户机/服务器的编程接
口,ORACLE的SQL*NET也不是根据标准定义的。
处理性能
IBM发明了关系型数据库以及其优化技术,并不断发展,所以DB2在各种性能测试中
均占领先地位。IBM有信心能在各种标准的测试环境下超越ORACLE。DB2在高端应用具有过硬的技术,有众多超过1Tera-bytes数据量的用户
实例。由于ORACLE限制用户在未经许可的情况下不能公布他们所作的性能测试,故一般用户不易取得ORACLE的比较资料。Oracle超过
1Tera-bytes数据量的客户实例很少。
并行能力
DB2的并行版支持位图索引和对象关系,因此,DB2有更好的扩展性和性能。Oracle触发器无法支持并行:在一些特殊的引用完整性
(referentialintegrity)的限制下,并行也无法运用:如果表格中有大对象,由于前述的限制(表不能分割),并行也无法运用。总
之,Oracle在并行系统中没有实现位图索引和对象关系,
分布式数据库
DB2分布式数据库的处理(如两阶段提交)及连接功能是建立在DB2的核心中,不需要使用其它的产品附件。性能好,易使用,减少开支。ORACLE的分布式功能需要另外购买DistributedOption以及SQL*NET等产品才能实现分布式数据库的连接。
异构平台支持
在异构的环境中,IBM数据库方案简单、更加无缝而且比Oracle的成本低; Oracle的异构网关性能差,当访问异构数据库时,Oracle缺乏全局的优化,导致了过多的数据及网络传输。
复制能力
DB2提供业界最佳效率的和最开放的复制方案;DB2提供自动冲突检测和解决方法。 Oracle只提供自动冲突检测和解决方法的例子程序,用户须对例子程序做定制后来解决复制冲突
对电子商务支持
IBM的Java技术为业界所公认,DB2公认为电子商务基石。DB2提供的JDBC接口,还可用Java语言写储存过程和用户自定义函数 Oracle的Java技术仅局限于数据库和ERP应用。
对商业智能支持
DB2OLAPServer远比Express更易使用和实现。DB2OLAPServer提供读/写能力-这对一些关键性的多维分析扩展应用
如:预测和预算,是非常有用的(Express只支持读)。IBM的商业智能解决方案中,拥有数据挖掘(IntelligentMiner)工具。
OracleExpress只支持读的能力,不利于支持预测和预算。Oracle缺乏数据挖掘方面的工具。
软件质量与可靠性
DB2的软件开发实验室早在1994年便已通过ISO9000国际质量管理标准的验证与认可。故DB2的软件质量是所有数据库厂家中可靠性最
高,故障率最低的数据库。
ORACLE版本6及版本7在推出后皆需经过无数次修订版升级才能达到一定程度的可用度,这给用户带来极大的不便,并且严重影响到投产系统的可用性及可靠
性。
DB2与Sybase比较
开放性/可移植性
IBMDB2的编程接口遵照ANSI、X/OPEN标准的CLI(CallLevelInterface)及ANSISQL的嵌入式SQL等开放标准。IBMDB2的存储程序和触发器机制则使用最新的SQL国际标准并支持标准的开放语言如C/C++。
在DB2CommonServerV2.1.2(1996)以及DB2UDB(1997)中更加入了用Java语言开发存储程序和触发器的功能。
1.编程接口:SYBASE使用的编程接口不是开放的,因为他使用的是自己的OpenClient/OpenServer接口,而不是基于某一标准的接
口。2.存储程序(StoredProcedure):由于SYBASE的CLIENT/SERVER技术是80年代开发的,没有使用SQL92等相关的
标准,因此编制存储程序和触发器所用的Transact-SQL也是它们自己专用的。
处理性能
IBM发明了关系型数据库以及其优化技术,并不断发展,所以DB2在各种性能测试中均占领先地位。DB2在高端应用具有过硬的技术,有众多超过
1Tera-bytes数据量的用户实例。
SYBASE的优化器(OPTIMIZER)不能有效的支持复杂的查询(ComplexQueries)。应用程序中稍微复杂一些的SQL语
句,SYBASE的优化器就无法妥善优化处理。SYBASE刚刚进入海量多处理器MPP的领域,缺乏这方面的经验及先例,Sybase大于一个TB数据量
的客户实例很少。
并行能力
DB2的并行版支持位图索引和对象关系,因此,DB2有更好的扩展性和性能;
SYBASE数据库核心结构较陈旧,尤其在多处理器(SMP)的服务器上无法做到软硬件相配合的延伸与扩展(scale),无法发挥多处理器的优势。其单
进程多线索的结构就无法象DB2的多进程多线索的结构更能有效地在SMP等机器上运行。
高可用性
DB2可以用数据库及表空间两种粒度(granularity)对数据作备份与恢复(BACKUP及
RESTORE),并且备份可以在联机方式(ONLINE)下进行,不影响多用户的同时使用。这使得DB2能真正地满足一天24小时、一星期七天的全天候
使用。
SYBASE在BACKUP数据库及RESTORE数据库时,需要将系统转为单一用户模式以保证数据库中数据的完整性及一致性,并且在BACKUP之后,
要运行DBCC检查数据的一致性,这使得SYBASE数据库在可用性方面受到限制。
数据完整与可管理性
IBMDB2中数据库可自动的维持两表间的一致性,无需再由DBA编程。
SYBASE在其数据库技术中引入RI(ReferentialIntegrity数据引用完整性)较晚,而且功能有限。例如,当表A中的列A是另一个表
B中列B的ForeignKey时,若要删掉表A中的一个记录,在SYBASE中是不允许的,只有通过触发器(Trigger)及存储过程
(StoredProcedure),才能删掉表A中的一个记录,同时删掉表B中的相关记录,或把其值设置为NULL。
异构平台支持
在异构的环境中,IBM数据库方案简单、更加无缝而且成本低; Oracle的异构网关性能差,当访问异构数据库时,Oracle缺乏全局的优化,导致了过多的数据及网络传输。
复制能力
DB2提供业界最佳效率的和最开放的复制方案;DB2支持对数据做预处理后再复制到远端,更有效率且网络流量少。
Sybase是立即复制交易,数据和网络流量大,据用户反映,Sybase的复制难以实施。SybaseAdaptiveServerAnywhere和
AdaptiveServerEnterprise之间的数据复制不是无缝连接,且要求整合工作。
对电子商务支持
IBM的Java技术为业界所公认,DB2公认为电子商务基石。DB2提供的JDBC接口,还可用Java语言写储存过程和用户自定义函数 Oracle的Java技术仅局限于数据库和ERP应用。
对商业智能支持
DB2WarehouseManager内置了数据仓库管理功能。IBM的商业智能解决方案中,拥有数据挖掘(IntelligentMiner)工具。 Sybase数据集市(datamart)没有提供仓库(Warehouse)管理与自动化的功能。
软件质量与可靠性
DB2的软件开发实验室早在1994年便已通过ISO9000国际质量管理标准的验证与认可。故DB2的软件质量是所有数据库厂家中可靠性最
高,故障率最低的数据库。数据在IBM系统内被腐化(corrupted)不但是前所未闻,也是IBM传统用户所不可能忍受的。
SYBASE中的数据需要小心的维护,因为数据在数据库中有可能被“腐化(corrupted)”而无法继续使用。在没有事先修补的情形下,若这些数据被
备份了,则它们无法再被使用。为此SYBASE不得不为客户提供一个检查程序(DBCC)。
DB2与Informix比较
开放性/可移植性
IBMDB2UDB在各层面,从网络协议的支持到应用开发程序的编程接口,数据库存储程序及触发器,服务器之间的分布式运作,都是基于最新的国际标准,以确保其开放性及移植性。 INFORMIX私有4GL编写的程序只能局限在INFORMIX上运行。
处理性能
IBM发明了关系型数据库以及其优化技术,并不断发展,所以DB2在各种性能测试中均占领先地位。DB2在高端应用具有过硬的技术,有众多超过
1Tera-bytes数据量的用户实例。
由于INFORMIX是以小型数据库起家,所以其产品设计到目前为止仍有许多小型数据库的限制。许多用户都曾遇到INFORMIX在数据存储、日志管理、
备份、恢复等方面的问题。Informix的扩展并行选项在支持多用户并发访问时存在困难。INFORMIX由于缺乏对大量数据的管理经验,所以其优化器
技术也不能针对大量数据做优化。
并行能力
DB2EEE能利用HACMP自动接替故障节点正常工作,Informix做不到。DB2EEE已经有多年的历史,颁布了最高的TPC-D和
TPC-H基准测试值。DB2EEE支持动态位图索引完成Star-jion,从而既提高了性能又不增加数据库系统管理员的维护量。
在并行机SP上,当SP的高性能开关(switch)
不能通讯时,InformixXPS数据库将处于瘫痪状态.当并行机的节点出现故障时,InformixXPS数据库将处于瘫痪状态,停机时间为4到24
小时;InformixXPS没有备份和恢复。InformixXPS没有对查询的监控机制,有可能某一个用户的一个查询耗尽系统的所有资源而不让其他用
户使用。
分布式数据库
DB2则是通过核心直接支持XA接口,并且提供许多其它厂商所没有的XA先进功能,例如工商银行山东分行的DB2应用就大量地使用了DB2XA
接口,实现了与CICS结合的大型联机事物处理系统(OLTP)来支持全省通存通兑等应用。
INFORMIX对异构分布式数据库的支持是通过X/OPEN、XA实现的。虽然INFORMIX声称它能够支持X/OPEN、XA接口,但只是在某几个
版本通过附加选件完成。并且在这方面,INFORMIX很少有使用先例,也没有这方面的技术支持。
异构平台支持
在异构的环境中,IBM数据库方案简单、更加无缝而且成本低; INFORMIX在数据库与数据库之间的连接方面很弱。例如INFORMIX没有连接其他数据库如bbORACLE、SYBASE等数据库的产品.
复制能力
DB2提供业界最佳效率的和最开放的复制方案;DB2提供自动冲突检测和解决方法。 Informix只支持Informix数据库间的复制,若要同其它数据库相互复制,则必须购买第三方支持软件。
成功案例
DB2在国内、国际的用户群
DB2的用户不胜枚举。它在全球有一百万以上的License和超过四千万的用户,它在全世界有一万一千个企业级用户。全世界70%公司的数据储存在IBM的数据库里。
DB2与Sybase/Oracle/Informix的比较的更多相关文章
- 异常 SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
使用Spring 的JDBCtemplate 调用数据库的时候 出现了如下的问题 SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-S ...
- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase] 错误
在一次改bug的过程,爆出了数据库错误,但是一看后面控制台,并没有爆出以前的具体的数据库错误的原因,而是 SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, In ...
- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-co ...
- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase
sqlserver 插入数据的时候 插入失败,报错内容为 “SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, ...
- 不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句
在不同数据库中的使用的分页查询语句: 当前页:currentpage 页大小:pagesize 1. Oracle数据库 select * from (select A.*,rownum rn fro ...
- oracle、db2、sybase大型数据库面试总结
1. oracle数据库单例.多例模式. 数据库创建之后会有一系列为该数据库提供服务的内存空间和后台进程,称为该数据库的实例. 每一个数据库至少会有一个实例为其服务. 2. mysql获取字段的长度用 ...
- 免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE)
SQLite数据库是中小站点CMS的最佳选择 SQLite 是一个类似Access的轻量级数据库系统,但是更小.更快.容量更大,并发更高.为什么说 SQLite 最适合做 CMS (内容管理系统)呢? ...
- jdbc 连接Oracle informix Mysql
package com.basicSql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Res ...
- db2迁移至oracle过程中的问题
(1)时间日期问题: db2中‘2013-07-17 00:02:55’ oracle中to_date('2013-07-17 00:02:55' , 'YYYY-MM-DD HH24:MI:SI ...
随机推荐
- Asp.net Vnext 模块化实现
概述 本文已经同步到<Asp.net Vnext 系列教程 >中] 在程序中实现模块化可以加快开发效率,通过替换模块实现升级. 架构 vnext 没有 Virtualpathprovide ...
- 面试题41:和为s的两个数字 || 和为s的连续正数序列
和为s的两个数字 题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s.如果有多对数字的和等于s,输出任意一对即可. 有点类似于夹逼的思想 注意两个int相加的和要用lo ...
- 洛谷 P3071 [USACO13JAN]座位Seating-线段树区间合并(判断找,只需要最大前缀和最大后缀)+分治+贪心
P3071 [USACO13JAN]座位Seating 题目描述 To earn some extra money, the cows have opened a restaurant in thei ...
- 【原创】Linux常用脚本
#1.启用停用VIP sudo /etc/ha.d/resource.d/IPaddr 10.10.10.10 start sudo /etc/ha.d/resource.d/IPaddr 10.10 ...
- 在qemu环境中用gdb调试Linux内核
简介 对用户态进程,利用gdb调试代码是很方便的手段.而对于内核态的问题,可以利用crash等工具基于coredump文件进行调试.其实我们也可以利用一些手段对Linux内核代码进行gdb调试,qem ...
- Django的Form机制小问题
使用Django,我们可以以声明式的方式来定义一个Form,如下: 1 2 3 4 5 # -*- coding: utf-8 -*- from django import forms class S ...
- redis keys 命令
## 删除存在的key del key ## 序列体弱给定key,并返回被序列化的值 dump key ## 检查key是否存在 exists key ## 为给定key设置过期时间 expire k ...
- OI回忆录(流水账)
今天是NOI2017疏散日,晚上回到家在电脑前写下这篇回忆录. 初中参加过几次普及组,拿过一等奖,自招进slyz. 高一参加过CTSC2016,狗牌滚粗qwq 高二参加过WC2017,CTSC2017 ...
- 洛谷.3803.[模板]多项式乘法(NTT)
题目链接:洛谷.LOJ. 为什么和那些差那么多啊.. 在这里记一下原根 Definition 阶 若\(a,p\)互质,且\(p>1\),我们称使\(a^n\equiv 1\ (mod\ p)\ ...
- 20162303 解读同伴的收获&解决同伴的问题 周三补交
解读同伴的收获&解决同伴的问题 11月29号 解决同伴的问题 我的同组同学是20162307学号张韵琪同学 同组同学的问题是动态规划算法步骤中递归定义的最优值 我理解他的意思是她不太理解最优值 ...