3層スキーマアーキテクチャを用いることで、データベース設計の安全性、拡張性、クライアントからのアクセス性を向上させることができる。基本的な仕組みと幾つかの例を説明する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
データベースを活用するには、分散アーキテクチャにおけるデータベースの役割、データベース内部で機能するコンポーネント、データベースの固有の役割や責務など、多くの異なる観点で考慮すべきポイントがある。
またデータベースは非常に複雑なので、使いこなすには、どのように構築、構成されているのか理解を深めておく必要がある。例えばデータベース管理システム(DBMS)では、「3層スキーマアーキテクチャ」を用いることで、設計の安全性、拡張性、クライアントからのアクセス性を向上させている。本稿では、3層スキーマアーキテクチャについて解説する。
3層スキーマアーキテクチャは、データベースを以下の3つの異なるレイヤーに分割するものだ。
この階層化により、データベースの接続の可能性、安全性、拡張性が高まり、クライアントからアクセスしやすくなる。
毎時数PB(ペタバイト)単位の膨大なデータをネットワーク経由でやりとりして保存するデータベースもあれば、毎時数件のトランザクションしか処理しないデータベースもある。こうしたデータを管理、保存する方法を定義するのがDBMSの内部スキーマだ。
内部スキーマは、データを物理層に保存する方法や、トランザクション分離や同時実行制御などの関連タスクを実装する方法に関連しており、主に次のタスクを担当する。
データベースをストレージに保存する方法はデータベースベンダーの数だけ存在し、複数の内部スキーマを用意するベンダーも多い。「MySQL」では、インストール時にユーザーがストレージエンジンとして、XA準拠の「InnoDB」か、読み取りに最適化された「MyISAM」のどちらを使うかを選択できる。
データベースは、さまざまな方法で相互に結合されたテーブルで構成されている。各テーブルには互いに関連するデータが含まれており、それらが行と列の形式で整理されている。
データベースの設計や、データを整理するためにテーブル同士の関係を定義するのは、ソフトウェア開発プロジェクトの成否を左右する非常に難しい作業だ。
データベース用にデータを構造化する方法と、データベース管理者が論理データベース層を構築できるようにするために提供されるツールは、概念スキーマに含まれる。
概念スキーマは、主に次のタスクを担当する。
概念スキーマの興味深い側面は、管理者がデータ型を選択できることだ。どのデータベースでもサポートされるデータ型の数は限定される。概念スキーマでは、管理者は32bit整数型、64bit浮動小数点数型、バイナリラージオブジェクト(BLOB)型、キャラクタラージオブジェクト(CLOB)から選択できる。ただし、概念スキーマで選択できるのは、内部スキーマで実装されているデータ型のみだ。
クライアントアプリケーションは、エンタープライズデータベース内のテーブル全てを参照するわけではない。そのため、クライアントからのアクセスを簡素化し、バックエンドシステムのセキュリティを強化する目的で、クライアントアプリケーションには、アプリケーションに必要なデータのサブセットのみを表示する概念スキーマの外部ビューを用意する。
例えば、オンライン注文システムのデータベースには、在庫がある部品の数や取り寄せる必要のある商品に関する情報などが含まれる。だが、ユーザーを登録するだけのマイクロサービスにはこれとは異なる情報が必要になるため、外部からデータにアクセスするために独自のビュースキーマやユーザースキーマを用意する必要がある。
Copyright © ITmedia, Inc. All Rights Reserved.