問題タブ [synchronisation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 異なるシステム間での Dropbox による MySQL 同期
デスクトップ、ラップトップ、タブレット間で MySQL データベースを同期したいと考えています。デスクトップ (win 7 home basic) とラップトップ (win 7 starter) では、wamp サーバー バージョン 2.2 が実行されています。タブレットでは、Android 4.2 で Palapa Web Server 2.1.1 を使用しています。
Tech Blog - Abhishek Sachanの記事を読み、httpd.conf ファイルと my.ini ファイルにすべての変更を加えました。
また、各マシンに同期する同じフォルダーを含む Dropbox フォルダーをインストールし、MySQL の同じファイルを含む同じ「データ」フォルダーがすべてあるように注意しました。
これまでのところ、すべてが正常に機能しており、各デバイスで PhpMyAdmin を開くことができます。必要なすべてのレコードを含む同じデータベースと同じテーブルを見つけました。実際、これは 3 つのテーブルを持つ 1 つの小さなデータベースにすぎませんが、これは問題ではないと思います。
しかし、あるデバイスでレコードを変更すると、Dropbox が同期を開始します。しかし、その後、変更は他のデバイスでは見られません。彼らはまだ古い記録を持っています。
私の考えのどこが間違っているのか、誰にも分かりませんか? 今までありがとう アンドレアス
android - モバイル データベースとサーバー データベース間の同期
説明:
これは、サーバーのデータベースを、オフライン ストレージを持つモバイル アプリケーションに同期するためのものです。データベースはサーバーを介してのみ変更され、すべてのクライアントはそれに応じてデータを設定する必要があります。
要件:
新しいデータがサーバーに追加された場合、新しいデータとともにクライアント データベースでも挿入操作を実行する必要があります。サーバーでデータが更新された場合、特定の ID を持つデータはクライアント データベースでも更新する必要があります。サーバーでデータが削除された場合、そのデータはローカル データベースからも削除する必要があります。
同期するテーブルの構造...
サーバー データベースのすべてのテーブルには、last_dateフィールドとpost_statusがあります。クライアントのテーブルにはlast_dateフィールドしかありません。
管理者が既存のデータセットを更新するたびに、last_dateが変更され、post_idは変更されません。
post_statusは on と off で、管理者が投稿をデータベースから削除した場合は off ステータスになり、それ以外の場合は on ステータスになります。
プロセス:
クライアント データベースが初めて同期されると、サーバー データベースからすべてのデータセットが順番にダウンロードされます。
オフライン アプリケーションが同期する必要がある場合、最新の last_date の後にのみデータを送信するようにサーバーに要求します。例: API への get リクエスト: getdata.php?timestamp=1234。
サーバーの応答を受信した後のクライアントのタスク:
サーバーの応答は次のようになります。例: JSON 形式:
仮定しましょう:
1 番目の辞書項目 :挿入されます。
2 番目の辞書項目:削除します。
3 番目の辞書項目:既存の投稿の変更を表します。
今、この要件に最も適した最適な同期アルゴリズムは何かを知りたい
質問:
クライアントは更新されたアイテムについてどのように知る必要がありますか? サーバーから返された各 post_id がローカル データベースに既に存在するかどうかを確認していますか? たとえば、ユーザーがサーバーに送信したタイムスタンプの後に 1000 個のデータがサーバーに追加された場合、クライアントは各 ID がローカル データベースに存在するかどうかを比較し、ローカル データベースに ID が見つかった場合は、そのデータセットをサーバーから提供された新しいデータで更新する必要があります。 .
行のステータスを OFF に設定せずに、管理者が行をデータベースから直接削除するとどうなりますか?
c - ユーザー空間で可能な完了を待ちますか?
Linux ドライバーでスレッドを同期するときに、私が本当に気に入っている関数がいくつかあります
wait_for_completion()
。complete_and_exit()
この API を 2 つのスレッドで実装し、メモリ マップを共有し、それぞれカーネルのライターとユーザー空間のリーダーを実装することは可能ですか?
wait_for_completion()
そうでない場合、C 言語のユーザー空間スレッドに提供する努力は何でしょうか?
よろしく、 Cyring (Fr)