私は次の課題に直面しています:
ネットワークが頻繁に失敗する可能性があるさまざまな地理的な場所に多数のデータベースがあります(セルラーネットワークを使用しています)。すべてのデータベースの同期を維持する必要がありますが、リアルタイムである必要はありません。私は Java を使用していますが、無料のデータベースを自由に選択できます。
これを達成する方法についての提案。
ありがとう。
私は次の課題に直面しています:
ネットワークが頻繁に失敗する可能性があるさまざまな地理的な場所に多数のデータベースがあります(セルラーネットワークを使用しています)。すべてのデータベースの同期を維持する必要がありますが、リアルタイムである必要はありません。私は Java を使用していますが、無料のデータベースを自由に選択できます。
これを達成する方法についての提案。
ありがとう。
これは、かなり確立された研究コーパスの問題です (人々は明らかに気づいていません)。絶対に必要でない場合 (たとえば、些細な解決策を可能にする非常に珍しい要件など) は、貧弱で欠陥のあるホイールを再発明しないことをお勧めします。
いくつかのキーワード:レプリケーション、モバイル DBMS、分散切断型 DBMS。
また、これらの研究論文も関連があります (この研究分野の例として):
... 等々。
この機能をすぐに利用できるデータベースを私は知りません。ここでは、結果整合性と競合解決が必要なため、非常に複雑です (たとえば、ネットワークが 2 つに分割され、ある値を 123 に更新し、残りの半分を 321 に更新するとどうなるか、その後、ネットワークは再接続しますか?)
自分で巻く必要があるかもしれません。
これを行う方法のアイデアについては、Yahoo の PNUTS システムの設計を確認してください: http://research.yahoo.com/node/2304および Amazon の Dynamo: http://www.allthingsdistributed.com/2007/10/amazons_dynamo .html
SymmetricDSをチェックしてください。SymmetricDS は、Web 対応で、データベースに依存しない、データ同期/複製ソフトウェアです。Web およびデータベース テクノロジを使用して、リレーショナル データベース間でテーブルをほぼリアルタイムで複製します。このソフトウェアは、多数のデータベースに対応できるように設計されており、低帯域幅の接続でも機能し、ネットワークの停止期間に耐えることができます。
要件やアプリはわかりませんが、これはクイックアンサータイプの質問ではありません。私は他の人が何を言わなければならないかを見るのにとても興味があります。ただし、要件や状況に応じて、機能する場合と機能しない場合があるという提案があります。特に、ネットワークが利用できない場合(オフラインアクセス)でもユーザーがアプリを使用する必要がある場合、これは役に立ちません。
多数の小さなデータベースの同期を維持することは、正しく実行するためのかなり複雑なタスクです。一元化されたデータベースを1つだけ持ち、クライアントアプリケーションを直接接続するか、(私の好みのソリューション)クライアントデータベースの束ではなく、データへのアクセス/更新を処理するWebサービスを作成する可能性はありますか?
これによりオフラインアクセスが制限されることは理解していますが、使用できるキャッシュ戦略にはさまざまなものがあります。(もちろん、元の質問に戻ります。)