4

Node.js と MySQL でこの Web アプリケーションを作成していますが、データの同期に苦労しています。

シナリオは次のとおりです。

1000 人の顧客がいて、全員がオフィス/サイトにローカル Web サーバー データベースを持っているとします。ユーザーは、ログイン、データの編集、センサーのデータログなどを行うことができます。これらのすべてのアクティビティは、例のために、顧客/サイトごとに 1 日あたり約 500KB のテーブル データに寄与します。したがって、1000 人の顧客それぞれが、1 日に何度も新しいデータで常に更新されるローカル データベースを持っています。

同時に、1,000 人の顧客すべてが、あたかもローカルにオンサイトにいるかのように、ログインしてすべてのデータを確認できるクラウド サービスがあります。また、クラウドから変更を加えたり、データを編集/作成/削除したりできます。

今私が抱えている問題は次のとおりです。

  • すべてのサイトは、クラウド サーバーと双方向で同期する必要があります。おすすめは何ですか?(マルチマスター レプリケーション?、クラスタリング?、カスタム レプリケーションを作成しますか?) 長所と短所は何ですか?

  • 顧客のサイトがオフラインで、ローカル データベースとクラウド データベースの両方に新しいデータが追加された場合はどうなりますか? 競合とマージは通常どのように行われますか?

前もって感謝します!

4

3 に答える 3

1

ATM が銀行とのリンクを持たず、データベースのコピーを操作し、1 日の終わりまでにのみ同期するという並行現実を想像してみてください。

市内のすべての ATM に車で行き、持っているお金を何度も引き出す​​ことができます。彼らは、あなたがすでに億万長者であり、国を離れたときにのみ、詐欺に気付くでしょう.

これは単なる例ですが、この同期メカニズムを理解したとしても、値が変更されるだけでなく、同じ主キーで別のレコードが作成されるなど、予期しない問題が発生する可能性があります。これは大きな問題になる可能性があります。 .

これを解決する一般的な技術はまったくないと思います。アプリケーションがデータベースで実行できるすべてのアクションの同期の側面を注意深く調べる必要があります。同期に使用されるプロセスで実行可能な SQL スクリプトを生成する可能性がありますが、わかりません。

于 2013-11-03T03:54:30.877 に答える
0

Mysql のレプリケーションは、この目的で信頼できるものではありません。

ただし、すべてドキュメントベースのストレージを使用しても問題ない場合は、Couch DB ソリューションでこの問題を解決できます。私たちはカウチ データベースをしばらく使用してきましたが、ローカル カウチ データベースをサーバー カウチ クラスタに同期するという問題はほとんど解決されました。これが古い投稿であることは承知していますが、誰かがこれを役に立つと思ってくれることを願っています。幸運を!

于 2020-12-18T01:38:06.700 に答える