ジオデータベースの格納モデルは、単純かつ本質的な一連のリレーショナル データベース概念に基づき、基本データベース管理システム (DBMS) の強みを活用しています。単純なテーブルと明確に定義された属性タイプを使用して、地理データセットごとにスキーマ、ルール、ベース、空間属性データを格納します。この手法は、データを格納して操作するための形式的なモデルを提供します。この手法では、SQL (structured query language)、つまり一連のリレーショナル関数および演算子を使用して、テーブルとそれらのデータ エレメントの作成、変更、問い合わせを行うことができます。
この仕組みは、ポリゴン ジオメトリを持つフィーチャがジオデータベースでどのようにモデリングされているかを調べると、よく理解できます。フィーチャクラスはテーブルとして格納され、しばしばベース テーブルまたはビジネス テーブルと呼ばれます。テーブルの行はそれぞれ 1 つのフィーチャを表します。Shape 列は、各フィーチャのポリゴン ジオメトリを格納します。このテーブルのコンテンツには、SQL の空間タイプとして格納された Shape も含めて、SQL を使用してアクセスできます。
しかし、空間タイプと空間属性の SQL サポートを DBMS に追加しても、それだけでは DBMS で GIS をサポートすることができません。ArcGIS は、ジオデータベース格納モデルに加えて、アプリケーション層の高度なロジックと振舞いを実装する、多層アプリケーション アーキテクチャを採用しています。このアプリケーション ロジックには、フィーチャクラス、ラスター データセット、トポロジ、ネットワークなど、一般的な地理情報システム (GIS) データ オブジェクトと振舞いのサポートが含まれています。
オブジェクト リレーショナル モデルとしてのジオデータベース
ジオデータベースは、他の高度な DBMS アプリケーションと同じ多層アプリケーション アーキテクチャを使用して実装されています。その実装には他と異なる特殊な点は何もありません。ジオデータベースの多層アーキテクチャは、オブジェクト リレーショナル モデルとも呼ばれています。ジオデータベース オブジェクトは、DBMS テーブルの行に固有のオブジェクトとして保持され、そのオブジェクトの振舞いはジオデータベースのアプリケーション ロジックによって定義されます。アプリケーション ロジックを格納層から分離することで、複数の異なる DBMS およびデータ形式のサポートが可能になります。
リレーショナル データベースを使用したジオデータベース格納
ジオデータベースの核を担うのは、標準のリレーショナル データベース スキーマです (一連の標準データベース テーブル、列タイプ、インデックス、およびその他のデータベース オブジェクト)。スキーマは、地理情報の整合性と振舞いを定義するジオデータベース システム テーブルのコレクションとして、DBMS に保存されます。これらのテーブルは、ディスク上にファイルとして格納されるか、Oracle、IBM DB2、PostgreSQL、IBM Informix、Microsoft SQL Server などの DBMS のコンテンツ内に格納されます。
明確に定義された列タイプを使用して、従来の表形式の属性を格納します。ジオデータベースが DBMS 内に格納されるときは、一般にベクターまたはラスターで表される空間表現は、拡張空間タイプを使用して格納されるのが普通です。
ジオデータベース内には、システム テーブルとデータセット テーブルの 2 種類の主要テーブルがあります。
- データセット テーブル: ジオデータベースの各データセットは、1 つ以上のテーブルに格納されます。データセット テーブルはシステム テーブルと連携してデータを管理します。
- システム テーブル: ジオデータベースのシステム テーブルは、各ジオデータベースのコンテンツを管理します。システム テーブルは、すべてのデータセットの定義、ルール、およびリレーションシップを定義するジオデータベース スキーマを保持します。システム テーブルは、ジオデータベースのプロパティ、データ整合チェック ルール、および振舞いを実装するために必要なメタデータをすべて保持して管理します。
ArcGIS 10 リリース以降、これらのテーブルの内部構造が再編されました。ジオデータベースのスキーマに関連する情報は、ArcGIS 10 より前のリリースでは 35 を超えるジオデータベース システム テーブルに格納されていましたが、ArcGIS 10 では、4 つのメイン テーブルに集約されています。
- GDB_Items: フィーチャクラス、トポロジ、ドメインなど、ジオデータベースに格納されているすべてのアイテムのリストを保持します。
- GDB_ItemTypes: Table など、認識されるアイテム タイプの定義済みリストを保持します。
- GDB_ItemRelationships: フィーチャ データセット内にどのフィーチャクラスが含まれているかなど、アイテム間のスキーマ関連を保持します。
- GDB_ItemRelationshipTypes: 認識されるリレーションシップ タイプの定義済みリスト (DatasetInFeatureDataset など) を保持します。
データセットとシステム テーブルが連動して、ジオデータベースのコンテンツを提示し、管理します。たとえば、基本格納形式で表示されているフィーチャクラスは、空間列を持つ単純なテーブルです。しかし、ArcGIS を通じてアクセスすると、システム テーブルに格納されたすべてのルールが基本データと組み合わされて、定義されたすべての振舞いを持つフィーチャクラスとして提示されます。
追加テーブル
使用しているジオデータベースのタイプ、およびジオデータベースを格納している DBMS によって、システム テーブルのセットは異なります。エンタープライズ ジオデータベースにある一連のシステム テーブルは、ファイル ジオデータベースとはまったく異なり、パーソナル ジオデータベースとは若干異なります。エンタープライズ ジオデータベースの場合は、DBMS ごとに異なるシステム テーブルがジオデータベース トピックのシステム テーブルに定義されます。ファイルおよびパーソナル ジオデータベースに格納される異なるテーブルについては、詳細に説明しません。それらのテーブルのほとんどは操作する必要がないものだからです。