全国で利用されているDBの分布は以下のようになっているらしいです。
この中でも特に、Oracle, MySQL, PostgreSQLに焦点をあててそれぞれの機能を簡単に比較したので、それをまとめました。
Oracleの主な特徴
- Oracle社が開発・販売する商用RDBMS
行レベルロック
- 複数のユーザーが同一の表の別の行に同時にアクセスするのでパフォーマンスが高い
読み取り一貫性
- ダーティ・リード(更新前の情報と更新後の情報の両方を取得)が発生しないように、更新前データのみを取得する
堅牢性
- Oracle Data Guardと呼ばれる、災害時やデータ破損時などあらゆる障害からデータベースを保護し、サービスの継続を可能にするシステムが存在している
移植性
- Oracle Databaseは全てC言語で書かれいているので、幅広い運用が可能
- 管理や開発の効率化のための様々なツールが利用できる
その他特徴
- トランザクションが自動的に開始する
- DDL(データ定義言語)やDCL(データ制御言語)の実行後に、コミットが自動的に行われる
MySQL, PostgreSQLとの比較
- MySQLは、MySQL ABが開発したRDBMSだが、現在の管理運営はOracle社が行っている
- PostgreSQLは、PostgreSQL Global Development Groupによって開発が行われている
ライセンスの違い
- Oracleは高機能高性能のため圧倒的に高いです
- PostgreSQLはオープンソースソフトウェア
派生したDBの種類
- PostgreSQLとMySQLは派生したデータベースが多く存在し利用されています。
ストレージアーキテクチャの違い
- OracleやMySQLが「更新型」のアーキテクチャなのに比べて、PostgreSQLはストレージの管理方法が「追記型」のため、既存のデータの書き換えを行うことなく空いている領域を使って更新データを追記している
- 更新型 : 対象レコードをそのまま更新
- 追記型 : 既存レコードを保持したまま、新規レコードを追加して参照先を変更
- なお、データ量についてはバキューム機能(VACUUM)により解決しているそう
データベースの機能比較
- データ型や命名規制, 書式等はそれぞれ異なる形式になっているが大きな差は無い
- Oracleはチェック制約があるが、MySQLではトリガーで実装する必要がある
- OracleにはシーケンスがあるがMySQLにはなく、代わりに自動インクリメントで定義
- Oracleはシノニム(オブジェクトに対する別名を定義)があるのに対し、MySQLとPostgreSQLには無い
- OracleはNULLと空文字は同一判定だが、MySQLとPostgreSQLでは別枠
- Oracleはトランザクションは任意単位だが、MySQLとPostgreSQLは基本的にSQL文単位で確定
- その他、実行計画の違いやヒント句の有無など
参考資料
知ってるようで知らない!Oracle(オラクル)とは
2017年データベースの選択は
SQLの観点から「Oracle Database」「PostgreSQL」「MySQL」の特徴を整理しよう
PostgreSQLとMySQL、使うならどっち? データベース専門家が8つの視点で徹底比較!