IBM Cloudant レプリケーション
IBM® Cloudant® for IBM Cloud® の複製は、2 つのデータベースの状態を同期するプロセスです。
ソース・データベースで行われたすべての変更がターゲット・データベースで複製されます。 継続的に、または「1 回限りの」タスクとして、任意の数のデータベース間で複製を作成できます。
アプリケーションの要件に応じて、複製を使用して状態と内容を共有および集約します。
複製は 1 方向のみで実行されます。 2 つのデータベースを相互に同期させるには、両方向に複製する必要があります。
database1 から database2 に複製し、database2 から database1 に別個に複製することによって、このプロセスを完了します。
まず、複製が終了すると、ソース・データベース内のすべてのアクティブ文書が、宛先データベースまたは「ターゲット」データベースにも存在しています。 次に、ソース・データベースから削除された文書が、宛先データベースからも削除されます (存在する場合)。
複製操作
複製には、プッシュ複製とプル複製の 2 つの形式があります。
- プッシュ複製 - ソースはローカル・データベースであり、宛先はリモート・データベースです。
- プル複製 - ソースはリモート・データベース・インスタンスであり、宛先はローカル・データベースです。
プル複製は、ソース・データベースに永続 IP アドレスがあり、宛先データベースがローカルであり、動的に割り当てられた IP アドレス (例えば DHCP を介して取得) を持っている場合に役立ちます。 プル複製は、中央サーバーからモバイルまたは他のデバイスに複製する場合に適しています。
すべての場合において、ソースおよびターゲットの指定で要求されたデータベースが存在していなければなりません。 存在しない場合、JSON オブジェクト内でエラーが返されます。
ソース・サーバー example.com のデータベースと IBM Cloudant のターゲット・データベースとの間で複製を行う要求例を以下に示します。
POST /_replicate
Content-Type: application/json
Accept: application/json
{
"source" : "https://$USERNAME1:$PASSWORD1@example.com/db",
"target" : "https://$USERNAME2:$PASSWORD2@$ACCOUNT2.cloudant.com/db",
}
複製のために要求したデータベースのいずれかが存在しない場合のエラー応答の例を以下に示します。
{
"error" : "db_not_found",
"reason" : "could not open https://example.com/db/"
}
継続的複製
デフォルトでは、複製中のデータベースの同期は、複製要求の実行時に 1 回行われます。 ソース・データベースからターゲット・データベースへの複製が継続的に行われるようにするには、要求内の JSON オブジェクトの continuous フィールドを true に設定します。
継続的複製を使用すると、明確に複製をキャンセルするまでは、ソース・データベースの変更がターゲット・データベースに永久に複製されます。
2 つのインスタンス間のネットワーク接続が使用可能な間は、2 つのデータベース間で変更が複製されます。
稼働中は、現在のすべての更新処理が終了しても、複製プロセスは停止しません。 代わりに、複製プロセスは、引き続きソース・データベースに対する更新を待機して、ターゲットに更新を適用します。
継続的複製では、ソース・データベースで継続的に検査が実行されます。 これらの検査により、ソース・データベースの内容が変更されていない場合でも、データベース・アクセス数が増えます。 データベース・アクセスは、マルチテナント・データベース構成内で行われる作業の一部としてカウントされます。
_replicator データベース
_replicator データベースは、アカウント内の特殊なデータベースであり、ここに、必要な複製を指定するための複製文書を PUT または POST できます。
複製を開始する前に、_replicator データベースを作成する必要があります。 データベースを作成するには、以下に PUT 要求を送信します。
https://$ACCOUNT.cloudant.com/_replicator
詳しくは、データベースを参照してください。
複製をキャンセルするには、複製文書を DELETE します。 レプリケーション・ドキュメントで指定されるフィールドについては、 「リクエスト情報」の「 レプリケーション操作の記述の作成または変更 」で説明されています。
_local データベースに追加されるすべての設計文書および /_replicator 文書は無視されます。
重要事項
- 複製は、IBM Cloudant インスタンスのパフォーマンスに重大な影響を与える可能性があります。 パフォーマンス・テストは、並行複製数が増加した場合の環境への影響を理解するのに役立ちます。
- 連続複製を行うと、多くの内部呼び出しが行われる可能性があります。 多くの呼び出しを要求すると、IBM Cloudant システムのマルチテナント・ユーザーのコストに影響することがあります。 デフォルトでは、継続的複製は無効になっています。
- ターゲット・データベースが存在している必要があります。 存在しない場合に自動的に作成されることはありません。 複製前にターゲット・データベースが存在しない場合は、複製を記述する JSON 文書に
"create_target":trueを追加します。 詳しくは、複製時のターゲット・データベースの作成を参照してください。 - レプリケーター・データベースは、他の重要なデータ・ストアと同様に、保守して気を配る必要があります。 詳しくは、複製データベースの保守を参照してください。
セキュリティー上の目的で、IBM Cloudant チームは、複製ジョブのためにアカウント・レベルの資格情報ではなく、IAM API キーまたは IBM Cloudant レガシー認証 API キー を使用することをお勧めしています。 詳しくは、『IAM ガイド』またはレガシー『 認証 API 文書』およびレガシー『認可 API 文書』を参照してください。