MySQLとOracleDBの違い
面接でRDBMSのMySQLとOracleの違いについて聞かれたとき、答えることができず不甲斐ない思いをしたので調べました。
RDBMSとは
RDBMS(Relational DataBase Management System)の略で、関係性構造のDBです。
列と行で表現したデータの塊であり、キー情報をもととに関連テーブルとの紐づけ・データ取得などが行えます。
RDBMSが登場する前は、階層型と呼ばれるデータベースが一般的でありデータの位置をプログラムで特定して発見するというものでした。しかし、データ量などの増加に伴ってこの構成では対応しきれずより効率化されたものとして登場したのがRDBMSです。
RDBMSの特長
「正規化」というテーブルのデータ重複をなくし整合的にデータを取り扱えるように設計した状態にすることを指します。
これによりデータの不整合や喪失を避けることができ、またメンテナンス性の向上にも務めます。一般的なシステム開発においては、このRDBMSは長い間ずっと使われてきました。また主な特徴として以下が挙げられます。
- データベースの整合性(参照整合制約)
- 権限のない利用者による改ざん・データ保護(完全性)
- データ更新を正しく行う、堅牢制(トランザクション,ACID特性)
- データの復元(ロールバック・複製)
- SQL(Strucutured Query Language)が利用できる。
MySQLとは
MySQLはOracle社が提供するOSSです。無償とは思えないほど高性能・多機能なデータベースです。有償版のMySQL Standard Editon, Enterprise Editionなどもありますが、Oracleと比較しても比較的廉価な値段で利用できます。
MySQLの特長
MySQLは無償のRDBMSとしては世界で一番利用されています。検索のスピードが拘束で機能も優れておりYahoo!, Googleなどでも利用されています。
また、MySQLは拡張性と柔軟性が高いRDBMSであり小規模から大規模開発まで幅広く対応しています。またMySQLは環境を問わず稼働することができLinux, Mac, Windowsなど動作します。
また、MySQLには独自のストレージエンジンが採用されており、CRUD機能など用途に応じて変更できます。(例えばメモリ上にテーブルを配置する、ダミーテーブルを使用するなど)
また、レプリケーション機能としてサーバ・データを1つまたは複数のデータベースサーバに複製することができ負荷分散、バックアップが行えます。
Oracleとは
Oracle社が提供する優勝のパッケージ製品です。エディションとしてスターンダードエディションやエンタープライズエディションなど様々なバージョンや機能を提供しています。
Oracleの特長
Oracleはエディションによって性能が異なります。
- StandardEdition・・・Oracleの標準機能を搭載したDBで、導入価格は63万円、年間保守は13万円程度です。開発環境用として選定されることありますが業務へ導入する場合ほぼEE一択になるかと思います。
- EnterpriseEdition・・・企業向けのエディションであり導入で500万円、年間捕手で100万円以上かかります。Data Guard, 増分バックアップ、結果キャッシュなどEnterpriseEditionのみの多数の機能があります。
他には、シノニム(オブジェクト名の別名設定)、シーケンス機能があります。これらはMySQLにはありません。
また、チェック制約(データを追加するときに値が指定した条件かどうかチェックする)がありますがこれもMySQLにはありません。
また、NULLと空文字は同一判定だがMySQLでは別枠
他トランザクションを任意単位だがMySQLはSQL分単位で確定となる。実行計画やヒント句などもOracle固有の機能
機能面以外でも、やはり有償パッケージであるためサポートなど手厚いというところも特徴でしょうか。
その他RDBMS
主要なものは以下の通りです。
-
SQL Server・・・Microsoftが提供する有償のパッケージ製品、MS製品との親和性が強いのでMS信者 Microsoftを優先して使用する企業などでよく利用されます。
今後のRDBMSについて
分散処理技術であるHadoopや、NoSQLなどの正規化を利用しない技術が続々と登場しています。RDBMS一択ではなく、実現したい目的・予算に沿って選定していく必要があります。
そのためにも各機能をしっかりと把握して取り組む必要があります。
単純な処理であればNoSQLかもしれませんが、大規模開発・複雑な処理を行う場合はRDBMS活躍の場はなくならないと思います。
参考
【超初心者向け】MySQLとは?どこよりもわかりやすく解説 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト