関係データベース管理システムの比較
関係データベース管理システムの比較(かんけいデータベースかんりシステムのひかく)では、関係データベース管理システムの比較について説明する。特記されていない限り、アドオンや外部プログラムを含まない、最新の安定バージョンに基づいて比較を行っている。
一般的な情報
[編集]対応オペレーティングシステム
[編集]サポートするオペレーティングシステムの比較を以下に示す。
Windows | macOS | Linux | BSD | UNIX | |
---|---|---|---|---|---|
4th Dimension | Yes | Yes | No | No | No |
ADABAS | Yes | No | Yes | No | Yes |
Adaptive Server Enterprise | Yes | No | Yes | Yes | Yes |
ALTIBASE | Yes | No | Yes | Yes | Yes |
Apache Derby 1 | Yes | Yes | Yes | Yes | Yes |
DB2 | Yes | No | Yes | No | Yes |
Firebird | Yes | Yes | Yes | Yes | Yes |
HSQLDB 1 | Yes | Yes | Yes | Yes | Yes |
H2 Database 1 | Yes | Yes | Yes | Yes | Yes |
FileMaker | Yes | Yes | No | No | No |
Informix Dynamic Server | Yes | Yes | Yes | Yes | Yes |
Ingres | Yes | Yes | Yes | Yes | Yes |
InterBase | Yes | Yes | Yes | No | Yes |
Microsoft Access | Yes | No | No | No | No |
Microsoft Visual FoxPro | Yes | No | No | No | No |
Microsoft SQL Server | Yes | No | No | No | No |
MySQL | Yes | Yes | Yes | Yes | Yes |
MariaDB | Yes | Yes | Yes | Yes | Yes |
Oracle Database | Yes | Yes | Yes | No | Yes |
PostgreSQL | Yes | Yes | Yes | Yes | Yes |
SQLite | Yes | Yes | Yes | Yes | Yes |
注記 (1): 利用可能か否かはオペレーティングシステムではなくJava仮想マシンに依存する。
基本機能
[編集]基本的な機能の比較を以下に示す。
ACID | 参照整合性 | トランザクション | MVCC | 2相コミット | Unicode | |
---|---|---|---|---|---|---|
4th Dimension | Yes | Yes | Yes | ? | ? | Yes |
Adaptive Server Enterprise | Yes | Yes | Yes | No | Yes | Yes |
ALTIBASE | Yes | Yes | Yes | Yes | Yes | Yes |
Apache Derby | Yes | Yes | Yes | No | Yes | Yes |
DB2 | Yes | Yes | Yes | Yes 4 | Yes | Yes |
Firebird | Yes | Yes | Yes | Yes | Yes | Yes |
HSQLDB | No | Yes | Yes | Yes | Yes | Yes |
H2 Database | Yes | Yes | Yes | Yes | Yes | Yes |
Informix Dynamic Server | Yes | Yes | Yes | Yes | Yes | Yes |
Ingres | Yes | Yes | Yes | Yes 5 | Yes | Yes |
InterBase | Yes | Yes | Yes | Yes | Yes | Yes |
Microsoft Access | No | Yes | Yes | ? | ? | Yes |
Microsoft Visual FoxPro | No | Yes | Yes | ? | ? | No |
Microsoft SQL Server | Yes | Yes | Yes | Yes 3 | Yes | Yes |
MySQL | Yes 1 | Yes 1 | Yes 1 | Yes 1 | Yes 1 | Yes 2 |
Oracle Database | Yes | Yes | Yes | Yes | Yes | Yes |
PostgreSQL | Yes | Yes | Yes | Yes | Yes | Yes |
SQLite | Yes | Yes [1] | Yes[1][2] | No | No | Yes |
注記 (1): InnoDB でのみ利用できる。MyISAM では利用できない。
注記 (2): Unicodeの補助文字 (supplementary character)への対応はMySQL 5.5以降。
注記 (3): SQL Server 2005以降のREAD_COMMITTED_SNAPSHOT。
注記 (4): DB2 9.7以降のCS with CC。
注記 (5): Ingres 10以降のMVCC利用可能にしたDBに対して、システム単位(SYSTEM_LOCK_LEVEL=MVCC)で指定、もしくはセッション(SET LOCKMODE SESSION WHERE LEVEL = MVCC)、テーブル単位(SET LOCKMODE ON テーブル WHERE LEVEL = MVCC)で指定する。
数量制限
[編集]数量制限の比較を以下に示す。
全体サイズ | 表サイズ | 行サイズ | 列数 | データサイズ | 文字列型 | 数値型 | 識別子サイズ | |
---|---|---|---|---|---|---|---|---|
4th Dimension | 無制限 | ? | ? | 65135 | 200GB | 200GB | 64bits | ? |
ALTIBASE | 無制限 | ? | ? | 1024 | 2GB | 2GB | 64bits | 32 |
DB2 | 512TB | 512TB | 32,677B | 1012 | 2GB | 32KB | 64bits | 128 |
Firebird | 無制限 | 32TB | 64KB | 列構成に依存 | 2GB | 32,767B | 64bits | 31文字 |
H2 Database | 256GB 7 | 無制限 8 | 無制限 8 | 無制限 8 | 256GB | 無制限 8 | 64bits | 無制限 8 |
Ingres | 無制限 | 無制限 | 256KB | 1024 | 2GB | 32,000B | 64bits | ? |
InterBase | 無制限 | 32TB | 64KB | 列構成に依存 | 2GB | 32,767B | 64bits | 67バイト |
Microsoft Access | 2GB | 2GB | 16 MB | 255 | 64KB | 255B | 32bits | ? |
Microsoft Visual FoxPro | 無制限 | 2GB | 65,500B | 255 | 2GB | 16 MB | 32bits | ? |
Microsoft SQL Server | 512PB | 512PB | 無制限 | 30000 | 2GB | 2GB 6 | 1038 | 128 |
MySQL | 無制限 | 16TB | 8000B or 64KB 3 | 1000 or 4096 4 | 4GB | 64KB | 64bits | 64 |
Oracle Database | 無制限 | 128TB | 無制限 | 1000 | 無制限 | 4000B | 126bits | 30 |
PostgreSQL | 無制限 | 32TB | 約8000B or 1.6TB 5 | 列構成に依存 (250-1600) | 1GB | 1GB | 101000 | 63 |
SQLite | 32TB | ? | ? | 32767 | 1GB | 1GB | 64bits | ? |
注記 (3): InnoDB では 8000 バイトまで。(VARBINARY, VARCHAR, BLOB, TEXT 列を除く) [2]
注記 (4): InnoDB では 1000 列まで。[3]
注記 (5): PostgreSQL のサイズは text, bytea, xml 等を除外して約8000バイトが最大。
注記 (6): SQL Server 2005 以降の VARCHAR(MAX) を用いた場合。
注記 (7): H2 Database のサイズは BLOB と CLOB を除外して計算する。
注記 (8): Java の配列型の制限 (231) が識別子サイズ、行数、列数、文字数などに影響する。
インデックス
[編集]B-/B+木 インデックス以外のインデックスの比較を以下に示す。
R木/GiST | ハッシュ | 式 | 部分 | 逆順 | ビットマップ | 転置 | |
---|---|---|---|---|---|---|---|
4th Dimension | ? | Cluster | ? | ? | ? | ? | ? |
Adaptive Server Enterprise | No | No | No | No | Yes | No | No |
ALTIBASE | Yes | No | No | No | No | No | No |
Apache Derby | No | No | No | No | No | No | No |
DB2 | No | No | Yes | No | Yes | Yes | No |
Firebird | No | No | Yes | No | Yes 1 | No | No |
HSQLDB | No | No | No | No | No | No | No |
H2 Database | No | Yes | No | No | No | No | No |
Informix Dynamic Server | Yes (GiST) | Yes | Yes | Yes | Yes | Yes | Yes |
Ingres | Yes | Yes | Yes | No | No | Yes | No |
InterBase | No | No | No | No | No | No | No |
Microsoft Access | No | No | No | No | No | No | No |
Microsoft Visual FoxPro | No | No | Yes | Yes | 式で代用 | Yes | No |
Microsoft SQL Server | No 2 | Non/Cluster & fill factor | Yes 3 | Yes 3 | No | No | No |
MySQL | MyISAM のみ | MEMORY, NDB, InnoDB のみ | No | No | No | No | MyISAM, Mroonga, InnoDB のみ |
Oracle Database | EE のみ | Cluster Tables | Yes | 式で代用 | Yes | Yes | No |
PostgreSQL | Yes (GiST) | Yes | Yes | Yes | 式で代用 | No | Yes |
SQLite | Yes | No | No | No | Yes | No | No |
注記 (1): freeAdhocUDF ライブラリの関数が必要がある。
注記 (2): SQL Server 2008以降空間インデックスがサポートされたがBツリーを使用して構築される。
注記 (3): 計算列でのインデックス作成 または ビューでのインデックス作成 で代用する。[3]
問い合わせ機能
[編集]問い合わせ機能の比較を以下に示す。全てのデータベースでサポートされている以下の機能は省略する。
MERGE | Intersect | Except | 外部結合 | サブクエリ | マージ結合 | ハッシュ結合 | 再帰クエリ | ウィンドウ関数 | |
---|---|---|---|---|---|---|---|---|---|
4th Dimension | ? | ? | ? | Yes | No | No | ? | ? | ? |
Adaptive Server Enterprise | ? | ? | ? | Yes | Yes | Yes | ? | ? | ? |
ALTIBASE | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
Apache Derby | ? | Yes | Yes | Yes | ? | ? | ? | No | No |
DB2 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Firebird | Yes | No | No | Yes | Yes | Yes | No | Yes | No |
HSQLDB | ? | Yes | Yes | Yes | ? | ? | ? | ? | ? |
H2 Database | ? | Yes | Yes | Yes | Yes | No | ? | No | Yes |
Informix Dynamic Server | ? | ? | MINUS | Yes | Yes | Yes | ? | ? | ? |
Ingres | ? | ? | ? | Yes | Yes | Yes | ? | ? | ? |
InterBase | No | No | No | Yes | WHERE句のみ | Yes | No | No | No |
Microsoft Access | ? | ? | ? | Yes | Yes | ? | ? | ? | ? |
Microsoft Visual FoxPro | ? | ? | ? | Yes | Yes | ? | ? | ? | ? |
Microsoft SQL Server | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
MySQL | REPLACE | No | No | Yes | Yes | No | No | No | No |
Oracle Database | Yes | Yes | MINUS | Yes | Yes | Yes | Yes | CONNECT BY | Yes |
PostgreSQL | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
SQLite | REPLACE | Yes | Yes | LEFTのみ | Yes | ? | ? | No | 3.25+[4] |
その他の機能
[編集]その他の機能の比較を以下に示す。
ドメイン | カーソル | トリガ | ストアドプロシージャ | マテリアライズドビュー | |
---|---|---|---|---|---|
4th Dimension | Yes | No | Yes | Yes | No |
Adaptive Server Enterprise | Yes | Yes | Yes | Yes | No |
ALTIBASE | Yes | Yes | Yes | Yes | No |
Apache Derby | No | Yes | Yes | Yes | No |
DB2 | CHECKのみ | Yes | Yes | SQL/PSM, PL/SQL | Yes |
Firebird | Yes | Yes | Yes | PSQL | No |
HSQLDB | ? | No | Yes | Yes | No |
H2 Database | Yes | No | Yes | Yes | No |
Informix Dynamic Server | ? | Yes | Yes | Yes | Yes |
Ingres | Yes | Yes | Yes | Yes | No |
InterBase | Yes | Yes | Yes | Yes | No |
Microsoft Access | Yes | No | No | No | No |
Microsoft Visual FoxPro | No | Yes | Yes | Yes | Yes |
Microsoft SQL Server | Yes | Yes | Yes | Transact-SQL, CLR | Yes 1 |
MySQL | No | Yes | Yes | SQL/PSM | No |
Oracle Database | Yes | Yes | Yes | PL/SQL, Java | Yes |
PostgreSQL | Yes | Yes | Yes | PL/pgSQL 他 | No |
SQLite | No | No | Yes | No | No |
注記 (1): クエリ最適化のサポートは Developer と Enterprise 版のみ。その他の版ではマテリアライズドビューへの直接参照とクエリヒントが必要になる。[4].
パーティショニング
[編集]パーティショニングの比較を以下に示す。
範囲 | ハッシュ | 複合 | リスト | |
---|---|---|---|---|
Adaptive Server Enterprise | Yes | Yes | No | Yes |
ALTIBASE | Yes | Yes | No | Yes |
Apache Derby | No | No | No | No |
IBM DB2 | Yes | Yes | Yes | Yes |
Firebird | No | No | No | No |
HSQLDB | ? | ? | ? | ? |
H2 Database | No | No | No | No |
Informix Dynamic Server | Yes | Yes | Yes | Yes |
Ingres | Yes | Yes | Yes | Yes |
InterBase | No | No | No | No |
Microsoft Access | No | No | No | No |
Microsoft Visual FoxPro | No | No | No | No |
Microsoft SQL Server | Yes | No | No | No |
MySQL | Yes | Yes | Yes | Yes |
Oracle Database | Yes | Yes | Yes | Yes |
PostgreSQL | Yes | No | Yes | Yes |
SQLite | No | No | No | No |
セキュリティ
[編集]通信暗号化 | 総当たり攻撃耐性 | ディレクトリ・サービス連携 | パスワードの複雑さの強制 2 | セキュリティ情報の公開 3 | 非特権ユーザでの実行 | 監査 | 資源制限 | 権限分離 5 | セキュリティ認証 | |
---|---|---|---|---|---|---|---|---|---|---|
Adaptive Server Enterprise | Yes | ? | Yes | Yes | Yes [5] | Yes | Yes | Yes | Yes | EAL4+ |
DB2 | Yes | ? | Yes | Yes | Yes [6] | Yes | Yes | Yes | Yes | EAL4+ 6 |
Firebird | No | Yes [7] | No | Yes | 部分的 [8] | No | No | No | No 7 | No |
H2 Database | Yes | Yes | ? | No | ? | Yes | ? | Yes | Yes | No |
Ingres | No | Yes | Yes | Yes | 部分的 [9] | Yes | Yes | Yes | Yes | No |
MySQL | Yes | No | No | No | 部分的 [10] | Yes | No | No | ? | No |
Microsoft SQL Server | Yes | ? | Yes | Yes | Yes [11] | Yes | Yes | Yes | Yes | EAL1+ 6 |
Oracle Database | Yes | Yes | Yes | Yes | Yes [12] | ? | Yes | Yes | ? | EAL4+ |
PostgreSQL | Yes | No | Yes [13] | Yes [14] | Yes [15] | Yes | No | Yes | No | EAL1 |
SQLite | No | No | No | No | 部分的 [16] | Yes | No | No | No | No |
注記 (2): パスワードの長さの下限や使用する文字の複雑さを強制できるか否か。
注記 (3): セキュリティ情報が公開されており、セキュリティ・アップデートを手に入れられるか否か。リリースノートには記載されていても専用のページを持たない場合は「部分的」とする。
注記 (5): バックアップ、監査、ユーザやデータベースの管理を行う権限を分離できるか否か。
注記 (6): Common Criteria certified product list
注記 (7): Firebird には SYSDBA ユーザと DB 所有者の概念はあるが、バックアップやセキュリティ管理の権限を分離することはできない。
脚注
[編集]- ^ “BEGIN TRANSACTION”. SQL As Understood By SQLite. 2009年9月1日閲覧。
- ^ “SAVEPOINT”. SQL As Understood By SQLite. 2009年9月1日閲覧。
- ^ Petkovic, Dusan (2005). Microsoft SQL Server 2005: A Beginner's Guide. McGraw-Hill Professional. pp. 300. ISBN 9780072260939
- ^ Window Functions
関連項目
[編集]外部リンク
[編集]- Comparison of different SQL implementations against SQL standards. Includes Oracle, DB2, Microsoft SQL Server, MySQL and PostgreSQL. (2007-06-08)
- The SQL92 standard