Batchレプリケーションは、Incrementalレプリケーションよりも実装が簡単(ただし柔軟性は低い)で、Completeレプリケーションよりも強力なレプリケーションの一種です。また、いくつかの点で両者とは異なります:

  • 古い行は、ソースから削除されても保持されます;
  • 更新は現在の行に対して実行でき、挿入された行は追加されます;
  • すべての行がソースから取得されるため、新しい行を取得するためにタイムスタンプカラムは必要ありません;
  • 行の更新時に重複を許可するかどうかを決めることができます;
  • Analytical Storageテーブルの名前をどのようにするか決めることもでき、区別するための異なるステージはなく、データを含む1つのテーブルだけになります。

バッチ・レプリケーションの主なコンセプトは、分析ストレージにある1つの固定テーブルが、レプリケーション・ジョブが実行されるたびに更新されることです。完全なレプリケーションとは異なり、ユーザがこのテーブルの名前を提供し、ステージはありません。これは、テーブルのステージが常に1つであるため、透明性を提供しますが、テーブルが失われると、(例えば、Dropによって)誤ってデータが失われた場合のリスクが伴います。テーブルは最初の実行時に作成され、データで満たされます。

How It Works

Web UIでBatch Replicationを設定するには、次の手順に従います:

  1. Web UIでReplication Jobダイアログを開き、Batchタブに進みます。
  2. ターゲット・データ・ソースとターゲット・テーブルの名前を指定します。

ダイアログが示すように、Batch Replicationの設定は非常に簡単です。必須情報は、ターゲット・データ・ソースの名前とターゲット・テーブルのみです。これは最初の実行時に作成され、Sources からのデータで満たされます。スクリーンショットでは IDTIONS 設定が有効になっていますが、まずはこのオプションを使用せず、ソースがいくつか更新される間に何度かレプリケートした後の結果を見ます。

Examples

1. ID フィールド(または ID 式)なし:

ジョブの最初の実行では、以下のデータが得られます:

ソースに新しいエントリがあり、レプリケーションを再実行すると、結果セット全体が現在のテーブルに追加され、たとえ変更がなかったとしても、すでにテーブルにあるすべてのレコードの重複が発生します:

クランシー・ウィガム(新年齢:50歳)のアップデートを含め、他のすべてのレプリケーションの実行を続けることができます:

OR マージュ・ブービエのエントリを削除した後:

この設定は、レプリケーションジョブが常に更新または新しい行を返し、'古い'データを返さない場合にのみ使用すべきものです。そうでなければ、テーブル内に曖昧な部分が多くなり、信頼性の高いクエリを実行できるかどうか疑問が残ります。

2. IDフィールド(またはID式)の使用

このような重複を避けるために、どのカラムをIDフィールドとみなし、その値がテーブル内で2回以上出現しないようにするかを決めることができます。これにより、変更の明確な記録が保持され、新しい行も追加されます。 

Batch Replicationの動作が少し変わりましたのでご注意ください。最初に、テーブル全体がソースから完全な内容で取得されます。2番目のステップは、現在の分析ストレージテーブルからすべての検索データが追加されたときに、ID要件に違反するすべてのエントリを削除することです。これにより、取得されたデータはすべて現在のテーブルに追加され、重複がないことが保証されます。また、古いレコードはあらかじめ削除されているため、既存のレコードを更新することもできます。重複する可能性のあるエントリが検索されたデータから削除された場合、分析ストレージテーブルには更新ではなく古い行が格納されます。

最初のテスト走行のデータはこんな感じです:

挿入操作によって、次の実行後に重複が発生することはありませんが、新しいエントリがテーブルに追加されます:

クランシー・ウィガムの年齢が更新された場合も同様です:

更新がどのように実行されるかは増分レプリケーションと密接に関係しているため、削除操作は影響を与えません。Sources からレコードが削除された場合、そのレコードは Analytical Storage テーブルに保持されます。データの変更を詳細に追跡する必要がある場合は、History Updateをご検討ください。

See Also

A short guide on data replication types and use cases. Batch Replication Batch Replicationとその使用例に関するブログ記事はこちら。