0

私は新しいプロジェクトを始めています。構成は次のとおりです。

  • クライアントデータベースを使用してインターネットからダウンロード可能なJavaデスクトップアプリケーション。
  • サーバーデータベースを備えたインターネット上のPHPWebサイト。

アプリをダウンロードしたユーザーは、アプリを使用して、オフラインでローカルデータベースにアイテム(現在は重要ではありません)を追加します。彼がオンラインの場合、アイテムはサーバーデータベースに追加されるため、他の接続ユーザー(デスクトップアプリまたはWebサイト経由)に表示されます。私はこの問題をグーグルで検索したところ、私が推測するよりも複雑であることがわかりました。解決策の1つは、セキュリティパフォーマンススケーラビリティの観点から、のSymmetricDSようないくつかのすぐに使えるツールを使用することです。Daffodil、しかし、クライアント側とサーバー側の両方で構成およびインストールするのは難しく、専用ホストに渡す必要があるコマンドプロンプトにアクセスする必要があります(これは実際の問題ではありません)。また、私が欲しいのは、これらのツールが実際に提供するものすべてではなく、私が説明したものだけです。

  • Javaアプリケーション内で、そしておそらくWebサーバーPHPの助けを借りて、自分でそれを達成できますか?

情報にMySQLを使用しています。

編集:本当に重要なのは、サーバーデータベースにアイテムを送信することです。たとえば、RSSフィードの読み取りを使用すると、読み取りが簡単になります。

4

3 に答える 3

1

私の頭に浮かぶ最も簡単な解決策は、各アイテムの最終編集日を(サーバーとクライアントで)保存することです。さらに、クライアントがサーバーから最後の更新をいつ取得したかを追跡する必要があります。

したがって、クライアントがオンラインになるたびに、サーバーはクライアントにすべての更新を送信します。

しかし、そのためには、クライアントとサーバーの時間が同じであることを確認する必要があり、2 つのクライアントが同じアイテムを編集した場合の問題は解決しません。

于 2012-10-03T10:39:01.873 に答える
1

基本的にHTTP/HTTPS APIを利用できます。ユーザーがオンラインになったら、アイテムを php ファイルに送信し、アイテムをローカル データベースで「送信済み」とマークします。ただし、編集済みまたは削除済みのステータスを制御する必要があります。はい、それは非常に複雑ですが、解決策です。

于 2012-10-03T10:36:31.350 に答える
0

CouchDBは分散同期の問題を非常にうまく解決しますが、これはNoSQLDBです。アプリケーションが何をすべきかに応じて、それを使用することは、非常にアプリケーション内のローカルと中央サーバーの両方でCouchDBのインスタンスを使用することになります。

それにもかかわらず、あなたは対立に対処しなければならないでしょう。CouchDBがサポートする唯一のことは、競合の検出と、競合する両方の編集のデータであるため、アプリケーションは自動的に、またはユーザーの助けを借りてそれを解決できます。

一方、中央サーバーで一意のIDを生成するのは、作成中のユーザーのIDを各アイテムIDに追加するのと同じくらい簡単です。

于 2012-10-03T10:49:28.457 に答える