データ整備の方策

地理データに対するトランザクションでは、長さと複雑さに大きなばらつきがあります。ジオデータベースは、単純または複雑なデータに対してショート トランザクションもしくはロング トランザクションを実行するユーザおよびアプリケーションのニーズを満たすために、データを整備する方法として、バージョンを使用する方法とバージョンを使用しない方法の 2 つをサポートしています。

これらの方法はフィーチャクラスまたはテーブルごとに適用できるので、同じジオデータベースで 2 つの方法を組み合わせて使用することもできます。

どちらの方法でも、データを編集する方法は同じです。編集は編集セッションで行い、ほぼ同じツールを使用します。両者の違いは、元のデータ ソースを管理する方法にあります。また、編集できるデータと実行できるワークフローの種類にもいくつかの違いがあります。このトピックでは、これらの違いについて説明します。

バージョンを使用しないデータ整備

複数のバージョンを管理せずに、DBMS のトランザクション モデルをそのまま利用する手法です。バージョンを使用しない編集は、標準のデータベース トランザクションに相当します。

データを編集するには、[編集オプション] ダイアログ ボックスからバージョン非対応の編集を有効にして編集セッションを開始し、フィーチャの追加、削除、移動、属性の更新といった必要な操作を実行します。編集を開始した時点でトランザクションが始まります。編集を保存すると、実行した個々の編集操作は単一のトランザクションとしてデータベースにコミットされます。保存後に次の編集を行うと、新しいトランザクションが始まります。編集中に一度に保存できる操作の数は任意ですが、編集中のデータはロックされ、他のユーザによるアクセスまたは編集をブロックするため、頻繁に保存することをお勧めします。保存すれば、変更はそのデータにアクセスする他のどのユーザやアプリケーションからも共有できるようになります。

編集をデータベースにコミットしたくない場合は、編集を保存せずに終了します。前回に編集を保存した時点、または編集を一度も保存していなければ編集を開始した時点からの編集操作はすべてロールバックされ、データベースにコミットされることはありません。

バージョニングを使用しないデータ保守

編集の際には、DBMS のデータに定義されている一意のインデックス、制約、トリガが適用され、DBMS のデータに対して直接トランザクションを実行している場合と同じロック メカニズムがすべて適用されます。このため、同じデータにアクセスするユーザまたはアプリケーションが互いをブロックする可能性があります。マルチユーザ編集環境でバージョン非対応編集を使用する場合は、DBMS の分離レベルとロックの仕組みを理解しなければなりません。また、ArcGIS で作業を開始する前に、必要に応じて、DBMS で分離レベルを適切に設定する必要があります。

このバージョン非対応編集は、履歴を管理したりバージョンを使用して複数のデータの状態を保持する必要がない、シンプルなワークフローに適しています。また、バージョンを使用してデータを参照する必要がないので、GIS アプリケーションと非 GIS アプリケーションで同じデータベースを共有しなければならない場合にも役立ちます。

適用例

制限

バージョンを使用するデータ整備

ジオデータベースは、データベースの複数の状態(バージョン)を同時に存在させることで、DBMS の標準のトランザクションを拡張します(バージョニング)。各バージョンは、設計や作業工程といったある作業の状態を表すことができます。必要であればこれらの作業(トランザクション)を完了するまでに数週間または数カ月の期間、自由にデータベースへの接続、切断を繰り返すこともできます。また、バージョニングを使用すれば、同じジオデータベースのデータに対する過去、現在、あるいは将来の計画案に基づいた変更を管理することも可能です。

過去の変更を管理するには、データに対する変更をすべて別の履歴管理テーブルに保存します。これらの変更を不要になるまで保管しておけば、ユーザが任意の時点でのデータベースの状態を確認することができます。この機能は履歴管理と呼ばれ、ArcGIS に組み込まれているので、なんらかの開発をする必要もありません。履歴管理を有効にすると、(通常はデータベースのマスタ バージョンとして使用される)DEFAULT バージョンへの変更履歴が自動的に管理されます。

現在の変更を管理するには、それぞれの編集者が自分専用のジオデータベースのプライベートなバージョンを編集して、作業が完了するまでの中間的な状態を他のユーザから参照できないようにします。あるバージョンのデータを編集する際、編集するデータに対してロックは適用されません。つまり、データを編集している間も他のユーザが同じデータを参照/編集できるので、同時実行性のメリットが最大化されます。データベースへのアクセスによってユーザが互いにブロックされることはありません。また、データの編集が完了したら、それぞれのバージョンの編集をマスタ バージョンに統合することもできます。

将来の計画案に基づいた変更を管理するには、データベースの 1 つのバージョンを使用して想定されるシナリオに基づいて編集を行ったり、仮説検証を実行します。複数の編集セッションにまたがり、数日、数週間、数か月におよぶ変更を、 1 つのトランザクションとして管理することができます。提案されている地物の追加、地理解析の実行、マップの生成を自由に行うことができ、どれも独立したバージョン内での変更なので、他のユーザがアクセスしているデータに影響を与えません。変更が完成し、承認されたら、それらをマスタ バージョンに統合することもできます。

バージョンは過去、現在、未来の変更を管理するのに役立つ

ジオデータベースに作成できるバージョンの数に制限はありません。バージョンはさまざまな構成で作成することができ、幅広いワークフローをサポートすることができます。ただし、ジオデータベースの管理をより合理的に行うために、必要最小限の階層を持つバージョン ツリーを構成したり、複数の編集者で DEFAULT バージョンを同時に編集するなどの方法をお勧めします。

ジオデータベースには多くのバージョンを作成することができる

バージョニング をサポートするために、ArcGIS はデータ複製しません。元のフィーチャクラスやテーブルには変更を行わず、編集内容を差分テーブルと呼ばれる別のテーブルに記録します。差分テーブルは、追加および更新データを記録する ADD テーブルと、削除データを記録する DELETE テーブルで構成されます。いずれかのバージョンでレコードを更新または削除するたびに、これらのテーブルのどちらかまたは両方に行が追加されます。あるバージョンでフィーチャクラスまたはテーブルを検索または表示すると、差分テーブルと元のテーブル(ベース テーブル)から関連する行が組み立てられて、使用しているバージョンにおけるデータの状態が表示されます。

デルタ テーブル
バージョン対応フィーチャクラスを編集

バージョニングを使用して編集されるテーブル(バージョン対応のテーブル)については、データベース管理者が定期的にメンテナンスを実施する必要があります。バージョニングを使用した編集がジオデータベースで行われるに従って、差分テーブルのサイズが大きくなり、データの表示や検索のパフォーマンスに影響をおよぼします。データベース管理者は、データベースのパフォーマンスを維持するために、データベースを定期的に圧縮することができます。これにより、差分テーブルから不必要な情報が削除されます。データベースは、作業の終了時や新しいデータを読み込んだ後など、データベース操作のピークが終了する度に圧縮する必要があります。圧縮プロセスは、他のユーザがデータベースに接続して使用している状態でも実行することができます。

ArcGIS は、バージョンをサポートする差分テーブルを次のどちらかの方法で管理することができます。

1 つ目の方法は、通常、ArcGIS アプリケーション専用のデータベースで使用されます。2 つ目の方法は、ArcGIS アプリケーションとサードパーティ アプリケーションの両方でデータを管理する必要がある場合に有効です。

ArcGIS アプリケーションのみを対象としたデータの管理

ArcGIS アプリケーションでのみデータを管理する環境では、バージョンを管理する最も効果的な方法はすべての変更を差分テーブルに保存することです。これにより、履歴管理、レプリケーション、ジオメトリック ネットワークおよびトポロジの編集など、ジオデータベースの機能を最大限に利用することができます。

フィーチャクラスまたはテーブルでこの設定を有効にするには、ベース テーブル移行オプションを使用せずに、データをバージョン対応レイヤとして登録します。このようにして登録されたデータセットの変更はすべて差分テーブルに保存されます。この方法では、データのベース テーブルへ直接アクセスすることはできません。ユーザは常にデータの 1 つのバージョンにアクセスします。

以下は、バージョンを使用してすべてのデータを管理する設定の一例を示しています。編集ユーザがデータを変更するには、ArcGIS アプリケーションまたは他のESRI アプリケーションを使用する必要があります。ArcGIS 以外のサードパーティ アプリケーションは、マルチバージョン ビューを使用することで、マスタ バージョンやその他のバージョンにアクセスすることができます。

ArcGIS アプリケーションを対象としたデータの保守

バージョンは差分テーブルやその他のシステム テーブルによって実装されるため、ESRI のソフトウェア ライブラリを使用せずに DBMS に直接アクセスするアプリケーションには、そもそもバージョンを読み取る機能がありません。ArcGIS は、これらのアプリケーションが特定のバージョンを SQL で読み取ることができるマルチバージョン ビューを提供します。マルチバージョン ビューを使用することで、テーブルとフィーチャクラスの両方にアクセスできます。マルチバージョン ビューを使用してフィーチャクラスのジオメトリ属性にアクセスするには、ArcGIS がサポートする SQL ジオメトリ タイプを使用する必要があります。

すべての変更を差分テーブルに保存する方法には、次のような利点があります。

適用例

制限事項:

ArcGIS とその他のアプリケーションを対象としたデータの管理

さまざまな部署の異なるアプリケーションが同じデータベースにアクセスする環境では、ArcGIS アプリケーションとサードパーティ アプリケーションの両方をサポートしなければならない場合があります。たとえば、データベースで地理データをArcGISで管理している部署と、同じデータベースで顧客レコードをカスタム アプリケーションで管理している部署がある場合です。カスタム アプリケーションがトランザクションを実行すると DBMS の制約とトリガが適用されますが、その際にバージョン対応のテーブルが考慮されない可能性があります。その一方で、他の部署では、地理データを独自のバージョンで編集する必要があり、編集が完了して承認されるまでその内容を他の部署と共有しません。

これらの要件を踏まえて、ArcGIS では、フィーチャクラスやテーブルにおいて、バージョニングを使用した編集を実行できるようにするとともに、サードパーティ アプリケーション等と編集内容を共有できる機能を提供しています。この機能をフィーチャクラスまたはテーブルで有効にするには、ベース テーブル移行オプションを使用して、データをバージョン対応レイヤとして登録します。このオプションは、データをバージョン対応登録する際に表示される、[バージョン対応レイヤとして登録] ダイアログ ボックスで設定できます。

ベース テーブル移行オプションを使用して登録されたデータを編集する場合でも、バージョンは先に説明した手法と同じように機能します(変更内容は差分テーブルに保存されます)。ただし、DEFAULT バージョンは例外です。DEFAULT バージョンに編集内容を保存するたびに、DEFAULT バージョンへの直接の編集または別のバージョンからの変更内容のマージによる編集情報はベース テーブルに即座に移行されます。ベース テーブル移行オプションを使用していない場合のように、DEFAULT バージョンの編集内容が差分テーブルに残ることはありません。

ベース テーブル移行オプションを使用することにより、すべてのアプリケーションが同じデータベースを操作できます。

ArcGIS とサードパーティ アプリケーションによるデータの保守

適用例

制限

データをバージョン対応レイヤとして登録する際にベース テーブル移行オプションを使用すると、バージョンを操作する方法が以下のように制限されます。

バージョンとそれらの機能の詳細については、「バージョニングの概要」と「バージョンのシナリオ」をご参照ください。

関連項目


3/6/2012