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