関係データベース管理システム
関係データベース管理システム(かんけいデータベースかんりシステム)、リレーショナルデータベースマネジメントシステム(テンプレート:Lang-en)とは、エドガー・F・コッドが提唱した関係モデル(リレーショナルモデル)に基づいた、コンピュータのデータベース管理システム (DBMS) である。RDBMS によって構築するデータベースを、関係データベースという。関係モデルにおける「関係 (リレーション)」は、一般には「表 (テーブル)」 と呼ばれることが多い。2007年現在、広く知られていてまた広く使われているデータベースのほとんどは、関係モデルに基づいている。
一定の人々は、RDBMS の簡単な定義を「データを表の形式で永続化し、かつデータ間の関連もまた表の形式で永続化できるDBMS」と考えている。
いくつかの RDBMS では、オブジェクト指向の機能拡張を行っている。このような RDBMS は、オブジェクト関係データベース管理システムと呼ばれる (ORDBMS) 。
RDBMS とされるシステムの多くは、問い合わせ言語として SQL を採用している。
商用の RDBMS としては Oracle Database や IBM DB2 などが、オープンソースの RDBMS としては MySQL や PostgreSQL などが、広く知られている。ただし、これらの 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の調査資料によると、アメリカ合衆国においては、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 に関して言及されている批判と不満を述べる。
- ほとんどの 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 |
参考文献
- テンプレート:Cite book
- C.J.Date、Hugh Darwen、QUIPU LLC 訳 『標準SQLガイド 改訂第4版』 アスキー、1999年 ISBN 978-4-7561-2047-2
脚注
関連項目
外部リンク
- 技術革新とともに 「RDBMSの歴史」 - 日本テラデータ
- A Relational Model of Data for Large Shared Data Banks - エドガー・F・コッドの関係モデルの論文 (1970年)
- Database Debunkings - フェビアン・パスカル、クリス・デイト などの人々がデータベースに関する記事を執筆しているサイト。「リレーショナル」という語は、完全に正確に関係モデルを実装した DBMS に対してのみ使うことが重要であるとする、批判的見解を発信している。
- Database Vendors Directory - RDBMSと関連製品の一覧
- Are SQL Server, DB2, and Oracle really relational? - Itoi Blomgren, Michiko の論文 (2003年)
- A Brief History of IT Management and the RDBMS - ITマネジメントの運用の視点による、RDBMS 技術の歴史の概要
- Analysis of modern DBMS design - データベース業界アナリストによる記事
- RDBMS Alternatives for Web Developers - 2つのRDBMS実装を含む、複数のデータベース技術についての、分析・例示・複数の永続化技法を、説明する
- What is the Difference between DBMS and RDBMS? - DBMSとRDBMSの間の違いに関する誤解について説明する
- ↑ Why SQL is not relational: SQLデータベースのテーブルは Bag であり集合 (Set) ではない、その他参照