関係データベース管理システム
関係データベース管理システム(かんけいデータベースかんりシステム)またはリレーショナルデータベースマネジメントシステム(relational database management system、略称:RDBMS)は、関係データベース (RDB) の管理システムである。RDB がデータベースの種類を示すのに対して、RDBMS は RDB の実装を示す。標準問い合わせ言語として SQL を用いたアクセスを行うため、相対する言葉として RDBMS 以外のデータベースを意味する NoSQL (Not only SQL) がある。
2007年の時点では、広く知られていてまた広く使われているデータベースのほとんどは関係データベースであったが、その後NoSQLが発展したため必ずしもそうとは言えなくなっている。
SQLを扱うRDBMSが表を使って演算を行う事から、全く異なる用途の表計算ソフトと間違えられる事もあるが、RDBMSでは、データの形式は表に限定されておらず、表計算ソフトのように見た目に分かりやすい表を作る事が目的ではない。あくまでも、必要なデータを必要な時に素早く引き出して他のソフトウェアに提供する事が目的である。
関係データベースをオブジェクトデータベースと融合させたオブジェクト関係データベースなどといったものもある。その管理システムはオブジェクト関係データベース管理システムなどと呼ばれる (ORDBMS)。
商用のRDBMSとしてはOracle DatabaseやIBM DB2などが、オープンソースのRDBMSとしてはMySQLやPostgreSQLなどが、広く知られている。ただし、これらのDBMSを 真のRDBMSと呼んで良いのかどうかについては、後述のとおり、議論の対象となっている。
以下にRDBMSの主な機能を示す。
データベース言語は、DBMSに対してさまざまな指示を伝えるための言語である。概念的には、データ定義言語 (DDL)、データ操作言語 (DML)、データ制御言語 (DCL) の構成要素からなる。データ定義言語 (DDL) はデータベースの構造を定義する。データ操作言語 (DML) はデータベースに対する検索や更新などの操作を行う。データ制御言語 (DCL) はデータに対するアクセス制御を行う。RDBMSでは、関係モデルに基づいたデータベース言語を備えている。RDBMSのデータ操作言語は、関係モデルの関係代数と関係論理に基づいている。RDBMSとされるシステムの多くは、データベース言語SQLを備えている。
データベースを格納する記憶装置を変更する際、それに伴ってRDBMSにアクセスする方法を変更する必要はない。RDBMSにアクセスする利用者やアプリケーションソフトウェアに対して、RDBMSは記憶装置の変更を隠蔽することができる。
RDBMSでは導出関係 (ビュー) により論理的データ独立性を支援する。導出関係とは、関係代数もしくは関係論理の式に名前を付けたものである。導出関係は関係の一種であり、ビューとも呼ばれる。なおこれに対しSQL CREATE TABLE文で定義するような基本的な関係(テーブル)を基底関係という。また導出関係を使うことで、複雑な検索や更新などのデータ操作を簡略化して記述することができる。
データ完全性は、不正なデータが登録されることや、不正なデータに更新されることを防ぐことをいう。RDBMSでは、定義域・データ型・一意性制約 (ユニーク制約)・参照整合性制約・一般制約(CHECK制約)・トリガなどの機能を備えている。
ACID特性に基づいたトランザクション処理を行う。複数のユーザが同時に同一のデータを参照・更新した場合でも、矛盾なく正常に処理をこなす。
ほとんどのRDBMSではセキュリティ(機密保護)に関して任意アクセス制御もしくは強制アクセス制御を提供し、さらに一部のRDBMSではデータの暗号化機能も提供する。多くのRDBMSでは任意アクセス制御を採用している(SQLでは任意アクセス制御のみを規定している)。SQLの任意アクセス制御においては、GRANT文により、利用者 (認証識別子) を指定して、その利用者がアクセスできるオブジェクト(関係など)、およびアクセスの種類(検索、更新など)を定義する。データ暗号化機能では、RDBMSを迂回した不正なデータアクセスに対する対策として、RDBMSで管理・送受信するデータを暗号化する。
トランザクション障害、システム障害、記憶媒体の障害からの復旧を行う。
データ操作言語 (DML) による、高水準な関係代数や関係論理で記述されたデータ処理要求を、低水準な手続きに最適化(クエリ最適化)して実行する。
分散データベースは、ネットワークで接続された複数のコンピュータを使い、それぞれのコンピュータ上でDBMSのプロセスを協調させて動かし、全体として仮想的に一つのDBMSを実現する技術である。複数のコンピュータを使うため、可用性や処理性能を向上させることができる。クライアント・サーバのデータベースは、分散データベースの簡単で特殊な形態と位置づけることができる。
いくつかのRDBMSでは、オブジェクト指向の機能拡張を行っている。
このようなRDBMSは、オブジェクト関係データベース管理システム (ORDBMS) と呼ばれる。
1969年、エドガー・F・コッドは画期的な論文を発表してRDBMSを提唱した。この論文は1970年に、ACMの学術誌に「A Relational Model of Data for Large Shared Data Banks(大規模共有データバンクのデータ関係モデル)」として掲載された。コッドは、この論文とその後に発表した論文で、「リレーショナル」(「関係に基づく」)の概念とは何かを定義した。
コッドが提唱したRDBMSが備えるべき条件として、「コッドの12の規則」が有名である。しかし関係モデルの初期の実装の多くは、コッドの12の規則の全てを満たすには至らなかった。そのためRDBMSという用語は、当初と比べてより広い意味でのデータベースシステムを対象として使われることが、多くなってきている。
現在では、RDBMSという用語は、次のようなシステムに対して使われている。
システムの利用者が、データをいくつかの関係 (複数の行と複数の列からなる表) の形で、扱うことができるシステム
システムの利用者が、表形式のデータを参照・更新する手段として、関係演算 (制限、射影、結合、和などの関係代数や関係論理) を、使うことができるシステム
関係モデルを比較的正確に実装した最初のRDBMSは、ミシガン大学で実装されたMicro DBMS (1969) と、PeterleeにあるIBM UK Scientific Centreで実装されたIS1 (1970-1972) およびその後継システムPRTV (1973–79) であった。RDBMSとして販売された最初のシステムは、1978年からリリースされたMultics Relational Data Storeであった。その他にはIngres(マイケル・ストーンブレーカーが中心となってカリフォルニア大学バークレー校で開発された)やIBM BS12などが挙げられる。
どのような データベース管理システム (DBMS) が、「リレーショナル」DBMSといえるのか(もしくはいえないのか)については、議論の対象となっている。データベースに携わる人の多くに受け入れられたRDBMSの定義は、まだできていない。
一部では、複数の行と複数の列からなる表の構造としてデータを扱うことができさえすれば、関係モデルに厳密に準拠していなくとも、RDBMSとしての基準を満たすとしている。この見解においてRDBMSの基準を満たすとされるDBMSの多くは、コッドの12の規則のうちいくつかを満たす。しかし広く知られているDBMSのほとんどは、厳密に関係モデルに準拠しているわけではなく、コッドの12の規則の全てを満たすには至っていない。
別の見解では、コッドの12の規則の全てを満たすには至っていないDBMS(もしくはクリス・デイト、ヒュー・ダーウェンにより提唱された関係モデルの見解を満たすには至っていないDBMS)は、RDBMSとはいえないとしている。この見解は、データベースの理論家やコッドの考え方を支持する人に共有されている。主な論者は、エドガー・F・コッド、クリス・デイト、ヒュー・ダーウェンである。この見解によれば、DBMSの多くが「真にリレーショナル」とはいえないことになる。この見解をとるなら、SQLを使ってデータを参照・更新するDBMSの全てが、RDBMSとはいえない。こうした見解をもつ人は、コッドの12の規則の全てを満たしていないDBMSを、「疑似リレーショナルデータベースマネジメントシステム」(PRDBMS) と呼んでいる。この人々は、コッドの12の規則を全て満たすRDBMSを「真のリレーショナルデータベースマネジメントシステム」(TRDBMS) と呼ぶ。
現在は、RDBMSの選定を行う際は、コッドの12の規則の全てを満たすという要件は考慮されない。情報技術 (IT) を担う組織におけるデータ管理を担う人々にとってのTCO(総保有コスト)が、とても重視される。一部の人々は、このような現状は不幸であり皮肉であると考えている。なぜなら、コッドの12の規則の有用性を確信している人の見解では、この RDBMS としての基準を正確に満たすことにより、DBMSの信頼性と一貫性と生産性と処理性能を高めることができ、それゆえTCOの抑制に大きく役立つはずであった。RDBMSの基準を正確に満たすことによるこのような利点は、実際に、DBMSを真のRDBMSとしようと努めている人々にとって、とても大きな動機づけとなっている。
現在、RDBMSの実装のほとんどが、データベース言語としてSQLを採用している。しかしSQLに代替するデータベース言語(データベース言語仕様Dに基づいたTutorial Dなどのデータベース言語)が提唱され、実装が行われている。ただしSQLに代替するデータベース言語を採用し実装している商用のRDBMSは非常に少ない。
商用RDBMSの市場は、IDCの調査資料によると、アメリカ合衆国においては、Oracle、IBM/Informix、Microsoft、Sybase、Teradataの5社が、市場(売上高)の約9割を占めている。
オープンソースのRDBMSとしては近年では、PostgreSQL、MySQL、Firebirdなどが広く使われるようになっている。
ガートナーの2008年の調査結果は以下のとおりである。
Oracle Database - 70%
Microsoft SQL Server - 68%
MySQL (Oracle Corporation) - 50%
IBM DB2 - 39%
IBM Informix - 18%
SAP Sybase Adaptive Server Enterprise - 15%
SAP Sybase IQ - 14%
Teradata - 11%
現在のRDBMSに関して言及されている批判と不満を述べる。
ほとんどのRDBMSのベンダはSQL以外のオプショナルなデータベース言語を提供することを模索していない。多くの人々は、SQLにはある程度の改定もしくは抜本的な改定が必要だと考えている。SQLは開発されてから約30年もの歴史を経ており、またSQLはそもそも関係モデルに準拠していない。
広く使われているRDBMSの多くは静的な型づけを採用している。一定の人々は、動的型づけされた列(カラム) もしくはオプショナルな列を採用すれば、プロトタイピングや、市場で素早く敏捷であることが重要であるような分野において、有用であると思っている(オプショナルな列を実装しているいくつかのデータベース管理システムでは、行(組、レコード)に指定された列が無い場合はnullあるいは空白を返すことによって実装している)。
広く使われ過ぎている。すべてのデータモデルがRDBMSを必要とするわけではない。しかし多くの開発者はデータベース管理システム (DBMS) を採用する際に、とにかくRDBMSを採用し利用する傾向がある。結果として、RDBMSではないDBMSのほとんどは、開発時間と資金と革新が欠乏している。
一般的なRDBMSでは構造的に、高負荷時や同時アクセスが発生した場合の性能が保証されないという欠陥がある。多くのシステムでは、画面の切り替わりが8秒以内、バッチの実行時間が4時間以内といったような性能保証を求められるが、データを格納しているRDBMSに性能保証の機構がないため、システム全体で確実な性能保証ができない要因となっている。