前回は、データベースシステムの歴史的背景と現状についてお話をしました。データベースが階層型、ネットワーク型からリレーショナル型への変遷をたどり、現在ではリレーショナル型が主流となっています。今回は、主流となっているリレーショナルデータベースではどのような技術が提供されてどのような有用性があるかを検証し、リレーショナルデータベースを有効活用するためのDOA(Data Oriented Architecture)思想についてお話しします。
前回も述べましたが、リレーショナルデータベースは、階層型やネットワーク型の問題を解消し「データの独立性を高めてプログラムからデータを分離させる」ことにより開発時や保守時の生産性向上を実現したデータベースです。
RDBMSとは、リレーショナルデータベースを実際に運用するために欠かせない「データ保証」「スループットの最大化」「障害対策」「セキュリティ」など数々の管理機能を搭載したデータベースマネジメントシステムです。
ここで、RDBMSの主な機能としてどのようなものがあるのかを見てみましょう。
「参照整合性制約」とは、親子関係にあるテーブルの一方に更新、削除、挿入操作が行われた場合に、もう一方のテーブルに対して制約に基づく処理を行うことでデータ(値)の整合性を保証する機能です。
図1に示す「勤務地テーブル」と「社員テーブル」の関係を例に考えてみましょう。
この2つのテーブルは親子関係にあり、社員テーブルの外部キー「勤務地番号」は、親テーブルである「勤務地テーブル」の主キー「勤務地番号」を参照しています。従って、「社員テーブル」にある「勤務地番号」は常に親テーブルである「勤務地番号」にデータとして存在していなければなりません。このテーブル間の関係性を保証するのが参照整合性機能です。
では、データの整合性を保証するために、どのような振る舞い(データ操作)が必要となるでしょうか。
図2に示す「勤務地テーブル」と「社員テーブル」の親子関係において、親テーブルの「勤務地」を変更する場合、子テーブルの「社員テーブル」では以下の3つの方法で更新処理を制限することができます。
RDBMSでは上記3つの方法により、データの整合性を保証しています。
RDBMSでは、「複数ユーザー」が「共有データ」に「同時にアクセス」することを前提とした「排他制御機能」を搭載しています。この機能は、あるユーザーが更新中のデータに対して、更新処理が終わるまで一時的にロックをかけることで、別のユーザーが同時に更新できないようにするものです。これにより、データに対して意図しない変更が加わることを防ぎ、矛盾が生じないようにします。
RDBMS自体に障害が発生した場合のデータ保証機能として、RDBMSにはバックアップ/リカバリ機能が搭載されています。
バックアップ機能でデータを複製し保管しておき、障害時にそのデータをリストアして物理的に復元し、リストアしたデータに対してリカバリ処理を行います。この機能により、障害発生前の元の状態にデータを戻すことができるため、データの整合性が保証されます。
データベースの本質はデータの共有化にありますが、誰もが同じようにデータを参照できてしまってはセキュリティ上の問題が発生します。
データセキュリティは基本的に「利用者」「操作」「データ」の3つの要素で考えます。つまり、RDBMSにおけるセキュリティ管理機能は、どのような人がどのデータにどのような操作ができるかを明確にすることで、情報共有の利便性を維持しながら各人の管理すべき単位でデータの機密性保持を実現するものです。
データの独立性を高めるためにリレーショナルデータベースでは、テーブル単位にデータ管理を行い、テーブル間の関係性をリレーションシップで定義します。
RDBMSは、データの独立性を高めながらシステムを運用するために必要となる、「複数ユーザー」が「共有データ」に「同時にアクセス」できる機能が搭載されています。
プログラムでデータ制御などを行うのではなく、RDBMSに実装されているさまざまな機能を有効活用し、RDBMSにデータ管理を任せることで情報システムの開発時、保守時の生産性向上を図ることが可能になります。
Copyright © ITmedia, Inc. All Rights Reserved.