關係型數據庫管理系統比較
此條目需要更新。 (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
。
參考資料
- ^ IBM unveils Db2 12.1. 2024年10月21日 [2024年12月6日].
- ^ 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.
- ^ Out-of-cycle release scheduled for November 21, 2024. 2024年11月21日.
- ^ SQLite Release 3.47.2 On 2024-12-07. [2024年12月8日].
外部連結
- [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(頁面存檔備份,存於網際網路檔案館)