关系型数据库管理系统比较
在以下的表格中,将对一些关系型数据库管理系统的基本信息和技术信息进行对比。请参考以下产品各自的条目以获得更详细的介绍。该表格不可能包罗万象,也许有些信息已过时。除非注明,以下产品为各自的稳定版本,且没有安装任何形式的扩展程序。
基本信息
维护者 | 首次发行日期 | 最新稳定版 | 软件授权协议 | |
---|---|---|---|---|
4th Dimension | 4D s.a.sd | 1984年 | 2004.5 | 专有 |
Adaptive Server Enterprise | Sybase | 1987年 | 15.0 | 专有 |
Apache Derby | Apache軟件基金會 | 2004年 | 10.13.1.1 | Apache許可證 |
DB2 | IBM | 1982年 | 11.5.9[1] (2023年11月15日,4個月前) | 专有 |
DBISAM | Elevate Software (页面存档备份,存于) | ? | 4.25 | 专有 |
ElevateDB | Elevate Software (页面存档备份,存于) | ? | 1.01 | 专有 |
Firebird | Firebird Foundation | 2000年7月25日 | 5.0.0[2] (2024年1月11日,2個月前) | Initial Developer's Public License |
Informix | IBM | 1985年 | 10.0 | 专有 |
HSQLDB | HSQL Development Group | 2001年 | 1.8.0 | BSD |
H2 | H2 Software | 2005年 | 1.0 | Freeware |
Ingres | Ingres Corp. | 1974年 | Ingres 2006 II 9.0.4 | GPL 与 专有 |
InterBase | CodeGear | 1985年 | 2007 | 专有 |
Sybase IQ | Sybase | 1996年 | 15.2 | 专有 |
MaxDB | MySQL AB, SAP AG | ? | 7.6 | GPL 或 专有 |
Microsoft SQL Server | Microsoft | 1989年 | 2022[3] (2022年11月16日,16個月前) | 专有 |
MonetDB | The MonetDB Developer Team (页面存档备份,存于) | 2004年 | 4.16 (Feb. 2007) | MonetDB Public License v1.1 (页面存档备份,存于) |
MySQL | MySQL AB | 1995年 | 8.3.0[4] (2024年1月16日,2個月前) | GPL 或 专有 |
HP NonStop SQL | Hewlett-Packard | 1987年 | SQL MX 2.0 | 专有 |
Oracle | Oracle Corporation | 1979年11月 | 23c[5] (2023年9月19日,6個月前) | 专有 |
Oracle Rdb | Oracle Corporation | 1984年 | 7.2 | 专有 |
OpenEdge | Progress Software Corporation | 1984年 | 10.1B | 专有 |
OpenLink Virtuoso | OpenLink Software (页面存档备份,存于) | 1998年 | 4.5.3 (April 2006) | GPL 或 专有 |
Pervasive PSQL | Pervasive Software | ? | 9 | 专有 |
PostgreSQL | PostgreSQL Global Development Group (页面存档备份,存于) | 1989年6月 | 16.2[6] (2024年2月8日,61天前) | BSD |
Pyrrho DBMS | University of Paisley | 2005年11月 | 0.5 | 专有 |
SmallSQL | SmallSQL | 2005年4月16日 | 0.12 | LGPL |
SQL Anywhere | Sybase | 1992年 | 10.0 | 专有 |
SQLite | D. Richard Hipp | 2000年8月17日 | 3.45.2[7] (2024年3月12日,28天前) | Public domain |
Teradata | Teradata | 1984 | 13.10 | 专有 |
Valentina | Paradigma Software | 1998年2月 | 3.0.1 | 专有 |
Vertica | Vertica | 2005 | 4.0 | 专有 |
维护者 | 首次发行日期 | 最新稳定版 | 软件授权协议 |
操作系统支持
这些数据库所能支持的操作系统。
Windows | Mac OS X | Linux | BSD | UNIX | z/OS 1 | |
---|---|---|---|---|---|---|
4th Dimension | 是 | 是 | 否 | 否 | 否 | 否 |
Adaptive Server Enterprise | 是 | 是 | 是 | 是 | 是 | 否 |
Apache Derby 2 | 是 | 是 | 是 | 是 | 是 | 是 |
DB2 | 是 | 否 | 是 | 否 | 是 | 是 |
Firebird | 是 | 是 | 是 | 是 | 是 | 可能 |
HSQLDB 2 | 是 | 是 | 是 | 是 | 是 | 是 |
H2 2 | 是 | 是 | 是 | 是 | 是 | 可能 |
Informix | 是 | 是 | 是 | 是 | 是 | 否 |
Ingres | 是 | 否 | 是 | 是 | 是 | 可能 |
InterBase | 是 | 否 | 是 | 否 | 是 (Solaris) | 否 |
Adabas | 是 | 否 | 是 | 否 | 是 | 是 |
MaxDB | 是 | 否 | 是 | 否 | 是 | 可能 |
Microsoft SQL Server | 是 | 否 | 是 | 否 | 否 | 否 |
MonetDB | 是 | 是 | 是 | 否 | 是 | 否 |
MySQL | 是 | 是 | 是 | 是 | 是 | 可能 |
Oracle | 是 | 是 | 是 | 否 | 是 | 是 |
OpenEdge | 是 | 否 | 是 | 否 | 是 | 否 |
OpenLink Virtuoso | 是 | 是 | 是 | 是 | 是 | 是 |
PostgreSQL | 是 | 是 | 是 | 是 | 是 | 否 |
Pyrrho DBMS | 是 (.NET) | 否 | 是 (Mono) | 否 | 否 | 否 |
SmallSQL | 是 | 是 | 是 | 是 | 是 | 是 |
SQL Anywhere | 是 | 是 | 是 | 否 | 是 | 否 |
SQLite | 是 | 是 | 是 | 是 | 是 | 可能 |
Teradata | 是 | 否 | 是 | 否 | 是 | 否 |
Valentina | 是 | 是 | 是 | 否 | 否 | 否 |
Windows | Mac OS X | Linux | BSD | UNIX | z/OS 1 | |
注记 (1): 列表中标明了UNIX兼容的开源数据库可以在z/OS的内建子系统UNIX系统服务(USS)下编译和运行。大部分Linux兼容的数据库可以与z/OS在同一台服务器上通过Linux on zSeries运行。
基本功能
数据库系统所能实现的基本功能对比。
ACID | 关联完整性 | 数据库事务 | Unicode万国码 | |
---|---|---|---|---|
Adaptive Server Enterprise | 是 | 是 | 是 | 是 |
Apache Derby | 是 | 是 | 是 | 是 |
DB2 | 是 | 是 | 是 | 是 |
Firebird | 是 | 是 | 是 | 是 |
HSQLDB | 是 | 是 | 是 | 是 |
H2 | 是 | 是 | 是 | 是 |
Informix | 是 | 是 | 是 | 是 |
Ingres | 是 | 是 | 是 | 是 |
InterBase | 是 | 是 | 是 | 是 |
MaxDB | 是 | 是 | 是 | 是 |
Microsoft SQL Server | 是 | 是 | 是 | 是 |
MonetDB | 是 | 是 | 是 | 是 |
MySQL | 是 3 | 是 3 | 是 3 | 是 |
Oracle | 是 | 是 | 是 | 是 |
OpenEdge | 是 | 否 | 是 | 是 |
OpenLink Virtuoso | 是 | 是 | 是 | 是 |
PostgreSQL | 是 | 是 | 是 | 是 |
Pyrrho DBMS | 是 | 是 | 是 | 是 |
SQL Anywhere | 是 | 是 | 是 | 是 |
SQLite | 是 | 否 4 | Basic 4 | 是 |
Teradata | 是 | 是 | 是 | 是 |
Valentina | 否 | 是 | 否 | 是 |
ACID | 关联完整性 | 数据库事务 | Unicode万国码 | |
注记 (3): 需要使用InnoDB格式数据表才能实现关联完整性约束与事务。 然而,InnoDB格式数据表仍旧允许存储的数据超出数据范围;一些观点认为它由此违反了ACID的完整性约束。
注记 (4): 外联键约束在语法上有效,但实际上并不能得到强制执行,可使用触发器替代。不支持嵌套事务。 (页面存档备份,存于)
表与视图
临时表 | 物化视图(Materialized view) | |
---|---|---|
Adaptive Server Enterprise | 是 5 | 否 |
Apache Derby | 是 | 否 |
DB2 | 是 | 是 |
Firebird | Will be in 2.1 | 否 (only common views) |
HSQLDB | 是 | 否 |
H2 | 是 | 否 |
Informix | 是 | 是 |
Ingres | 是 | Ingres r4 |
InterBase | 是 | 否 |
MaxDB | 是 | 否 |
Microsoft SQL Server | 是 | 是 |
MonetDB | 是 | 否 |
MySQL | 是 | 否 6 |
Oracle | 是 | 是 |
OpenEdge | 是 | 否 |
OpenLink Virtuoso | 是 | 是 |
PostgreSQL | 是 | 是 7 |
Pyrrho DBMS | 否 | 否 |
SQL Anywhere | 是 | 是 |
SQLite | 是 | 否 |
Teradata | 是 | 是 |
Valentina | 是 | 否 |
临时表 | 物化视图(Materialized view) | |
注记 (5): 服务器提供临时数据库,可供会话存放公共/私有的临时表。
注记 (6): 物化视图可用存储过程和触发器模拟。
索引
R-/R+ tree | 哈希 | Expression | 部分索引(Partial index) | 反向索引(Reverse index) | 位图索引(Bitmap) | GiST | GIN | |
---|---|---|---|---|---|---|---|---|
Adaptive Server Enterprise | 否 | 否 | 否 | 否 | 是 | 否 | 否 | 否 |
Apache Derby | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
DB2 | 否 | ? | 否 | 否 | 是 | 是 | 否 | 否 |
Firebird | 否 | 否 | 是 | 否 | 是 16 | 否 | 否 | 否 |
HSQLDB | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
H2 | 否 | 是 | 否 | 否 | 否 | 否 | 否 | 否 |
Informix | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 否 |
Ingres | 是 | 是 | Ingres r4 | 否 | 否 | Ingres r4 | 否 | 否 |
InterBase | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
MaxDB | ? | ? | 否 | 否 | 否 | 否 | 否 | 否 |
Microsoft SQL Server | ? | 否n/Cluster & fill factor | 是 8 | 是 9 | 是 8 | 否 | 否 | 否 |
MonetDB | 否 | 是 | 否 | 否 | 否 | 否 | 否 | 否 |
MySQL | 仅限MyISAM | MEMORY, Cluster (NDB), 仅限InnoDB,17 | 否 | 否 | 否 | 否 | 否 | 否 |
Oracle | EE edition only | Cluster Tables | 是 | 是 15 | 是 | 是 | 否 | 否 |
OpenLink Virtuoso | 是 | Cluster | 是 | 否 | 否 | 是 | 否 | 否 |
PostgreSQL | 是 | 是 | 是 | 是 | 是 10 | 否 11 | 是 | 是 |
Pyrrho DBMS | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
SQL Anywhere | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
SQLite | 否 | 否 | 否 | 否 | 是 | 否 | 否 | 否 |
Teradata | 否 | 是 | 是 | 是 | 否 | 是 | 否 | 否 |
Valentina | 否 | 否 | 是 8 | 是 17 | 是 | 是 | 否 | 否 |
R-/R+ tree | 哈希 | Expression | 部分索引(Partial index) | 反向索引(Reverse index) | 位图索引(Bitmap) | GiST | GIN | |
注记 (8): 可通过索引一个经过计算的列,或使用一个已索引的视图实现 (页面存档备份,存于)
注记 (9): 可使用索引视图实现。 (页面存档备份,存于)
注记 (17): InnoDB自动按需生成 adaptive hash index (页面存档备份,存于)。
注记 (10): 一个有效的PostgreSQL索引可以用来进行倒排序。
注记 (11): PostgreSQL将在8.3中支持保存于磁盘的位图索引。8.2提供了一种称为"内存位图扫描(in-memory bitmap scans)"的相关技术。
注记 (15): 在Oracle 8i及以后的版本可使用基于函数的索引(Function-based Indexes)实现。
注记 (16): The users need to use a function from freeAdhocUDF library or similar. (页面存档备份,存于)
注记 (17): 在Valentina中可使用基于函数的索引(Function-based Indexes)实现。
其他对象
有关其他类型对象的支持情况。
数据域 | 游标 | 触发器 | 函数 12 | 存储过程 12 | 外部调用 12 | |
---|---|---|---|---|---|---|
Adaptive Server Enterprise | 是 | 是 | 是 | 是 | 是 | 是 |
Apache Derby | 否 | 是 | 是 | 是 13 | 是 13 | 是 13 |
DB2 | 否 | 是 | 是 | 是 | 是 | 是 |
Firebird | 是 | 是 | 是 | 是 | 是 | 是 |
HSQLDB | ? | 否 | 是 | 是 | 是 | 是 |
H2 | 是 | 否 | 是 | 是 | 是 | 是 |
Informix | ? | 是 | 是 | 是 | 是 | 是 |
Ingres | 是 | 是 | 是 | 是 | 是 | 是 |
InterBase | 是 | 是 | 是 | 是 | 是 | 是 |
MaxDB | 是 | 是 | 是 | 是 | 是 | ? |
Microsoft SQL Server | 是 (2000 and beyond) | 是 | 是 | 是 | 是 | 是 |
MonetDB | 否 | 否 | 是 | 是 | 是 | 是 |
MySQL | 否 | 是 | 是 | 是 | 是 | 是 |
Oracle | 是 | 是 | 是 | 是 | 是 | 是 |
OpenLink Virtuoso | 是 | 是 | 是 | 是 | 是 | 是 |
PostgreSQL | 是 | 是 | 是 | 是 | 是 | 是 |
Pyrrho DBMS | 是 | 是 | 是 | 是 | 是 | 是 |
SQL Anywhere | 是 | 是 | 是 | 是 | 是 | 是 |
SQLite | 否 | 否 | 是 | 否 | 否 | 是 |
Teradata | 否 | 是 | 是 | 是 | 是 | 是 |
Valentina | 否 | 是 | 是 | 否 | 是 | 否 |
数据域 | 游标 | 触发器 | 函数 12 | 存储过程 12 | 外部调用 | |
注记 (12): 以上函数和存储过程都是指使用SQL或者过程语言(如PL/SQL、PL/pgSQL等)编写的内部程序调用。外部调用是指使用其他外部语言,如C、Java等语言编写的调用。存储过程是这类调用的笼统称呼,在不同的供应商系统中,它们往往有着不同的定义。
注记 (13): In Derby, users code functions and procedures in Java.
数据表分区
范围(Range) | 哈希(Hash) | 混合(范围+哈希) | 列表(List) | |
---|---|---|---|---|
Adaptive Server Enterprise | 是 | 是 | 否 | 是 |
Apache Derby | 否 | 否 | 否 | 否 |
IBM DB2 | 是 | 是 | 是 | 是 |
Firebird | 否 | 否 | 否 | 否 |
Informix | 是 | 是 | ? | ? |
Ingres | 是 | 是 | 是 | 是 |
InterBase | 否 | 否 | 否 | 否 |
MaxDB | 否 | 否 | 否 | 否 |
Microsoft SQL Server | 是 | 否 | 否 | 否 |
MonetDB | 是 (M5) | 是 (M5) | 是 (M5) | 否 |
MySQL | 是 (5.1 beta) | 是 (5.1 beta) | 是 (5.1 beta) | 是 (5.1 beta) |
Oracle | 是 | 是 | 是 | 是 |
OpenLink Virtuoso | 是 | 否 | 否 | 否 |
PostgreSQL | 是 14 | 是 14 | 是 14 | 是 14 |
Pyrrho DBMS | 否 | 否 | 否 | 否 |
SQL Anywhere | 否 | 否 | 否 | 否 |
SQLite | 否 | 否 | 否 | 否 |
Teradata | 是 | 是 | 是 | 是 |
Valentina | 否 | 否 | 否 | 否 |
范围(Range) | 哈希(Hash) | 混合(范围+哈希) | 列表(List) | |
注记 (14): PostgreSQL 8.1 提供了使用check约束实现的数据表分区。范围、列表以及哈希分区可通过PL/pgSQL或者其他过程语言模拟。 (页面存档备份,存于)
数据库与模式(Schemas)
SQL标准明确了SQL模式(SQL schema)的定义,然而,许多数据库对它的实现并不正确。SQL模式是指一个数据库内部的名字空间,此空间内部的对象可以通过成员操作符.
访问。
一个完整名字的查询类似这种形式:select * from database.schema.table
。
参考资料
外部链接
- (页面存档备份,存于) 各种SQL标准实现的对比,包括Oracle, DB2, Microsoft SQL Server, MySQL 与 PostgreSQL. (08/Jun/2007)
- Comparison of Oracle 8/9i, MySQL 4.x and PostgreSQL 7.x DBMS against SQL standards. (14/Mar/2005)
- Comparison of Oracle and SQL Server. (2004)
- Comparison of geometrical data handling in PostgreSQL, MySQL and DB2 (29/Sep/2003)
- Open Source Database Software Comparison (Mar/2005)
- PostgreSQL vs. MySQL vs. Commercial Databases: It's All About What You Need (页面存档备份,存于) (12/Apr/2004)
- The SQL92 standard(页面存档备份,存于)
参见
- 关系型数据库管理系统列表