本稿は『DB Magazine 2007年05月号』特集1-PART1 p.56~p.67からの転載記事です。
データベースに限った話ではありませんが、特にコンピュータ関連ではたくさんのキーワード(用語)が出てきます。はじめてデータベースの勉強をしようとすると、まずはキーワードの数と難しさにとまどってしまうと思います。また一般的なコンピュータに関するキーワードでも、データベース関連だと意味が多少異なるキーワードもあります。そして、キーワードを1つずつすべて把握しようとするのは大変困難で時間もかかります。中にはよく使用する用語もあれば滅多に使用しない用語もあります。そこで本パートでは、出現頻度が高く、最低限は押さえておきたいキーワードを12 個紹介します。
keyword 1 データベース(DBMS)
入門者の中には、データベースという言葉は聞いたことはあるが、具体的なイメージがわかないという人が意外に多いと思います。考え方としては、データベースは「複数の人が共有利用するデータを貯めてある入れ物」です。
例えば、図書館の本の貸し出しを考えてみます。ある貸出窓口から1冊しかない本の貸し出しを行なったとしましょう。本がデータとなります。その1冊しかない本を、別の貸出窓口からも貸し出せてしまうと、おかしくなります。そういったことがないように、データをただ貯めるのではなく、共有して利用しても問題が起こらないようにデータを管理することもデータベースの役割です。
少し固い言葉で言うと、データベースとは複数のアプリケーション(例えば本を借りるアプリケーション)やユーザーによって共有利用されるデータの集合体です。このデータベースのデータは直接アプリケーションから操作するのではなく、専用のソフトウェアによって操作および管理されます。このソフトウェアをDBMS(データベース管理システム)と言います。
アプリケーションやユーザーが、データベースのデータに対して何らかの操作をしたい場合、DBMSに対してその依頼をすることになります。DBMSは与えられた指示に従って実際に動作し、例えばデータの検索が依頼された場合、その行為を行ない、アプリケーションに検索結果を返します。
なお、DBMSがデータベースのデータを操作する際、どこにどのようなデータが格納されているのかを確認する必要があります。また、依頼主であるアプリケーションやユーザーが、それを行なってもOKなのかなどをチェックする必要があります。もしこのチェックを行なわないと、悪意あるユーザーに情報を盗まれてしまう危険性などが生じます。
こうした「データベースを管理するためのデータ」も必要となります。一般的には管理するためのデータを「メタデータ」と呼び、それらのデータは「リポジトリ」や「データディクショナリ」として、ほかのデータと同じようにデータベースの中に格納されます。
例えば、読みたい本を貸出係に申請して借りるという図書館の例で説明すると、データベースが本をしまってある場所に相当し、データが本、DBMSが貸出係(司書)、メタデータが図書管理台帳、アプリケーションやユーザーが本を借りに来た人となります(図1)。
これは、なぜアプリケーションやユーザーが直接データベースの中身を操作しないのかという疑問の答えにもなります。本を借りに来た人は、どこにどんな本があるのか分かりません。また図書館台帳を見て調べようとしたとしても、どのように書かれているのかなどのルールが分からなければ調べられないでしょう。そこで貸出係(司書)のような専門家が必要となるのです。
データベースの種類
代表的なデータベースとして、階層型、ネットワーク型、リレーショナル型の3種類があります。現在よく使用されているのはリレーショナル型となります。以下に簡単に紹介します。
階層型データベース
階層型とはデータの階層関係に着目してデータを表現するデータベースで、データを親子関係として表現する木構造になっています。親と子の関係は1対多となります。データを検索する際は、親子のつなぎに沿った処理経路(アクセスパス)で行ないます。検索を行なうスタート地点が1箇所で、処理経路に伴う定型的なデータの検索が非常に速いのが特徴です。
しかし、データが追加や削除された際、処理経路の構造を変更しなければならず、柔軟に対処できないのが欠点です。このDBシステムは以前にメインフレームで採用されていましたが、やはり柔軟性がない点が大きく、最近はあまり見られなくなってきました(図2)。
ネットワーク型データベース
ネットワーク型(網型)は基本的には階層型と同じになりますが、データの関係を網目(ネットワーク)状に構築し、親と子の関係は多対多になります。また検索を行なうスタート地点を複数個設けることができ、階層型に柔軟性を持たせたものと言うことができます。
ただし欠点として、階層型と比較すると多少は柔軟性があるのですが、突発的に発生した処理(これを非定型処理と言います)に対応しづらいところがあります。このDBシステムも以前にメインフレームで採用されていましたが、階層型と同じく、最近はあまり見られなくなってきました。
リレーショナル型データベース
リレーショナル型はデータの集まりを行と列からなる数学の集合論に基づく表形式で表現するデータベースで、このDBMSをRDBMS(リレーショナルデータベース管理システム)と呼んでいます。代表的な製品として、日本オラクルの「Oracle Database」、マイクロソフトの「SQL Server」、日本アイ・ビー・エムの「DB2」などがあります。
特徴的なのは、表形式のデータベースであるためデータ同士の関係を定義せず、柔軟に経路を設定できるところです。また、すべての処理に対して平均的な処理速度を提供します。逆に言うと、特定の処理の速度を向上させるために工夫をしなければなりません。表については後で取り上げます(図3)。
なお、リレーショナル型では、異なる表同士は表内の同一の属性(列)に同じ値を持つ行が関連付けられることとなります。これを「リレーションシップ」と言います(図4)。
これら以外に、最近ではXMLデータベースというものもあります。XMLとはW3C(World Wide Web Consortium)によって基本仕様が策定された言語です。XMLは文書構造(ツリー構造)を持つのですが、その構造を決定するためのルールを文書の作成者が決定できるという特徴があります。この機能を利用すれば、XMLという標準仕様を用いながら、特定の構造にとらわれない自由度の高い文書を広く交換できるようになります。
このXMLの形でデータを格納したデータベースをXMLデータベースと呼んでいます。XMLデータ形式の利点はデータ構造を流動的に変更でき、高い汎用性が与えられている点にあります。これによりデータをHTMLに変換しWebブラウザ上で表示したり、アプリケーション間のデータの連携を行ないやすくしています(図5)。
なお、本稿では以降、すべてリレーショナル型データベースについて解説していきます。