全文検索システムは
索引作りがキモ
由美:ところで、Googleとかの全文検索システムもデータベースなんですか?
先生:はい、データベースの1つと考えることができますが、これまでに述べたリレーショナルデータベースとは趣を異にします。リレーショナルデータベースは各フィールドに対する値として情報を登録しますが、全文検索システムでは、インターネット上からWWWコンテンツを収集して、そこから単語を抽出してインデックス(索引)を作ります。そして、そのコンテンツにおける各単語の出現頻度を数えます。これを基に、検索語として与えた文字列がもっとも多く出現するコンテンツをリストアップしているんです。
お父さん:リレーショナルデータベースと比べるとどうなのですか?
先生:全文検索システムはリレーショナルデータベースのようなデータベースの設計がいらないというメリットはありますが、インデックスの作成に非常に時間がかかります。インターネットのデータのように予測のつかないコンテンツを扱うには都合がよいのですが、リレーショナルデータベースで表わせるようなきちんとしたデータベースを扱うには不向きです。
画像や音声の扱いにはオブジェクト指向データベース
由美:インターネットには画像とか音楽とかのデータがたくさんあるわけですが、そういったものも扱えるんですか?
先生:もちろんです。でも、画像とか音楽は対象が文字列データではないので、単純な文字列検索ではうまく実現できません。そういうときは、「オブジェクト指向データベース」が使われます。オブジェクト指向というのは、関連するデータの集まりとその処理方法(メソッド)を「オブジェクト」と呼ばれる1つのまとまりとして管理する手法をいいます。
由美:それでは音楽をデータベースにする場合、どうやって検索するんですか?
先生:たとえばリズムで検索したいとしましょうか。音楽データからリズムを調べるには、何らかの数学的なパターン認識が必要になりますが、そのプログラムをMP3やWAVなどのデータ形式ごとにデータベースシステムに組み込むのは大変です。でもオブジェクト指向だと、「リズムを調べる方法」のようなプログラムがデータ側に添付されているんです。
データベース管理システムは
さまざまな機能を提供する
お父さん:データベースが大体どういうものかわかりました。それで話をリレーショナルデータベースに戻したいんですが、データベース管理システムにはどんな機能があるんですか?
先生:データベース管理システムの機能は非常にさまざまですが、セキュリティやデータベースの一貫性確保、排他制御やトランザクション、そして汎用の問い合わせ言語や耐障害機能の提供といったものがあります。
由美:難しい言葉がたくさん出てきたんですが、まずセキュリティというのはパスワードとかですか?
先生:そうですね。データベースを扱うことのできるユーザーを作成し、そのユーザーごとに利用できるデータベースや実施できる操作、たとえば参照はできるけど更新はできないという権限のレベルを与えます。またネットワークが普及した今では、IPアドレスを使った接続制限なども行なっています。
お父さん:次のデータベースの一貫性というのは何でしょう?
先生:さっき紹介しましたが、単価が100円なら、データベースのどの表をとっても100円でないといけません。1カ所だけ110円になっていたら問題ですよね。また、消しゴム1個の単価が1万円なんてことはあり得ないですよね。こうしたことが起こらないように、値の範囲や整合性をチェックすることをデータベースの一貫性確保と呼んでいます。
由美:排他制御は聞いたことあるわ。
先生:ファイルやデータベースで書き込みを行なう際に、データの整合性を保つためにデータの読み書きを制限することですね。さっきの表計算ソフトの場合を思い出してください。ネットワークで複数のユーザーで同じファイルを扱ったことはありますか?
お父さん:はい、確か後から開いた人は、書き込み操作はできなかったと思います。
先生:そうですね。何か約束事を作っておかないと、複数の人がデータを更新するときにたいへんなことになりますね。でも、データベース管理システムは、まさに多くのユーザーが同時に書き込みを行なえるように、排他制御を行なっています。管理システムによって、この排他制御のレベルが異なってきます。
お父さん:レベルというのは?
先生:どれくらい細かく実行できるかです。先の表計算ソフトでいうとワークシート単位、行単位、カラム単位での書き込み制限で、管理システムの性能によってできるレベルが異なってきます。
由美:大学のプログラミングの実習でも、排他制御って用語があったわ。
先生:プログラム言語のレベルで排他制御を考えるのは、けっこうややこしいですよね。そんなときはデータベースを呼びだして使うほうが簡単だし、パフォーマンスも上がることがあります。
お父さん:トランザクションというのはちょっと耳馴れない言葉ですが?
先生:切り離せないひとまとまりの操作を指します。たとえば入学用品セットがあるとしますよね。入学用品セットというのは、鉛筆や消しゴム、ノートや下敷きなど決まったセットで構成されています。ですから、データベースの更新は個々の商品ごとにやりますが、途中で止めたら間違いの元になりますよね。もし、この操作をキャンセルするなら、このトランザクションの単位で取り消さないといけません。
由美:汎用の問い合わせ言語というのは何でしょうか? 言語というからにはプログラム言語のようなものでしょうか?
先生:はい、データベースを操作するための言語です。リレーショナルデータベースでは「SQL」というのが有名です。SQLはStructured Query Languageの略で、データベースや表の作成・削除から、データベースへのデータの参照や追加、変更、削除といったさまざまな操作コマンドを標準化したものです。データベース管理システムは製品ごとに細部が微妙に異なるのですが、SQLを使うことで他社のデータベース製品も、だいたい同じように操作することができます。こうした汎用の問い合わせ言語をサポートすることによって、ソフトウェアの生産性が向上します。
お父さん:耐障害性機能というのはバックアップとかでしょうか? 最近地震とか自然災害が多いですから、バックアップだけはこまめにとるようにしています。
先生:たいへんよい心がけですね。耐障害性機能には、いまお父さんがおっしゃったバックアップ機能もありますが、レプリケーションという機能も含んでいます。レプリケーションはネットワーク上でデータベースの複製を作成し、一定時間ごとに内容が同じになるように同期を取るシステムです。同時に2台が壊れる確率は低いという前提から、一方が壊れても片方のほうが動作を継続して障害を未然に防ぐ機能を持っています。
由美:レプリケーションは耐障害性機能だけではないですよね?
先生:その通りです。複数の検索を別々のデータベースで処理させることで負荷分散する機能も担っています。
お父さん:あ、お時間は大丈夫ですか?
先生:そうですね。もういい時間ですから、また日を改めて説明しましょうか。次はリレーショナルデータベースの基本的な話をすることにします。
お父さん、由美:ぜひよろしくお願いします!
この連載の記事
-
最終回
ソフトウェア・仮想化
「せんせい!SQLってRDBを操作する言語よね?」(由美) -
第3回
ソフトウェア・仮想化
「インデックスとトランザクションって」(由美) -
第2回
ソフトウェア・仮想化
「由美ちゃん、これがRDBの要素だよ」(先生) - この連載の一覧へ