レプリカ スキーマ変更

Standard または Advancedのライセンスで利用可能。

レプリカを作成すると、親ジオデータベースからデータとスキーマが子ジオデータベースへコピーされます。 このデータには、レプリカのデータセットから複製される行が含まれています。 スキーマは、フィールド、ドメイン、サブタイプ、および複製されるデータ内のデータセットの定義で構成されています。

初期状態では、スキーマはどちらのレプリカでも同じですが、各レプリカのスキーマに変更が加えられる可能性があります。 たとえば、一方のレプリカではプロジェクトを完了するための追加フィールドが必要で、相対レプリカでは既存のフィールドに新しいドメインを適用する必要があるとします。 この場合、両方のレプリカのスキーマはもはや同じではありません。 ジオプロセシング ツールを使用してレプリカ スキーマを比較し、違いを特定できます。

レプリカ スキーマのツール

レプリカ スキーマ変更を操作する際には、以下の 3 つのジオプロセシング ツールを使用します。

  • レプリカ スキーマのエクスポート — 一方向または双方向の入力レプリカのスキーマで、レプリカ スキーマ ファイルを作成します。
  • レプリカ スキーマの比較 — レプリカ ジオデータベースと相対レプリカ ジオデータベース間のスキーマの違いを記述する .xml ファイルを生成します。
    • このツールにより生成されるスキーマ変更ファイルには、相対レプリカ ジオデータベースと一致させるために、レプリカ ジオデータベースに適用する必要がある変更が記述されています。
  • レプリカ スキーマのインポート - 入力レプリカ ジオデータベース、および .xml ファイルを使用してレプリカ スキーマの差分を適用します。

スキーマ変更ツールには、次の場所からアクセスできます。

  • [ジオプロセシング] ウィンドウで、検索オプションを使用するか、[分散ジオデータベース] ツールボックスを参照します。
  • [レプリカの管理] ウィンドウで、[レプリカの管理] メニュー メニュー を使用できます。
    レプリカの管理メニューからスキーマ変更ツールにアクセス
  • [カタログ] ウィンドウで、ジオデータベースを右クリックして、[分散ジオデータベース] ショートカット メニューにアクセスできます。
    分散ジオデータベース ショートカット メニューからスキーマ変更ツールにアクセス

スキーマ変更を相対レプリカに適用するには、「ジオデータベース レプリカの管理」に示された手順をご参照ください。

注意:

レプリカのスキーマを相対レプリカのスキーマと一致するように変更することは、データの同期とは異なるプロセスです。

有効なスキーマ変更

次に、スキーマの変更とそれらを相対レプリカに適用可能かどうかを示します。

追加変更

フィールド

テーブルまたはフィーチャクラスに追加されたフィールドが同期されます。

フィールドに適用されたドメインへの変更が同期されます。

ドメイン

新しいドメインが同期されます。

ドメイン定義への変更が同期されます。

テーブル/フィーチャクラス

追加されたフィールドと、テーブルとフィーチャクラスのフィールドに適用されたドメインが同期されます。

レプリカからのデータセットの削除

各レプリカに含まれるデータセットのリストは、レプリカ ジオデータベースに格納されます。 このリストは [レプリカ プロパティ] ダイアログ ボックスに表示されます。 これらのプロパティを開く方法については、「ジオデータベース レプリカの管理」をご参照ください。

これらのデータセットの 1 つをレプリカから登録解除すると、警告が表示されます。 続行した場合、そのデータセットはレプリカのデータセット リストから削除されます。 次の注意事項も参照してください。

  • テーブル、フィーチャクラス、またはリレーションシップ クラスを登録解除した場合、レプリカに再び追加することはできません。
  • トポロジを登録解除した場合、レプリカに再び追加することはできません。 レプリカの同期は維持されますが、トポロジの例外の同期はサポートされません。

スキーマの違いを維持

他のレプリカとレプリカのスキーマの変更の同期をとらずに、独自にレプリカのスキーマを変更することが可能です。 ジオデータベース レプリケーションは、レプリカ間のスキーマの違いを基本的に許容するように設計されているので、ほとんどの場合、データの同期は引き続きうまく機能します。

ただし、スキーマの変更を一方のレプリカに適用し、もう一方のレプリカに適用しない場合には、次のような問題が予測されます。

  • 同期しない編集 — データの同期では、両方のレプリカに共通するテーブルおよびフィールドへの変更だけがインポートされます。 相対レプリカに存在しないフィールドへの編集は、変更をインポートする際に相対レプリカに適用されません。
  • 無効な値 — ドメイン、サブタイプ、およびリレーションシップ クラスのルールに違反する変更が、変更を同期する際に適用される場合があります。
  • データの同期エラー — 両方のレプリカに対して手動共通のスキーマ変更を行った場合に、このエラーが発生する場合があります。 たとえば、テーブルにフィールドを追加するような場合、 すべてのレプリカに同じスキーマの変更が適用されることを確認してください。 違いが存在する場合 (一方のレプリカでは追加したフィールドが文字列であり、もう一方のレプリカでは整数であるなど)、データの同期はエラーになります。
  • サポートされていない変更 — 一部のスキーマの変更は同期を失敗させる原因になりますが、そのような変更を加えたとしても警告は表示されません。 これらの変更はジオデータベース レプリケーション システムによって検出されません。 たとえば、データベース テーブルでの権限の変更など、データベース レベルでの操作が挙げられます。 複製されたデータの権限が読み取り専用に変更された場合、相対レプリカから変更をインポートしようとするとエラーになります。

ベスト プラクティス

一般に、スキーマの変更は避けるべきです。 スキーマの変更は、レプリカ間で一貫性が失われる原因となり、スキーマの変更を適用するための余分なタスクのせいで、パフォーマンスに悪影響がおよびます。 ただし、スキーマの変更を適用しなければならない場合もあります。 次に、スキーマの変更を避けるためのベスト プラクティスを示します。

  1. システムをロック ダウンする — システムを使用するユーザーが適切な権限で作業していることを確認します。 列の追加や削除といった、無計画なスキーマの変更を実行できないアプリケーションの設計が必要になることもあります。
  2. 定期的にスキーマを比較する — レプリケーションはフォールト トレランスなので、ほとんどの場合、同期プロセスはスキーマの変更によって中断されません。 ただし、スキーマを定期的に比較して、無計画なスキーマの変更が適用されないようにすると効果的です。
  3. スキーマの変更が必要な保守作業が完了するまで同期しないでください。
  4. システム全体にスキーマの変更を適用する — スキーマの変更を適用する必要がある場合は、それらの変更をシステム全体に組織的に適用します。 たとえば、トップ ダウン方式を使用して、ルート レプリカから順に変更を適用していくことができます。