トランザクションは、データベースを変更するための作業の単位です。地理情報システム (GIS) データベースは、他のデータベース アプリケーションと同様に、データの整合性とアプリケーションの振舞いを維持した更新トランザクションをサポートしなければなりません。多くの場合、ジオデータベースへの編集および更新の管理に、データベース管理システムのトランザクション フレームワークを利用することができます。
ただし、GIS では特殊なトランザクションが必要になることがあります。たとえば、次のように指定します。
- 多くの場合、複数のレコードが単一のトランザクションとして一斉に更新されます。
- 多くの場合、GIS のトランザクションは長い時間を必要とします (数秒または数分ではなく、数日、あるいは数か月におよぶこともあります)。
エディターが変更内容を元に戻したり、やり直したりする必要もあります。また、編集セッションは、数時間あるいは数日におよぶことがあります。さらに、中央の共有データベースに接続していないシステムで、編集を実行しなければならないこともあります。
GIS ワークフロー プロセスは数日あるいは数か月におよぶ場合があるため、GIS データベースは常に日常業務に利用可能な状態に保たなければなりません。日常業務では、データに接続する各ユーザーが共有 GIS データベースを独自のビューや状態にして操作する可能性があります。マルチユーザー データベース環境では、このように長期におよぶ GIS トランザクションをデータベース管理システムのショート トランザクション フレームワーク上で管理しなければなりません。ジオデータベースは、データベース管理システムのトランザクション フレームワークを拡張し、高度で複雑な GIS トランザクションを提供するための重要な役割を果たします。
多くの場合、ロング トランザクション ワークフローは GIS にとって重大です。ほとんどの場合は、エンタープライズ ジオデータベースと ArcGIS を使用してバージョニングによって、中央の GIS データベースの更新を管理すれば、ロング トランザクション ワークフローを実現できます。バージョニングの詳細については、以下をご参照ください。
次に、バージョン ベースのトランザクション モデルが必要となる GIS データの編集ワークフローの例を示します。
- 複数の編集セッション - GIS に対する 1 つの更新が、数日あるいは数週間におよび、複数の編集セッションにまたがる数多くの変更から構成されることがあります。
- マルチユーザー編集 - 同一の地理的な空間内に存在するフィーチャを複数のユーザーが同時に更新しなければならないことがよくあります。エディターはそれぞれ、個別のデータの状態を操作し、他のエディターによる更新を意識せずに、各自の更新を行う必要があります。最終的に、エディターはそれぞれの更新内容をデータベースに送信し、他のエディターとの編集競合を特定して解決する必要があります。
- トランザクションのチェックイン/チェックアウト - ジオデータベースの特定のエリアに該当する部分を個人のコンピューターにチェックアウトし、数日または数週間にわたって接続されない状態のセッションでその情報を更新することがよくあります。モバイル機器を持ち歩き外部でデータの編集や更新を行う機会も増えています。それらの更新内容は作業完了後、メイン データベースに登録する必要があります。
- 履歴 - ジオデータベースの各フィーチャが更新された後であっても、そのフィーチャの履歴を管理し、削除されたり更新されたフィーチャのコピーを履歴に保持して、そのフィーチャの変更を追跡する必要がある場合があります。たとえば履歴を使用して、国土管理データベースの地籍の変遷やフィーチャの更新プロパティなどを記録します。
- 変更部分のみの更新の転送 - 情報がさまざまな組織にわたって共有されるエンタープライズ ジオデータベースを使用した空間データ インフラストラクチャでは、ジオデータベース間でデータの更新部分のみを共有するために、明確に定義した XML スキーマに基づいて、インターネット経由で更新を共有する必要があります。
- 分散空間データベース レプリカ - 企業のメイン ジオデータベースの特定地域に対応する部分的なコピーとして、地域のジオデータベースを作成する必要がある場合があります。2 つのジオデータベースを定期的に同期させ、更新データを交換します。
- データベース管理システム間の疎結合レプリケーション - 各サイトがローカル ジオデータベースを独自に更新する一連のジオデータベース コピー (レプリカ) 間で、GIS データを同期させなければならないことがあります。多くの場合、ジオデータベースは Web 経由で定期的に接続されるだけです。スケジュールに基づいて、各ジオデータベース レプリカ間で更新データを転送し、それらの内容を同期します。また、この同期処理を異なるデータベース管理システム間で行うケースもあります (たとえば、Microsoft SQL Server、Oracle、および IBM Db2 間でデータセットの同期を行います)。
ジオデータベースのトランザクション モデル: 従来のバージョニング
上記の例をはじめ、その他多くの GIS ワークフローを実現するために、ジオデータベースのメカニズムは、ジオデータベース空間データ、ルール、振舞いの整合性を確保しながら、ジオデータベースの複数の状態 (ステート) を管理する必要があります。この複数の状態を管理、操作、確認する機能として、バージョニングが使用されます。バージョニングは、その名が示すように、個々のフィーチャおよびオブジェクトが変更、追加、削除されるたびに、それらのバージョン (状態) を保持します。各バージョンには、フィーチャまたはオブジェクトのそれぞれの状態が、重要なトランザクション情報とともに、テーブルの行として明示的に記録されます。複数のバージョンを同時に操作および管理することができます。
バージョニングでは、すべてのトランザクションがデータベースへの一連の変更として記録されます。すなわち、個々のユーザーがジオデータベースをさまざまなビューまたは状態で操作できます。バージョニングは、オープンで高性能なマルチユーザー アクセスを実現することを目的としており、 たとえば、数千のクライアントによって同時にアクセスされる膨大な数のレコードが含まれたデータセットを高速かつ生産的にサポートできることを目的として設計されています。
バージョンに基づくジオデータベース トランザクション モデルは比較的シンプルであり、更新内容は変更 (差分) テーブルに記録されます。
バージョニングにより、ジオデータベースのオブジェクトの状態は、次の 2 つの差分テーブルに記録されます。
- Adds テーブル
- Deletes テーブル
ジオデータベースの状態の表示および操作には (たとえば、ある時点のデータの状態を表示する、特定のエディターの現在の編集バージョンを確認するなど)、単純なクエリが使用されます。
バージョン対応のジオデータベースおよびデータセットを使用して、データベースのショート トランザクション フレームワークを活用することで、各データベース管理システムのロング トランザクションを管理します。

バージョン テーブルの例では、パーセル (45 番) が 47 番に更新されます。バージョニングを使用して、元のパーセルが Deletes テーブルに保存され、新しいパーセルが Adds テーブルに保存されます。その他のジオデータベース システム テーブルには、各更新の時刻と更新のシーケンス、バージョン名、各更新のステート ID といった、トランザクションに関するバージョン情報が記録されます。各バージョンには、独自のセキュリティ権限とアクセス権限もあります。
これにより、多くのクライアントがデフォルト バージョンを操作する一方で、さまざまなエディターが独自のバージョンのデータに対して同時に更新を行うことができます。
各バージョンに対して膨大な数の更新を実行することが可能であり、エディターは必要に応じて更新バージョンに接続してデータをさらに編集することができます。エディターが更新内容を組織全体で共有する準備が整った時点で、更新バージョンの編集内容を親バージョンにコミットするために、リコンサイルおよびポスト処理が実行されます。リコンサイル処理ではバージョン間の編集競合を特定し、解決することができます。
バージョニングの詳細については、「従来のバージョニングの概要」をご参照ください。