2

SQLite データベースを使用してデータをローカルに保存する Adob​​e AIR アプリケーションを開発しています。いつでも、エンド ユーザーに自分のローカル データを中央の MySQL データベースに同期してもらいたいと考えています。

これを正しく行うためのヒントやアドバイスはありますか?パフォーマンスと安定性が鍵です (セキュリティ以外に ;))

4

2 に答える 2

1

私はいくつかの方法を考えることができます:

  1. 定期的に、MySQL データベースをダンプし、ダンプから新しい SQLite データベースを作成します。次に、SQLite データベース (SQLite データベースは 1 つのファイルに含まれています) を提供して、ユーザー クライアントが現在のデータベースをダウンロードして置き換えることができます。

  2. 現在のデータベースを高速化するために必要なステートメント (さまざまな INSERT、UPDATE、および DELETE ステートメント) を生成する diff スクリプトを作成します。これを行うには、データベースに各変更の時間を継続的に記録する必要があります (各行の作成と更新の時間、および削除された行の履歴を保持します)。ユーザーのクライアントは、差分ファイル (さまざまなステートメントのテキスト ファイル) をダウンロードし、それをローカル データベースに適用します。

どちらのアプローチにもそれぞれ長所と短所があります。データベース全体をダンプすることで、すべてのデータが通過することを確認できます。また、差分を作成するよりもはるかに簡単ですが、ダンプ間でデータベースが更新される頻度によっては、サーバーにより多くの負荷がかかる可能性があります。

一方、データベース間の差分を取ると、変更されたデータだけが得られますが (うまくいけば)、論理エラーが発生しやすくなります。ファイルをコピーするだけでなく、必要なすべてのレコードを作成/更新する必要があるため、クライアントにも追加のオーバーヘッドが発生します。

于 2008-11-30T14:59:00.597 に答える
1

サーバーからクライアントに同期するだけなら、Eran のソリューションが機能するはずです。

クライアントからサーバーに同期するだけの場合は、逆にします。

両方の方法で同期している場合は、楽しんでください。少なくとも変更ログを保持する必要があり、競合に対処する方法を理解する必要があります。

于 2008-12-09T03:12:40.173 に答える