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

データベース管理システムは、コンピュータのデータベースを構築するために必要なデータベース運用、管理のためのシステム、およびそのソフトウェアのことである。データベースマネジメントシステムとも呼ばれる。

1. 概要
-----

かつては、CODASYLが提唱したネットワーク型データモデルのDBMSや、階層型データモデルのDBMS、あるいは初期の非力なパーソナルコンピュータなどではカード型データモデルのDBMSなどが幅広く利用されていたが、近年では関係モデルを扱う関係データベース管理システム  が主流である。

また、関係データベース管理システムに、利用者が独自のデータ型や関数を拡張可能なオブジェクト関係データベース  や、オブジェクト指向プログラミング言語との親和性が高いオブジェクトデータベース 、データモデルにXMLを採用したXMLデータベース  などが開発され、利用が広まっている。

ネットワーク型データモデルのDBMSや、階層型データモデルのDBMSは実装の軽量性の利から早くから広まっていたが、アプリケーションソフトウェア、データの論理的構造、データの物理的構造の三者が密接に結びつき、柔軟性に欠けるという欠点があった。また、最適化の方法論がクエリを作るプログラマの力量に依存することもアプリケーションの開発効率を低下させる一因となった。

関係モデルの最大の功績は、アプリケーション、データの論理的構造、データの物理的構造を三階層に分け、論理データ独立性と物理データ独立性を実現した点にある。

1.1. 種類
-------

現在では、主に以下のデータベースが広く使われている。

関係データベース、オブジェクト関係データベース - スキーマがしっかり決まっていて、トランザクションが利用できる
オブジェクトデータベース
列指向データベース管理システム - NoSQL系の一部で称される「列指向データモデル」とは異なり、同一列のデータを物理的に近い領域に集約して格納されるもの。列データ集計処理などでは、行指向データベースよりも優位。
カード型データベース
NoSQL  系
ドキュメント指向データベース - XML  やJSONを利用した、スキーマレスなもの。

1.1.1. 補足
---------

三階層アーキテクチャは、古くからの階層型、ネットワーク型DBMSにおいて実装されている。さらに、三階層アーキテクチャは、階層型、ネットワーク型データベースの国際標準規格である構造型データベースにおいて、最初に規定された。
アプリケーションはビュー経由で操作し、レコード型の定義変更があっても、変更箇所を操作しないアプリケーションには影響しない。
データベースの物理的な格納場所の変更も、アプリケーションや論理的な定義の変更は必要としない。
階層型、ネットワーク型とリレーショナル型DBMSの共通点、差異は、次の点にある。
＜共通＞
レコード型に対し、特定の構成要素をビューとして定義し、アプリケーションから限定して操作させる。
ビューで定義された構成要素以外の定義変更は、アプリケーションには影響しない。
＜差異＞
ビューでは、列の特定だけでなく、列が特定の値を持つ行のみを対象にできる。
ビューを経由しなくても、特定の列だけ、さらには特定の列の値を持つ行だけを操作対象にできる。

2. DBMSの機能
----------

以下に DBMSの、主な機能を示す。

データベース言語 データベース言語は、DBMS に対してさまざまな指示を伝えるための言語である。概念的には、データ定義言語 、データ操作言語 、データ制御言語  の構成要素からなる。データ定義言語  はデータベースの構造を定義する。データ操作言語  はデータベースに対する検索や更新などの操作を行う。データ制御言語  はデータに対するアクセス制御を行う。DBMS ではそのデータベースモデルに基づいたデータベース言語を備えている。例えば関係データベース管理システム  とされるシステムの多くは、関係データベース言語 SQL を備えている。 物理的データ独立性 データベースを格納する記憶装置を変更する際、それに伴って DBMS にアクセスする方法を変更する必要はない  。DBMS にアクセスする利用者やアプリケーションソフトウェアに対して、DBMS は記憶装置の変更をある程度隠蔽することができる。 論理的データ独立性 いくつかの種類の DBMS では論理的データ独立性を支援する。例えばRDBMSではビューを使うことができる。 データ完全性 不正なデータが登録されることや、不正なデータに更新されることを、防ぐ。例えばRDBMSでは、定義域・データ型・一意性制約・参照整合性制約・一般制約・トリガ などの機能を備えている。 トランザクション処理 ACID特性に基づいたトランザクション処理を行う。複数のユーザが同時に同一のデータを参照・更新した場合でも、不整合がなく正常に処理をこなす、又は異常を通知する。 セキュリティ 多くの DBMS ではセキュリティ  に関して任意アクセス制御もしくは強制アクセス制御を提供し、さらに一部の DBMS ではデータの暗号化機能も提供する。任意アクセス制御を採用している DBMS が多い。データ暗号化機能では、DBMS を迂回した不正なデータアクセスに対する対策として、DBMS で管理・送受信するデータを暗号化する。DBMSの暗号化ソリューションの方式は暗号化および復号を行う位置によって大きく3通り、アプリケーション方式、DB Plug-In方式、TDE方式と分類する。
アプリケーション方式はアプリケーションのロジックでデータを暗号化及び復号を行う。そのためデータベースに負荷がかかる問題なく、性能劣化を最小限に抑えられる。
DB Plug-In方式はデータベース上で暗号化および復号のモジュールを実装する暗号化方式である。APIとは違ってアプリケーションから独立しているため、データベースを修正することだけで簡単に導入できる。そのためアプリケーションに対する修正はほぼ必要ない。また、全ての作業がGUI基盤で行われるため、管理の利便性を向上し、暗号化カラムに対する一致検索、範囲検索、インデックス支援に容易になる。
TDE方式はDBエンジンの内部にて暗号化および復号を行う。ソフトウェア基盤の暗号化モジュールがDBエンジンに直接設置されるため、アプリケーションの修正なくDB内部から暗号化および復号する。そのため、他の方式と比べ暗号化・復号の速度が上がる。また、必要なデータのみ暗号化することができるためシステムにかかる負荷を最小化する。 障害復旧 トランザクション障害、システム障害、記憶媒体の障害からの復旧を行う。 最適化 高水準なデータベースモデルを採用する DBMS では、高水準なデータベース言語で記述されたデータ処理要求を、低水準な手続きに最適化して実行する。 分散データベース 分散データベースは、ネットワークで接続された複数のコンピュータを使い、それぞれのコンピュータ上で DBMS のプロセスを協調させて動かし、全体として仮想的に一つの DBMS を実現する技術である。複数のコンピュータを使うため、可用性や処理性能を向上させることができる。クライアント・サーバのデータベースは、分散データベースの簡単で特殊な形態と位置づけることができる。

3. オープンソースソフトウェアのDBMS
---------------------



4. 非オープンソースソフトウェアのDBMS
----------------------



5. 脚注
-----

5.1. 注釈
-------

6. 関連項目
-------

データ管理システム
バージョン管理システム
パッケージ管理システム
データストリーム管理システム
ACID 
排他制御
デッドロック
コミットメント
ロールバック