2018年03月19日
DBの種類
@ MySQL
現在、世界中で最もよく利用されているオープンソースのデータベースのひとつです。
高速で使いやすいことが特徴です。
開発元
MySQL AB社が主体となって開発した。
特徴
PostgreSQLと同様、各種開発言語用のAPIが用意されている。
同時に複数人が利用するようなWebアプリケーションなどのシステムに適している。
用途・実績
オープンソースCMSや個人向けレンタルサーバでも多く採用されていて、
個人ユースでも広く利用されている。
ライセンス
無償のCommunity Server、有償のEnterprise Serverという2つのライセンス形態がある。
メリット
MySQLは非商用利用なら無償で入手して使える。
商用利用の場合、ライセンスの購入が必要(デュアルライセンス)
マルチユーザ対応であるため、複数の人が同時に利用するWebアプリケーションのようなシステムに使うデータベースとして適している。
レンタルサーバのデータベースとして使われていることが多く、数千万から数億件のレコードを取り扱っている事例も存在する
YahooやGoogleなどのサイトでも使用されている
シンプルで速く、PHPなどとの相性が良い分、弱点としてやや機能的な面で不十分さがあるとの指摘も
デメリット
文字列の連結に+演算子や||演算子を使うことができない。文字列の連結にはCONCAT()を使う
FULL JOIN句を利用できない
UNION以外の集合演算(EXCEPT, INTERSECT)に対応していない
結果表が凸凹になるような集計関数の利用は許される。不足する列は自動的に補われるが、その際の値は不定。
副問い合わせではLIMIT句を利用できない。
DDLやDCLが実行されると、バックグラウンドでコミットが行われるため、ロールバックでキャンセルできない
LOCK TABLE文の代わりにLOCK TABLES文を使う
テーブル定義時にAUTO_INCREMENT指定を列に加える事で連番を振ることができる
MySQLダウンロードサイト
https://www.mysql.com/jp/downloads/
A PostgreSQL
開発元
カリフォルニア大学のプロジェクトにより開発された。
特徴
商用のRDBMSに匹敵するほど高性能で、
企業システム用途での利用を意識して強化が進められている。
用途・実績
特に日本で、企業システムに使用されている。
ライセンス
BSDライセンス
PostgreSQLは、MySQLと双璧をなすオープンソースのRDBMS製品です。
オープンソース製品の中では機能が豊富かつ標準SQLへの準拠度が比較的高い。
メリット
標準SQLへの準拠度が高い
CPU数が増えた場合のスケーラビリティが高く、接続数が増えても性能が維持される
マルチバイト対応
PostGISというGIS(地理情報システム)を扱うアドオンソフトがあり、使い勝手が比較的良い
デメリット
テーブル名などは大文字小文字を区別しない
大文字を使いたい場合は"を使用する必要がある
DDL文もトランザクション処理の一部として管理されるため、コミット前であればロールバックによりキャンセルできる
テーブル定義時にAUTO_INCREMENT指定を列に加える事で連番を振ることができる
B SQLite
開発元
D. Richard Hipp氏らによって開発された。
特徴
軽量なRDBMSで、大規模なシステムには不向き。
データの保存に単一のファイルのみを使用していて、
APIは単純にライブラリを呼び出すだけというシンプルな構成になっている。
用途・実績
Android、iOSで標準搭載されている。
ライセンス
パブリックドメイン
SQLiteはアプリケーションの一部に組み込まれて動作するタイプのオープンソースのRDBMS。
大規模利用には向かず、多くのDBMSがサポートする機能や関数のうちから、SQLiteがサポートしていないものある。
一方で、その手軽さと高速な動作から中小規模の開発で活用されている。
メリット
著作権を放棄しパブリックドメインに帰属
サーバではなくライブラリ
データ型を指定する必要がない
デメリット
列を定義する際、データ型を特に指定しなくても良い
集計関数を用いた検索の結果が凸凹になっても良い
ALL演算子やANY演算子が使用できない
RIGHT JOIN句とFULL JOIN句が利用できない
DDL文はトランザクション処理の一部として管理されるため、コミット前であればロールバックによりキャンセルできる
分離レベルの指定にSET TRANSACTION ISOLATOIN LEVELを使えず、4つの基本的な分離レベルも使えない。
ロックのコントロールは、BEGIN文の後ろにDEFERRED, IMEDEATE, EXCLUSIVEと指定することで行う
TRUNCATE TABLE文はサポートされない
ユーザーやアクセス権限の概念がなく、GRANT文やREVOKE文も使用できない
C Oracle DB
非常に高機能なDBMS。
過去のバージョンの言語仕様に対応するため、標準SQLとは互換性のない独自構文の利用が求められることもある。
メリット
エスカレーションの発生しない「行レベル * ロック」
読み取り一貫性
企業システムのため、さまざまなニーズを満たす拡張機能がある
デメリット
日本語を含むマルチバイトのテーブル名や列名を使う場合、正式にはダブルクオーテーションマークでくくらなければならない
ALL演算子やANY演算子は副問い合わせと組み合わせなくても利用が可能
表に別名を付ける場合、ASの記述は不要
一部の演算子の利用がWHERE句内に限られるため、選択列リストなどで利用できない場合がある。
BEGIN文を使わずとも自動的にトランザクションが開始する
DDLやDCLの実行は、その直後に自動的にコミットされる
ALTER TABLE文では、ADDやDROP以降の内容を丸括弧でくくる必要がある
CREATE SEQUENCE文でシークエンスを作成し、連番を振る。
作成直後のシーケンスは値を持っていないため、CURRVALで値を得る前にNEXTVALを実行する必要がある。
D SQL Server
マイクロソフト系システム開発で幅広く利用されている。
関数や型の種類、ロック機構などに独自性がいくらかみられる。
メリット
Microsoft Windowsと親和性が高い
デメリット
文字列の連結に||演算子やCONCAT()を利用できず、+演算子を用いる
LIMIT句が利用できない代わりに、SELECT TOP 10 列名 FROM ~のようにTOPを利用する
トランザクションの開始にはBEGIN TRANSACTION文を使う
DDLやDCLの実行はトランザクションの一部として扱われ、コミットする前であればロールバックすることができる
CREATE SEQUENCE文でシーケンスを作成できる他、テーブル定義時にIDENTITY指定を列に加える事で連番を振ることができる
E DB2
DB2は大規模システム構築などで世界的に使われている商用RDBMS。
Oracle DB同様に長い歴史を豊富な機能を有する。
一部に独自構文も見られる。
メリット
IBMで初めて登場したリレーショナルデータベース用のミドルウェア
IBMはリレーショナルデータベースの概念を世界で初めて提唱したが、製品の出荷はオラクルが先立った
メインフレーム用からパーソナル * コンピュータ用までのマルチプラットフォーム対応
デメリット
LIMIT句がデフォルトでは利用できない代わりに、FETCH文を使った指定ができる
SELECT文でFROM句は省略できず、SYSIBM.SYSDUMMY1テーブルを使う。
BEGIN文を使わずとも自動的にトランザクションが開始する。
DDLやDCLの実行はトランザクションの一部として扱われ、コミットする前であればロールバックすることができる。
ALTER TABLE文で列のDROPを行うことができない。
TRUNCATE TABLE文が使えない代わりに、ALTER TABLE文でACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE指定を行う
F H2 Database
H2 DatabaseはJavaで実装されたオープンソースRDBMSで、その意味でApache Derbyと同じ。
単独で動作する他、SQLiteのように組み込みで動作させることもできる。
それによって、テストや中小規模での利用が急速に広まっている。
メリット
組み込みモードでも、クライアント * サーバーモードでも動作する
サイズが小さく、約1MB
インメモリデータベース、暗号化データベースを作れる
クラスタリングや分散トランザクションに対応している
デメリット
FULL JOIN句を利用することができない
DDLはトランザクションの一部として実行できず、ロールバックによってキャンセルできない
分離レベルの指定にSET TRANSACTION ISOLATOIN LEVELを使えず、4つの基本的な分離レベルも使えない。
SET MOTE文を用いると、DB2, Derby, SQL Server, MySQL, Oracle DB, PostgreSQLなどをエミュレーションするよう動作を変更できる。
G Apache Derby
HS Database同様、Javaで実装されたオープンソースのRDBMS。
JDK(Java開発キット)に標準添付されている。
小規模Javaアプリケーションへの組み込みなどで活用されている。
細部において、他のDBMSや標準SQLとの互換性に欠ける実装が見受けられる。
メリット
IBMから寄贈されたCloudscapeのソースコードを元に、Apacheソフトウェア財団によって開発が進められている
ロゴはダービー帽に掛けている
デメリット
SELECT文の選択列リストに、NULLを記述することが許されない
IN演算子のパラメータの中に、NULLを記述することが許されない
トランザクションは自動的に開始されるため、BEGIN句は不要
SELECT文においてFROM句を省略することが許されないため、SYSIBM, SYSDUMMY1テーブルなどのダミーテーブルを利用する
DDLはトランザクションの一部として実行され、コミット前であればロールバックによってキャンセルできる
参考URL
https://lets.postgresql.jp/documents/tutorial/rdbms-hikaku/1
https://maku77.github.io/java/swt/difference.html
現在、世界中で最もよく利用されているオープンソースのデータベースのひとつです。
高速で使いやすいことが特徴です。
開発元
MySQL AB社が主体となって開発した。
特徴
PostgreSQLと同様、各種開発言語用のAPIが用意されている。
同時に複数人が利用するようなWebアプリケーションなどのシステムに適している。
用途・実績
オープンソースCMSや個人向けレンタルサーバでも多く採用されていて、
個人ユースでも広く利用されている。
ライセンス
無償のCommunity Server、有償のEnterprise Serverという2つのライセンス形態がある。
メリット
MySQLは非商用利用なら無償で入手して使える。
商用利用の場合、ライセンスの購入が必要(デュアルライセンス)
マルチユーザ対応であるため、複数の人が同時に利用するWebアプリケーションのようなシステムに使うデータベースとして適している。
レンタルサーバのデータベースとして使われていることが多く、数千万から数億件のレコードを取り扱っている事例も存在する
YahooやGoogleなどのサイトでも使用されている
シンプルで速く、PHPなどとの相性が良い分、弱点としてやや機能的な面で不十分さがあるとの指摘も
デメリット
文字列の連結に+演算子や||演算子を使うことができない。文字列の連結にはCONCAT()を使う
FULL JOIN句を利用できない
UNION以外の集合演算(EXCEPT, INTERSECT)に対応していない
結果表が凸凹になるような集計関数の利用は許される。不足する列は自動的に補われるが、その際の値は不定。
副問い合わせではLIMIT句を利用できない。
DDLやDCLが実行されると、バックグラウンドでコミットが行われるため、ロールバックでキャンセルできない
LOCK TABLE文の代わりにLOCK TABLES文を使う
テーブル定義時にAUTO_INCREMENT指定を列に加える事で連番を振ることができる
MySQLダウンロードサイト
https://www.mysql.com/jp/downloads/
A PostgreSQL
開発元
カリフォルニア大学のプロジェクトにより開発された。
特徴
商用のRDBMSに匹敵するほど高性能で、
企業システム用途での利用を意識して強化が進められている。
用途・実績
特に日本で、企業システムに使用されている。
ライセンス
BSDライセンス
PostgreSQLは、MySQLと双璧をなすオープンソースのRDBMS製品です。
オープンソース製品の中では機能が豊富かつ標準SQLへの準拠度が比較的高い。
メリット
標準SQLへの準拠度が高い
CPU数が増えた場合のスケーラビリティが高く、接続数が増えても性能が維持される
マルチバイト対応
PostGISというGIS(地理情報システム)を扱うアドオンソフトがあり、使い勝手が比較的良い
デメリット
テーブル名などは大文字小文字を区別しない
大文字を使いたい場合は"を使用する必要がある
DDL文もトランザクション処理の一部として管理されるため、コミット前であればロールバックによりキャンセルできる
テーブル定義時にAUTO_INCREMENT指定を列に加える事で連番を振ることができる
B SQLite
開発元
D. Richard Hipp氏らによって開発された。
特徴
軽量なRDBMSで、大規模なシステムには不向き。
データの保存に単一のファイルのみを使用していて、
APIは単純にライブラリを呼び出すだけというシンプルな構成になっている。
用途・実績
Android、iOSで標準搭載されている。
ライセンス
パブリックドメイン
SQLiteはアプリケーションの一部に組み込まれて動作するタイプのオープンソースのRDBMS。
大規模利用には向かず、多くのDBMSがサポートする機能や関数のうちから、SQLiteがサポートしていないものある。
一方で、その手軽さと高速な動作から中小規模の開発で活用されている。
メリット
著作権を放棄しパブリックドメインに帰属
サーバではなくライブラリ
データ型を指定する必要がない
デメリット
列を定義する際、データ型を特に指定しなくても良い
集計関数を用いた検索の結果が凸凹になっても良い
ALL演算子やANY演算子が使用できない
RIGHT JOIN句とFULL JOIN句が利用できない
DDL文はトランザクション処理の一部として管理されるため、コミット前であればロールバックによりキャンセルできる
分離レベルの指定にSET TRANSACTION ISOLATOIN LEVELを使えず、4つの基本的な分離レベルも使えない。
ロックのコントロールは、BEGIN文の後ろにDEFERRED, IMEDEATE, EXCLUSIVEと指定することで行う
TRUNCATE TABLE文はサポートされない
ユーザーやアクセス権限の概念がなく、GRANT文やREVOKE文も使用できない
C Oracle DB
非常に高機能なDBMS。
過去のバージョンの言語仕様に対応するため、標準SQLとは互換性のない独自構文の利用が求められることもある。
メリット
エスカレーションの発生しない「行レベル * ロック」
読み取り一貫性
企業システムのため、さまざまなニーズを満たす拡張機能がある
デメリット
日本語を含むマルチバイトのテーブル名や列名を使う場合、正式にはダブルクオーテーションマークでくくらなければならない
ALL演算子やANY演算子は副問い合わせと組み合わせなくても利用が可能
表に別名を付ける場合、ASの記述は不要
一部の演算子の利用がWHERE句内に限られるため、選択列リストなどで利用できない場合がある。
BEGIN文を使わずとも自動的にトランザクションが開始する
DDLやDCLの実行は、その直後に自動的にコミットされる
ALTER TABLE文では、ADDやDROP以降の内容を丸括弧でくくる必要がある
CREATE SEQUENCE文でシークエンスを作成し、連番を振る。
作成直後のシーケンスは値を持っていないため、CURRVALで値を得る前にNEXTVALを実行する必要がある。
D SQL Server
マイクロソフト系システム開発で幅広く利用されている。
関数や型の種類、ロック機構などに独自性がいくらかみられる。
メリット
Microsoft Windowsと親和性が高い
デメリット
文字列の連結に||演算子やCONCAT()を利用できず、+演算子を用いる
LIMIT句が利用できない代わりに、SELECT TOP 10 列名 FROM ~のようにTOPを利用する
トランザクションの開始にはBEGIN TRANSACTION文を使う
DDLやDCLの実行はトランザクションの一部として扱われ、コミットする前であればロールバックすることができる
CREATE SEQUENCE文でシーケンスを作成できる他、テーブル定義時にIDENTITY指定を列に加える事で連番を振ることができる
E DB2
DB2は大規模システム構築などで世界的に使われている商用RDBMS。
Oracle DB同様に長い歴史を豊富な機能を有する。
一部に独自構文も見られる。
メリット
IBMで初めて登場したリレーショナルデータベース用のミドルウェア
IBMはリレーショナルデータベースの概念を世界で初めて提唱したが、製品の出荷はオラクルが先立った
メインフレーム用からパーソナル * コンピュータ用までのマルチプラットフォーム対応
デメリット
LIMIT句がデフォルトでは利用できない代わりに、FETCH文を使った指定ができる
SELECT文でFROM句は省略できず、SYSIBM.SYSDUMMY1テーブルを使う。
BEGIN文を使わずとも自動的にトランザクションが開始する。
DDLやDCLの実行はトランザクションの一部として扱われ、コミットする前であればロールバックすることができる。
ALTER TABLE文で列のDROPを行うことができない。
TRUNCATE TABLE文が使えない代わりに、ALTER TABLE文でACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE指定を行う
F H2 Database
H2 DatabaseはJavaで実装されたオープンソースRDBMSで、その意味でApache Derbyと同じ。
単独で動作する他、SQLiteのように組み込みで動作させることもできる。
それによって、テストや中小規模での利用が急速に広まっている。
メリット
組み込みモードでも、クライアント * サーバーモードでも動作する
サイズが小さく、約1MB
インメモリデータベース、暗号化データベースを作れる
クラスタリングや分散トランザクションに対応している
デメリット
FULL JOIN句を利用することができない
DDLはトランザクションの一部として実行できず、ロールバックによってキャンセルできない
分離レベルの指定にSET TRANSACTION ISOLATOIN LEVELを使えず、4つの基本的な分離レベルも使えない。
SET MOTE文を用いると、DB2, Derby, SQL Server, MySQL, Oracle DB, PostgreSQLなどをエミュレーションするよう動作を変更できる。
G Apache Derby
HS Database同様、Javaで実装されたオープンソースのRDBMS。
JDK(Java開発キット)に標準添付されている。
小規模Javaアプリケーションへの組み込みなどで活用されている。
細部において、他のDBMSや標準SQLとの互換性に欠ける実装が見受けられる。
メリット
IBMから寄贈されたCloudscapeのソースコードを元に、Apacheソフトウェア財団によって開発が進められている
ロゴはダービー帽に掛けている
デメリット
SELECT文の選択列リストに、NULLを記述することが許されない
IN演算子のパラメータの中に、NULLを記述することが許されない
トランザクションは自動的に開始されるため、BEGIN句は不要
SELECT文においてFROM句を省略することが許されないため、SYSIBM, SYSDUMMY1テーブルなどのダミーテーブルを利用する
DDLはトランザクションの一部として実行され、コミット前であればロールバックによってキャンセルできる
参考URL
https://lets.postgresql.jp/documents/tutorial/rdbms-hikaku/1
https://maku77.github.io/java/swt/difference.html
【このカテゴリーの最新記事】
-
no image
-
no image