私の仕事では、多くの場合、データベースシステム間の双方向データ同期のアイデアが現れます。典型的な例は、2つのわずかに異なるCRMシステム(たとえば、Raiser's EdgeとSalesforce)と、それらの間で連絡先データの双方向同期が必要な場合です。
APIの考慮事項は別として、同期する共有キーがあり、使用するアルゴリズム/パターンを純粋に考えている場合、これは技術者以外によって過小評価されることが多いタスクです。
たとえば、次のことに注意する必要があります。
- 両方のシステムでどのレコードが変更されたかを簡単に検出できますか(または、システム間ですべてのレコードを比較して変更を検出する必要がありますか)
- N時間に1回の同期を行う場合、両方のシステムで同じレコードが多かれ少なかれ同じ時間に変化する競合に対処する方法
- リアルタイム同期(つまり、1つのシステムの更新がすぐに他のシステムの更新をトリガーする)を予定している場合、バグまたはシステムクラッシュによる時間の経過に伴う逸脱の処理方法
個人的に私はこれすべてに取り組む方法を考えることができますが、私が参照できるよく知られたパターン、文献またはベストプラクティスがあるかどうか疑問に思っています。
フェデレーションデータベースシステムに非常に近いように聞こえますが、それは正しいですか?
—
-gnat
@gnat:リンクのおかげで、いくつかの懸念は似ています(たとえば、不均一性を扱う)が、2つの自律的なデータベースからのデータのサブセットを同期することについて話しているのに対し、それはすべての完全に統合されたビューを作成することのようです複数のデータベース間で。
—
codeulike
7年後、50の賛成票がありますが、まともな答えは1つだけです。いくつかの同期パターンまたはベストプラクティスが存在する必要がありますか?
—
codeulike