日本語

FAQ: ジオデータベース管理の Global ID の一意のインデックスはどのように変更されましたか?

質問

ジオデータベース管理の Global ID の一意のインデックスはどのように変更されましたか?

答え

Esri の ArcGIS Desktop 10.5.1 および ArcGIS Pro 2.0 製品のソフトウェア リリースには、ジオデータベース管理の Global ID に対する根本的な挙動の変更が含まれています。

ジオデータベース管理の Global ID とは
ジオデータベース管理の Global ID フィールドは編集不可の UUID 列で、ジオデータベースが入力を行います。 Global ID フィールドは、[Global ID の追加 (Add Global IDs)] ジオプロセシング ツールを使用するか、Python で次の arcpy モジュールを使用して追加できます。

AddGlobalIDs_management (in_datasets)
変更された内容
ArcGIS Desktop 10.5.1 および ArcGIS Pro 2.0 では、次の挙動が発生します。
  • [Global ID の追加 (Add Global IDs)] では、基盤となるテーブルまたはフィーチャクラス内のフィーチャ全体において一意性が保持されるように、Global ID フィールドに一意のインデックスが作成されるようになりました。
バージョン対応クラスの挙動
  • バージョン対応登録では、ArcGIS が Global ID 列を検出し、その Global ID 列のベース テーブルに一意のインデックスを作成します。 ADD テーブルと DELETE テーブルには新しいインデックスは作成されません。
  • バージョン対応登録されたクラスに対する [Global ID の追加 (Add Global IDs)] では、Global ID フィールドに新しい一意のインデックスが作成されます。 ADD テーブルと DELETE テーブルには新しいインデックスは作成されません。
バージョン非対応のアーカイブ クラスの挙動
  • [履歴管理の有効化 (Enable Archiving)] では、Global ID 列が検出され、Global ID 列と GDB_TO_DATE 列に一意のインデックスが作成されます。
  • 履歴管理が有効化されたクラスに対する [Global ID の追加 (Add Global IDs)] では、Global ID フィールドと GDB_TO_DATE フィールドに一意のインデックスが作成されます。 H テーブルは Global ID 列に一意でないインデックスを取得します。
以下の表は、こうした挙動をまとめたものです。
クラス タイプ前提条件演算インデックス タイプインデックス名
バージョン非対応 Global ID の追加UNIQUEUUID_GLOBALID
バージョン非対応Global ID を含むバージョン非対応の履歴管理の有効化UNIQUEUUID_GLOBALID、GBD_TO_DATE
バージョン非対応履歴管理 - 有効化Global ID の追加UNIQUEUUID_GLOBALID、GBD_TO_DATE
バージョン非対応Global ID を含むバージョン対応登録UNIQUEUUID_**GLOBALID
バージョン非対応UUID を含むバージョン対応登録NONEWINDEX
バージョン非対応Global ID と Global ID の不規則な名前のインデックスを含むバージョン対応登録UNIQUEIRREGNAMEDINDEX**GLOBALID
バージョン対応 Global ID の追加UNIQUEUUID_**GLOBALID
バージョン対応Global ID を含む履歴管理の有効化 (Enable Archiving)UNIQUEUUID_***GLOBALID
バージョン対応履歴管理 - 有効化Global ID の追加UNIQUEUUID_**GLOBALID
バージョン非対応Global ID と db の一意制限を含むバージョン対応登録UNIQUEUUID_**GLOBALID
** ADD テーブルと DELETE テーブルには新しいインデックスは作成されません。
*** H が作成され、GLOBALID 列に NONUNIQUE インデックスを取得します。

image of preceding table

この変更の理由
Global ID 列に一意のインデックスを作成することは、データ破損の発生に直接対応するものです。 この変更により、バージョン対応およびバージョン非対応の履歴管理の有効化されたクラスへの操作の実行時に、重複する Global ID がベース テーブルに入力されることがなくなります。 同期やレプリケーションなどの操作は Global ID の一意性に依存しており、データベースに一意の Global ID を適用することは、重複問題の可能性を回避するための強力な手段です。

このデータ整合性にかかるコストは、インデックス作成 (Global ID の追加、バージョン対応登録、履歴管理の有効化) に費やされる時間です。 基盤となる DBMS プラットフォームには、新しい、大規模な構造の作成が求められるようになりました。 さらに、一部の DBMS プラットフォームでは、テーブル上の残りのインデックスも再構築する必要があります。