データベース管理システム
データベース管理システム(データベースかんりシステム、DBMS; テンプレート:Lang-en-short)とは、コンピュータのデータベースを構築するために必要なデータベース運用、管理のためのシステム、およびそのソフトウェアのことである。データベースマネジメントシステムとも呼ばれる。
概要
かつては、CODASYLが提唱したネットワーク型データモデルのDBMSや、階層型データモデルのDBMS、あるいは初期の非力なパーソナルコンピュータなどではカード型データモデルのDBMS(いわゆる簡易データベースソフト)などが幅広く利用されていたが、近年では関係モデル(リレーショナルデータモデル)を扱う関係データベース管理システム(RDBMS)が主流である。
また、関係データベース管理システムに、利用者が独自のデータ型や関数を拡張可能なオブジェクト関係データベース(ORDBMS)や、オブジェクト指向プログラミング言語との親和性が高いオブジェクトデータベース(ODBMS)、データモデルにXMLを採用したXMLデータベース(XML DB)などが開発され、利用が広まっている。
ネットワーク型データモデルのDBMSや、階層型データモデルのDBMSは実装の軽量性の利から早くから広まっていたが、アプリケーションソフトウェア、データの論理的構造、データの物理的構造の三者が密接に結びつき、柔軟性に欠けるという欠点があった。また、最適化の方法論がクエリ(検索質問)を作るプログラマの力量に依存することもアプリケーションの開発効率を低下させる一因となった。
関係モデルの最大の功績は、アプリケーション、データの論理的構造、データの物理的構造を三階層に分け(三階層アーキテクチャ)、論理データ独立性と物理データ独立性を実現した点にある。
現在では、主に以下のデータベースが広く使われている。下2つについては NoSQL も参照。
- リレーショナルデータベース、オブジェクトリレーショナルデータベース - スキーマがしっかり決まっていて、ドランザクションが利用できる
- オブジェクトデータベース
- ドキュメント指向データベース - XMLデータベースやJSONを利用した、スキーマレスなもの
- キー・バリュー・ストア、カラム指向データベース - カラム指向はバリューがハッシュテーブルになっているもの
DBMSの機能
以下に DBMSの、主な機能を示す。
- データベース言語
- データベース言語は、DBMS に対してさまざまな指示を伝えるための言語である。概念的には、データ定義言語 (DDL)、データ操作言語 (DML)、データ制御言語 (DCL) の構成要素からなる。データ定義言語 (DDL) はデータベースの構造を定義する。データ操作言語 (DML) はデータベースに対する検索や更新などの操作を行う。データ制御言語 (DCL) はデータに対するアクセス制御を行う。DBMS ではそのデータベースモデルに基づいたデータベース言語を備えている。例えば関係データベース管理システム (RDBMS) とされるシステムの多くは、関係データベース言語 SQL を備えている。
- 物理的データ独立性
- データベースを格納する記憶装置を変更する際、それに伴って DBMS にアクセスする方法を変更する必要はない (もしくは変更する労力が少なくて済む) 。DBMS にアクセスする利用者やアプリケーションソフトウェアに対して、DBMS は記憶装置の変更をある程度隠蔽することができる。
- 論理的データ独立性
- いくつかの種類の DBMS では論理的データ独立性を支援する。例えば RDBMS ではビューを使うことができる。
- データ完全性
- 不正なデータが登録されることや、不正なデータに更新されることを、防ぐ。例えば RDBMS では、定義域・データ型・一意性(ユニーク)制約・参照整合性制約・一般制約・トリガ などの機能を備えている。
- トランザクション処理
- ACID特性に基づいたトランザクション処理を行う。複数のユーザが同時に同一のデータを参照・更新した場合でも、矛盾なく正常に処理をこなす。
- セキュリティ
- 多くの DBMS ではセキュリティ (機密保護) に関して任意アクセス制御もしくは強制アクセス制御を提供し、さらに一部の DBMS ではデータの暗号化機能も提供する。任意アクセス制御を採用している DBMS が多い。データ暗号化機能では、DBMS を迂回した不正なデータアクセスに対する対策として、DBMS で管理・送受信するデータを暗号化する。
- 障害復旧
- トランザクション障害、システム障害、記憶媒体の障害からの復旧を行う。
- 最適化
- 高水準なデータベースモデルを採用する DBMS では、高水準なデータベース言語で記述されたデータ処理要求を、低水準な手続きに最適化して実行する。
- 分散データベース
- 分散データベースは、ネットワークで接続された複数のコンピュータを使い、それぞれのコンピュータ上で DBMS のプロセスを協調させて動かし、全体として仮想的に一つの DBMS を実現する技術である。複数のコンピュータを使うため、可用性や処理性能を向上させることができる。クライアント・サーバのデータベースは、分散データベースの簡単で特殊な形態と位置づけることができる。
オープンソースソフトウェアのDBMS
名称 | データ モデル |
ライセンス | 開発者 | 動作環境 |
---|---|---|---|---|
Apache Derby | RDBMS | Apache License Version 2.0 | Apacheソフトウェア財団 | Pure Java |
Berkeley DB | RDBMS | GPL | Sleepycat Software[1] | Unix系, Windows, Pure Java |
Firebird | RDBMS | InterBase Public License | Firebird Project | Unix系, Windows |
H2 Database | RDBMS | H2 License 1.0 | Thomas Mueller | Pure Java |
HSQLDB | RDBMS | BSDライセンス | Pure Java | |
LibreOffice Base | RDBMS | LGPL | The Document Foundation | Unix系, Windows |
MariaDB | RDBMS | GPL v2 | Maria developers | Linux, Windows, Solaris |
MongoDB | NoSQL | GNU AGPL v3.0 | 10gen | Linux, Windows, OSX, Solaris |
mSQL | RDBMS | 商用ライセンス(教育、非商用の機関に限りフリー) | Minerva Network Management Environment | |
MySQL | RDBMS | GPLまたは商用ライセンス | MySQL AB | Unix系, Windows |
OpenOffice.org Base | RDBMS | LGPL | サン・マイクロシステムズ | Unix系, Windows |
PostgreSQL | ORDBMS | BSDライセンス | PostgreSQL Global Development Group | Unix系, Windows |
SAP DB | GPLまたはLGPL | MySQL AB | Unix系, Windows | |
SQLite | RDBMS | パブリックドメイン | D. Richard Hipp | |
VoltDB | RDBMS | GPL v3 | Michael Stonebraker | |
Xindice | XML DB | Apache License Version 2.0 | Apache XMLプロジェクト |
商用のDBMS
関連項目
脚注
- ↑ 2006年にOracle Corporationに買収された。