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

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

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

コア システム テーブル

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

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

  • gdb_conflicts
  • gdb_itemrelationships
  • gdb_itemrelationshiptypes
  • gdb_items
  • gdb_itemtypes
  • gdb_locks
  • gdb_replicalog
  • gdb_tables_last_modified
  • sde_archives
  • sde_branch_tables_modified
  • sde_branches
  • sde_column_registry
  • sde_compress_log - 初めてジオデータベースを圧縮したときに作成されます。
  • sde_coordinate_systems
  • sde_dbtune
  • sde_geometry_columns
  • sde_layer_locks
  • sde_layers
  • sde_lineages_modified
  • sde_multibranch_tables
  • sde_mvtables_modified
  • sde_object_ids
  • sde_object_locks
  • sde_process_information
  • sde_raster_columns
  • sde_server_config
  • sde_spatial_references - sde スキーマではなく、パブリック スキーマに格納されます。
  • sde_state_lineages
  • sde_state_locks
  • sde_states
  • sde_table_locks
  • sde_table_registry
  • sde_tables_last_edit_time
  • sde_tables_modified
  • sde_version
  • sde_versions

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

  • sde_locators
  • sde_metadata
  • sde_layer_stats
  • sde_logfile_pool
  • sde_xml_columns
  • sde_xml_index_tags
  • sde_xml_indexes

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

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

  • 属性ルール - 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 というアーカイブ クラスが作成されます。このアーカイブ クラス テーブルはビジネス テーブルと同じスキーマに格納されます。

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

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

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

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

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

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

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

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

キーセット テーブル

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

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

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

セッション (接続) ごとに 1 つのキーセット テーブルがグローバル一時テーブルとして作成されます。キーセット テーブルは、一時テーブルなので、ユーザーがジオデータベースへの接続を終了したときに削除されます。ただし、このテーブルを格納するために PostgreSQL によって作成された一時スキーマは残ります。このスキーマには pg_temp_3 などの名前が付けられます。

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

keyset_<process_id>。ここで、<process_id> はキーセット テーブルの作成につながったセッションのプロセス ID 番号です。

ログ ファイル テーブル

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

PostgreSQL のジオデータベースではメモリ内の一時テーブルが使用されるため、これらのテーブルはデータベースに格納されません。これらのテーブルはユーザーごとに作成され、名前の形式は pg_temp<#>.sde_logfiles になります。