DBMSにおける「3層スキーマアーキテクチャ」とは:それぞれのスキーマの役割とは?
3層スキーマアーキテクチャを用いることで、データベース設計の安全性、拡張性、クライアントからのアクセス性を向上させることができる。基本的な仕組みと幾つかの例を説明する。
データベースを活用するには、分散アーキテクチャにおけるデータベースの役割、データベース内部で機能するコンポーネント、データベースの固有の役割や責務など、多くの異なる観点で考慮すべきポイントがある。
またデータベースは非常に複雑なので、使いこなすには、どのように構築、構成されているのか理解を深めておく必要がある。例えばデータベース管理システム(DBMS)では、「3層スキーマアーキテクチャ」を用いることで、設計の安全性、拡張性、クライアントからのアクセス性を向上させている。本稿では、3層スキーマアーキテクチャについて解説する。
3層スキーマアーキテクチャとは
3層スキーマアーキテクチャは、データベースを以下の3つの異なるレイヤーに分割するものだ。
- 内部スキーマ
- 概念スキーマ
- 外部スキーマ
この階層化により、データベースの接続の可能性、安全性、拡張性が高まり、クライアントからアクセスしやすくなる。
内部スキーマ
毎時数PB(ペタバイト)単位の膨大なデータをネットワーク経由でやりとりして保存するデータベースもあれば、毎時数件のトランザクションしか処理しないデータベースもある。こうしたデータを管理、保存する方法を定義するのがDBMSの内部スキーマだ。
内部スキーマは、データを物理層に保存する方法や、トランザクション分離や同時実行制御などの関連タスクを実装する方法に関連しており、主に次のタスクを担当する。
- テーブルのインデックス設定
- サポート対象のストレージメディアタイプの特定
- ログファイルの書き込み先の決定
- 低レベル認証の実行
- 実装するデータ型とその実装方法の選択
データベースをストレージに保存する方法はデータベースベンダーの数だけ存在し、複数の内部スキーマを用意するベンダーも多い。「MySQL」では、インストール時にユーザーがストレージエンジンとして、XA準拠の「InnoDB」か、読み取りに最適化された「MyISAM」のどちらを使うかを選択できる。
概念スキーマ
データベースは、さまざまな方法で相互に結合されたテーブルで構成されている。各テーブルには互いに関連するデータが含まれており、それらが行と列の形式で整理されている。
データベースの設計や、データを整理するためにテーブル同士の関係を定義するのは、ソフトウェア開発プロジェクトの成否を左右する非常に難しい作業だ。
データベース用にデータを構造化する方法と、データベース管理者が論理データベース層を構築できるようにするために提供されるツールは、概念スキーマに含まれる。
概念スキーマは、主に次のタスクを担当する。
- エンティティ関係図(ERD:Entity Relationship Diagram)で表されるデータベース設計の実装
- クエリの対象となることが多いテーブルのインデックス作成
- テーブルおよび列へのセキュリティ属性の割り当て
- 多種多様なデータ型の選択
概念スキーマの興味深い側面は、管理者がデータ型を選択できることだ。どのデータベースでもサポートされるデータ型の数は限定される。概念スキーマでは、管理者は32bit整数型、64bit浮動小数点数型、バイナリラージオブジェクト(BLOB)型、キャラクタラージオブジェクト(CLOB)から選択できる。ただし、概念スキーマで選択できるのは、内部スキーマで実装されているデータ型のみだ。
外部スキーマ
クライアントアプリケーションは、エンタープライズデータベース内のテーブル全てを参照するわけではない。そのため、クライアントからのアクセスを簡素化し、バックエンドシステムのセキュリティを強化する目的で、クライアントアプリケーションには、アプリケーションに必要なデータのサブセットのみを表示する概念スキーマの外部ビューを用意する。
例えば、オンライン注文システムのデータベースには、在庫がある部品の数や取り寄せる必要のある商品に関する情報などが含まれる。だが、ユーザーを登録するだけのマイクロサービスにはこれとは異なる情報が必要になるため、外部からデータにアクセスするために独自のビュースキーマやユーザースキーマを用意する必要がある。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
ブラウザ内でPostgresのWASM版を利用できる「postgres.new」を発表 Supabase
Supabaseは、AI支援を利用しながら、ブラウザ内で直接動作する「Postgres」データベースを即座に幾つでも起動し、サンドボックスとして使用できる「postgres.new」を発表した。Notionブラウザ版、WebAssembly版SQLite3でページ遷移速度を20%改善 実装時の苦労と教訓とは?
Notion Labsは公式ブログで、NotionのデータキャッシュにWebAssembly実装の「SQLite3 WASM/JS」を採用した事例を紹介する記事を公開した。適用に至るまでの苦労や教訓を明らかにしている。「MySQL 9.0」公開 JavaScriptストアドプログラムやVECTOR型をサポート
オープンソースのリレーショナルデータベース管理システム「MySQL」の最新版「MySQL 9.0」がリリースされた。