Db2 のジオデータベース システム テーブル

ArcGIS クライアントまたは ArcGIS Server Web サービス経由でエンタープライズ ジオデータベースに接続したら、ジオデータベースに自分で追加したか、他のデータベース ユーザーが追加したデータセットを操作します。エンタープライズ ジオデータベースでは、そのデータを追跡し、ジオデータベースの振舞いを実装するためにシステム テーブルを使用します。

システム テーブルとその内容は、ArcGIS ソフトウェアまたは SDK 以外のものを使用して変更することはできません。ただし、SQL を使用してシステム テーブルの内容を表示することができます。

コア システム テーブル

コア ジオデータベース システム テーブルは、ジオデータベースの振舞いを規定し、ジオデータベースに関する情報を格納し、ジオデータベースに格納されたユーザー データを追跡します。

エンタープライズ ジオデータベースを含む IBM Db2 データベースでクエリを実行する際には、sde ユーザーのスキーマにある次のコア システム テーブルが表示されます。

  • BRANCH_TABLES_MODIFIED
  • BRANCHES
  • COLUMN_REGISTRY
  • COMPRESS_LOG - 初めてジオデータベースを圧縮したときに作成されます。
  • DBTUNE
  • GDB_CONFLICTS
  • GDB_ITEMRELATIONSHIPS
  • GDB_ITEMRELATIONSHIPTYPES
  • GDB_ITEMS
  • GDB_ITEMTYPES
  • GDB_LOCKS
  • GDB_REPLICALOG
  • GDB_TABLES_LAST_MODIFIED
  • LAYER_LOCKS
  • LAYERS
  • LINEAGES_MODIFIED
  • MULTIBRANCH_TABLES
  • MVTABLES_MODIFIED
  • OBJECT_LOCKS
  • PROCESS_INFORMATION
  • RASTER_COLUMNS
  • SDE_ARCHIVES
  • SDE_LOGFILE_POOL
  • SDE_XML_COLUMNS
  • SDE_XML_INDEX_TAGS
  • SDE_XML_INDEXES
  • SERVER_CONFIG
  • SPATIAL_REFERENCE_AUX
  • STATE_LINEAGES
  • STATE_LOCKS
  • STATES
  • TABLE_LOCKS
  • TABLE_REGISTRY
  • TABLES_LAST_EDIT_TIME
  • TABLES_MODIFIED
  • VERSION
  • VERSIONS

次に示すテーブルはジオデータベースに存在しますが、現在は使われていません。これらのテーブルは今後のリリースで削除される予定です。

  • LOCATORS
  • METADATA
  • SDE_LAYER_STATS

エンタープライズ ジオデータベース機能を実装するテーブル

一部のジオデータベース機能の情報はコア システム テーブルにのみ格納されます。たとえば、次の機能に関する情報はコア システム テーブルに格納され、これらの機能をユーザー データに対して有効化したときに追加のテーブルはデータベースに作成されません。

  • 属性ルール - GDB_ITEMS システム テーブルに格納されます。
  • ブランチ バージョン - テーブルまたはフィーチャクラスが編集情報の記録のためにブランチ バージョン対応登録されるときに、6 つのフィールドがそのテーブルまたはフィーチャクラスのビジネス テーブルに追加されます。
  • ドメイン - GDB_ITEMS システム テーブルに格納されます。GDB_ITEMTYPES システム テーブルのフィールドによって、オブジェクトがドメインとして識別されます。
  • リレーションシップ クラス - GDB_ITEMS および GDB_ITEMRELATIONSHIPS システム テーブルに格納されます。

反対に、以降のセクションで説明するジオデータベース機能では、機能が有効化または使用されるときに追加の内部テーブルが作成されます。

ジオデータベースの履歴管理

ジオデータベースの履歴管理機能を使用すると、データのトランザクション時間履歴を追跡することができます。トランザクション時間はデータベースでフィーチャが追加、削除、更新された時点を表します。

テーブルまたはフィーチャクラスでジオデータベースの履歴管理を有効化すると、アーカイブ クラスが作成されます。アーカイブ クラスはビジネス テーブルのコピーで、この中にはすべての同じフィールドに加えて、GDB_FROM_DATEGDB_TO_DATEGDB_ARCHIVE_OID の 3 つの新たなフィールドが含まれます。トラディショナル バージョン対応のテーブルまたはフィーチャクラスに対して履歴管理を有効化したときも、レコードが SDE_ARCHIVES システム テーブルに追加されます。このレコードには、履歴管理が有効なテーブルの Registration ID と、そのテーブルに対応するアーカイブ クラス テーブルが格納されます。

元のビジネス テーブル名にアンダースコアと H を追加したものが、アーカイブ クラス テーブルの名前になります。たとえば、buildings という名前のフィーチャクラスで履歴管理を有効化すると、buildings_H というアーカイブ クラスが作成されます。このアーカイブ クラス テーブルはビジネス テーブルと同じスキーマに格納されます。

バージョン対応登録されていないアーカイブ クラスから不要なアーカイブ レコードを切詰めると、そのトランザクションは METADATA システム テーブルに記録されます。

トラディショナル バージョン

フィーチャクラスまたはテーブルをトラディショナル バージョン対応登録すると、データの編集情報を記録するために ADD テーブルと DELETE テーブルという 2 つのテーブルが作成されます。これらのテーブルは総称して差分テーブルと呼ばれます。

ADD テーブル (A_<registration_id>) は、バージョン対応登録されたビジネス テーブルで挿入または更新されたレコード (フィーチャ) に関する情報を維持し、特定のジオデータベース ステートで追加または変更されたレコードを特定するために検索されます。

DELETE テーブル (D_<registration_id>) は、バージョン対応登録されたテーブルで削除または更新された行に関する情報を維持し、特定のステートで削除または変更された行を特定するために検索されます。行が削除された場合、レコードは物理的に削除されません。レコードには削除済みのフラグが設定され、以降のデータベース クエリで返されなくなります。

ADD テーブルと DELETE テーブルの registration_id は TABLE_REGISTRY システム テーブルでバージョン対応登録されたテーブルを表す値です。

これらのテーブルはバージョン対応登録されているテーブルまたはフィーチャクラスと同じユーザー スキーマに作成されます。

差分テーブルに加えて、バージョン対応登録されたテーブルと編集を追跡するコア システム テーブル (STATESSTATE_LINEAGESMVTABLES_MODIFIED、および VERSIONS テーブル) があります。

キーセット テーブル

キーセット テーブルは ArcGIS クライアントでクエリ パフォーマンスを向上させるために使用されます。キーセット テーブルには、ArcGIS クライアントが整数、数値、日付、文字列タイプの属性を使用してテーブルを結合するジオデータベース リレーションシップ クエリを実行するときに、選択された行のリストが格納されます。キーセット テーブルは Object ID フィールド以外の属性による結合に対応します。

キーセット テーブルは、次のいずれかの操作が実行されて初めてジオデータベースに作成されます。

  • ArcGIS Pro または ArcMap でマップ内のフィーチャクラスから 99 を超えるレコードを選択します。このフィーチャクラスはリレーションシップ クラスに関係しています。
  • ArcGIS Pro または ArcMap で、リレーションシップ クラスに参加しているフィーチャクラスの属性テーブルを開き、関連テーブルを取得します。

セッション (接続) ごとに 1 つのキーセット テーブルがグローバル一時テーブルとして作成されます。キーセット テーブルは、一時テーブルなので、ユーザーがジオデータベースへの接続を終了したときに削除されます。

キーセット テーブル名は次の形式になります。

<user_schema>.keyset_<process_id>。ここで、<schema_name> はテーブルの作成につながる操作を実行したユーザーのスキーマで、<process_id> はテーブルの作成につながったユーザーのセッションのプロセス ID 番号です。

ログ ファイル テーブル

ログ ファイル テーブルは、ArcGIS クライアントで、選択された行のリストを格納してクエリ パフォーマンスを向上させるために使用されます。ログ ファイル テーブルでは Object ID 属性に基づく結合が使用されます。

Db2 のジオデータベースでは、デフォルトで共有ログ ファイル テーブルが使用されます。 このタイプのログ ファイル構成では、SDE_LOGFILESSDE_LOGFILE_DATA という 2 つのテーブルが、ログ ファイル テーブルを必要とする操作を実行するユーザーのスキーマに作成されます。作成されたテーブルはジオデータベースに保存されますが、接続しているアプリケーションがそのログ ファイルをすべて削除するとログ ファイル エントリもすべて削除されます。

ジオデータベースで使用されるログ ファイル テーブルのタイプを変更したときに表示されるログ ファイル テーブルの一覧を次に示します。

  • セッションベース ログ ファイル テーブル - SDE_LOGFILESSDE_LOGFILE_DATA、および SDE_SESSION<SDE_ID>。これらのテーブルは、テーブルが作成されたセッションのユーザーのスキーマに作成されます。作成後に SDE_LOGFILES および SDE_LOGFILE_DATA はデータベース内に残ります。セッションベース ログ ファイル テーブルの使用時に SDE_LOGFILE_DATA にデータが入力されることはありません。SDE_LOGFILES テーブルは、ユーザーのセッションが終了するときに空になります。SDE_SESSION<SDE_ID> テーブルは、接続しているアプリケーションでログ ファイル レコードが不要になった時点で空になり、セッションの終了時に削除されます。
  • ログ ファイル テーブルのプール - このログ ファイル実装では、SDE_LOGFILE_POOL コア システム テーブルが使用され、Object ID に基づく選択内容を格納するために SDE_LOGPOOL_<TABLE_ID> テーブルが作成されます。ジオデータベース管理者は、このタイプのログ ファイル テーブル実装を使用するようにジオデータベースを構成するときに、作成される SDE_LOGPOOL_<TABLE_ID> テーブルの数を定義します。これらすべてのテーブルの所有者は sde ユーザーです。