Standard または Advancedのライセンスで利用可能。
レプリカを作成すると、親ジオデータベースからデータとスキーマが子ジオデータベースへコピーされます。 このデータには、レプリカのデータセットから複製される行が含まれています。 スキーマは、フィールド、ドメイン、サブタイプ、および複製されるデータ内のデータセットの定義で構成されています。
初期状態では、スキーマはどちらのレプリカでも同じですが、各レプリカのスキーマに変更が加えられる可能性があります。 たとえば、一方のレプリカではプロジェクトを完了するための追加フィールドが必要で、相対レプリカでは既存のフィールドに新しいドメインを適用する必要があるとします。 この場合、両方のレプリカのスキーマはもはや同じではありません。 ジオプロセシング ツールを使用してレプリカ スキーマを比較し、違いを特定できます。
レプリカ スキーマのツール
レプリカ スキーマ変更を操作する際には、以下の 3 つのジオプロセシング ツールを使用します。
- レプリカ スキーマのエクスポート — 一方向または双方向の入力レプリカのスキーマで、レプリカ スキーマ ファイルを作成します。
- レプリカ スキーマの比較 — レプリカ ジオデータベースと相対レプリカ ジオデータベース間のスキーマの違いを記述する .xml ファイルを生成します。
- このツールにより生成されるスキーマ変更ファイルには、相対レプリカ ジオデータベースと一致させるために、レプリカ ジオデータベースに適用する必要がある変更が記述されています。
- レプリカ スキーマのインポート - 入力レプリカ ジオデータベース、および .xml ファイルを使用してレプリカ スキーマの差分を適用します。
スキーマ変更ツールには、次の場所からアクセスできます。
- [ジオプロセシング] ウィンドウで、検索オプションを使用するか、[分散ジオデータベース] ツールボックスを参照します。
- [レプリカの管理] ウィンドウで、[レプリカの管理] メニュー を使用できます。
- [カタログ] ウィンドウで、ジオデータベースを右クリックして、[分散ジオデータベース] ショートカット メニューにアクセスできます。
スキーマ変更を相対レプリカに適用するには、「ジオデータベース レプリカの管理」に示された手順をご参照ください。
注意:
レプリカのスキーマを相対レプリカのスキーマと一致するように変更することは、データの同期とは異なるプロセスです。
有効なスキーマ変更
次に、スキーマの変更とそれらを相対レプリカに適用可能かどうかを示します。
追加 | 変更 | |
---|---|---|
フィールド | テーブルまたはフィーチャクラスに追加されたフィールドが同期されます。 | フィールドに適用されたドメインへの変更が同期されます。 |
ドメイン | 新しいドメインが同期されます。 | ドメイン定義への変更が同期されます。 |
テーブル/フィーチャクラス |
追加されたフィールドと、テーブルとフィーチャクラスのフィールドに適用されたドメインが同期されます。 |
レプリカからのデータセットの削除
各レプリカに含まれるデータセットのリストは、レプリカ ジオデータベースに格納されます。 このリストは [レプリカ プロパティ] ダイアログ ボックスに表示されます。 これらのプロパティを開く方法については、「ジオデータベース レプリカの管理」をご参照ください。
これらのデータセットの 1 つをレプリカから登録解除すると、警告が表示されます。 続行した場合、そのデータセットはレプリカのデータセット リストから削除されます。 次の注意事項も参照してください。
- テーブル、フィーチャクラス、またはリレーションシップ クラスを登録解除した場合、レプリカに再び追加することはできません。
- トポロジを登録解除した場合、レプリカに再び追加することはできません。 レプリカの同期は維持されますが、トポロジの例外の同期はサポートされません。
スキーマの違いを維持
他のレプリカとレプリカのスキーマの変更の同期をとらずに、独自にレプリカのスキーマを変更することが可能です。 ジオデータベース レプリケーションは、レプリカ間のスキーマの違いを基本的に許容するように設計されているので、ほとんどの場合、データの同期は引き続きうまく機能します。
ただし、スキーマの変更を一方のレプリカに適用し、もう一方のレプリカに適用しない場合には、次のような問題が予測されます。
- 同期しない編集 — データの同期では、両方のレプリカに共通するテーブルおよびフィールドへの変更だけがインポートされます。 相対レプリカに存在しないフィールドへの編集は、変更をインポートする際に相対レプリカに適用されません。
- 無効な値 — ドメイン、サブタイプ、およびリレーションシップ クラスのルールに違反する変更が、変更を同期する際に適用される場合があります。
- データの同期エラー — 両方のレプリカに対して手動共通のスキーマ変更を行った場合に、このエラーが発生する場合があります。 たとえば、テーブルにフィールドを追加するような場合、 すべてのレプリカに同じスキーマの変更が適用されることを確認してください。 違いが存在する場合 (一方のレプリカでは追加したフィールドが文字列であり、もう一方のレプリカでは整数であるなど)、データの同期はエラーになります。
- サポートされていない変更 — 一部のスキーマの変更は同期を失敗させる原因になりますが、そのような変更を加えたとしても警告は表示されません。 これらの変更はジオデータベース レプリケーション システムによって検出されません。 たとえば、データベース テーブルでの権限の変更など、データベース レベルでの操作が挙げられます。 複製されたデータの権限が読み取り専用に変更された場合、相対レプリカから変更をインポートしようとするとエラーになります。
ベスト プラクティス
一般に、スキーマの変更は避けるべきです。 スキーマの変更は、レプリカ間で一貫性が失われる原因となり、スキーマの変更を適用するための余分なタスクのせいで、パフォーマンスに悪影響がおよびます。 ただし、スキーマの変更を適用しなければならない場合もあります。 次に、スキーマの変更を避けるためのベスト プラクティスを示します。
- システムをロック ダウンする — システムを使用するユーザーが適切な権限で作業していることを確認します。 列の追加や削除といった、無計画なスキーマの変更を実行できないアプリケーションの設計が必要になることもあります。
- 定期的にスキーマを比較する — レプリケーションはフォールト トレランスなので、ほとんどの場合、同期プロセスはスキーマの変更によって中断されません。 ただし、スキーマを定期的に比較して、無計画なスキーマの変更が適用されないようにすると効果的です。
- スキーマの変更が必要な保守作業が完了するまで同期しないでください。
- システム全体にスキーマの変更を適用する — スキーマの変更を適用する必要がある場合は、それらの変更をシステム全体に組織的に適用します。 たとえば、トップ ダウン方式を使用して、ルート レプリカから順に変更を適用していくことができます。