関係データベース管理システム

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

関係データベース管理システム(かんけいデータベースかんりシステム)、リレーショナルデータベースマネジメントシステム英語: relational database management system、略称:RDBMS)とは、エドガー・F・コッドが提唱した関係モデル(リレーショナルモデル)に基づいた、コンピュータデータベース管理システム (DBMS) である。RDBMS によって構築するデータベースを、関係データベースという。関係モデルにおける「関係 (リレーション)」は、一般には「表 (テーブル)」 と呼ばれることが多い。2007年現在、広く知られていてまた広く使われているデータベースのほとんどは、関係モデルに基づいている。

一定の人々は、RDBMS の簡単な定義を「データをの形式で永続化し、かつデータ間の関連もまた表の形式で永続化できるDBMS」と考えている。

いくつかの RDBMS では、オブジェクト指向の機能拡張を行っている。このような RDBMS は、オブジェクト関係データベース管理システムと呼ばれる (ORDBMS) 。

RDBMS とされるシステムの多くは、問い合わせ言語として SQL を採用している。

商用の RDBMS としては Oracle DatabaseIBM DB2 などが、オープンソースの RDBMS としては MySQLPostgreSQL などが、広く知られている。ただし、これらの DBMS を 真のRDBMS と呼んで良いのかどうかについては、後述のとおり、議論の対象となっている。

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) と呼ばれる。

RDBMSの用語の歴史[編集]

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 などが挙げられる。

RDBMSの用語の現在[編集]

どのような データベース管理システム (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の市場シェア[編集]

商用RDBMSの市場は、IDCの調査資料によると、アメリカ合衆国においては、OracleIBM/InformixMicrosoftSybaseTeradata の5社が、市場 (売上高) の約9割を占めている。

オープンソースのRDBMSとしては近年では、PostgreSQLMySQLFirebird などが広く使われるようになっている。

ガートナーの2008年の調査結果は以下のとおりである。

RDBMSに関する批判[編集]

現在の RDBMS に関して言及されている批判と不満を述べる。

  • ほとんどの RDBMS のベンダは SQL 以外のオプショナルなデータベース言語を提供することを模索していない。多くの人々は、SQL にはある程度の改定もしくは抜本的な改定が必要だと考えている。SQL は開発されてから約30年もの歴史を経ており、また SQL はそもそも関係モデルに準拠していない[1]
  • 広く使われている RDBMS の多くは静的な型づけを採用している。一定の人々は、動的型づけされた列 (カラム) もしくはオプショナルな列を採用すれば、プロトタイピングや、市場で素早く敏捷であることが重要であるような分野において、有用であると思っている。(オプショナルな列を実装しているいくつかのデータベース管理システムでは、行 (組、レコード) に指定された列が無い場合はnullあるいは空白を返すことによって実装している)
  • 広く使われ過ぎている。すべてのデータモデルが RDBMS を必要とするわけではない。しかし多くの開発者はデータベース管理システム (DBMS) を採用する際に、とにかく RDBMS を採用し利用する傾向がある。結果として、RDBMS ではない DBMS のほとんどは、開発時間と資金と革新が欠乏している。
  • 一般的なRDBMSでは構造的に、高負荷時や同時アクセスが発生した場合の性能が保証されないという欠陥がある。多くのシステムでは、画面の切り替わりが8秒以内、バッチの実行時間が4時間以内といったような性能保証を求められるが、データを格納しているRDBMSに性能保証の機構がないため、システム全体で確実な性能保証ができない要因となっている。

RDBMSの実装[編集]

商用[編集]

RDBMS実装 開発元
ALTIBASE ALTIBASE Corporation
Oracle Database オラクル
Tibero ティーマックスソフト
DB2 IBM
Informix Dynamic Server (IDS) IBM
Adaptive Server Enterprise (ASE) Sybase
Microsoft SQL Server マイクロソフト
InterBase エンバカデロ・テクノロジーズ
Symfoware Server 富士通
HiRDB 日立製作所
HiRDB on XDM (XDM/RD) 日立製作所
RIQSⅡ V2 日本電気 (NEC)
Teradata テラデータ

オープンソース[編集]

RDBMS実装 開発元
Apache Derby Apache DB プロジェクト (Apacheソフトウェア財団)
Firebird Firebirdプロジェクト
H2 Database Thomas Mueller
HSQLDB Thomas Mueller
Ingres Ingres Corp.
MariaDB Monty Program Ab
mSQL Minerva Network Management Environment
MySQL オラクル
PostgreSQL PostgreSQL Global Development Group
SQLite D. Richard Hipp
VoltDB Michael Stonebraker

参考文献[編集]

脚注[編集]

[ヘルプ]
  1. ^ Why SQL is not relational: SQLデータベースのテーブルは Bag であり集合 (Set) ではない、その他参照

関連項目[編集]

外部リンク[編集]