私の仕事では、データベースシステム間の双方向のデータ同期のアイデアがよく生まれます。古典的な例は、わずかに異なる2つのCRMシステム(Raiser's EdgeとSalesforceなど)であり、それらの間で連絡先データを双方向で同期する必要があります。
APIに関する考慮事項はさておき、同期する共有キーがあると想定し、採用するアルゴリズム/パターンを純粋に考えている場合、これは技術者以外の人には過小評価されているタスクです。
たとえば、次の点に注意する必要があります。
個人的に私はこれらすべてに取り組む方法を考えることができますが、私が参照できる既知のパターン、文献、またはベストプラクティスがあるかどうか疑問に思っています。
リモートサイトのDB同期については、多くの理論があります。まず、INSERTから始めます。これを処理するのは簡単です-すべてのサイトに一意のIDを作成できるため(たとえば、サイト名+ ID(番号)のイニシャル:site_a_177とsite_b_53の比較)
したがって、挿入によって競合が発生することはありません。問題はアップデートです。 100%失敗を証明する方法があるとは思いませんが、リモートDBのレコードを「ロック」して、ハンドルを取得した後でのみ更新を開始できます-更新を続行し、更新を同期して終了しますその後、ロックを解除します。