关系型数据库管理系统比较
此条目需要更新。 (2015年12月16日) |
在以下的表格中,将对一些关系型数据库管理系统的基本信息和技术信息进行对比。请参考以下产品各自的条目以获得更详细的介绍。该表格不可能包罗万象,也许有些信息已过时。除非注明,以下产品为各自的稳定版本,且没有安装任何形式的扩展程序。
基本信息
操作系统支持
这些数据库所能支持的操作系统。
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 | 关联完整性 | 数据库事务 | 统一码 | |
---|---|---|---|---|
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 | 关联完整性 | 数据库事务 | 统一码 |
注记 (3): 需要使用InnoDB格式数据表才能实现关联完整性约束与事务。 然而,InnoDB格式数据表仍旧允许存储的数据超出数据范围;一些观点认为它由此违反了ACID的完整性约束。
注记 (4): 外联键约束在语法上有效,但实际上并不能得到强制执行,可使用触发器替代。不支持嵌套事务。[1] (页面存档备份,存于互联网档案馆)
表与视图
临时表 | 物化视图(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) |
索引
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): 可通过索引一个经过计算的列,或使用一个已索引的视图实现 [5] (页面存档备份,存于互联网档案馆)
注记 (9): 可使用索引视图实现。 [6] (页面存档备份,存于互联网档案馆)
注记 (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. [7] (页面存档备份,存于互联网档案馆)
注记 (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或者其他过程语言模拟。[8] (页面存档备份,存于互联网档案馆)
数据库与模式(Schemas)
SQL标准明确了SQL模式(SQL schema)的定义,然而,许多数据库对它的实现并不正确。SQL模式是指一个数据库内部的名字空间,此空间内部的对象可以通过成员操作符.
访问。
一个完整名字的查询类似这种形式:select * from database.schema.table
。
参考资料
- ^ Db2 Documentation. [2023年11月15日].
- ^ Firebird 5.0.1. 2024年8月2日 [2024年8月4日].
- ^ Explore SQL Server 2022 capabilities. [2023年1月6日].
- ^ Changes in MySQL 9.1.0 (2024-10-15, Innovation Release). 2024年10月15日 [2024年10月16日].
- ^ Oracle Database 23c: The Next Long Term Support Release.
- ^ PostgreSQL 17 Released!. 2024年9月26日.
- ^ SQLite Release 3.47.0 On 2024-10-21. 2024年10月21日 [2024年10月21日].
外部链接
- [9](页面存档备份,存于互联网档案馆) 各种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(页面存档备份,存于互联网档案馆)