14

HTML5 (iPad) Web アプリで次のことができるようにしたいと考えています。

  • データをオンライン データベースにアップロードします (SQLite などでオンライン データベースを構築する場合、サイズはおそらく 50Mb 未満になります)。
  • データのサブセットまたは完全なコピーをオフライン Web データベースに抽出する
  • (3G ネットワークのカバレッジ範囲外への移動)
  • ダウンロードしたデータに対して一連の分析型の計算を実行する
  • 計算のパラメーターをオフラインの Web データベースに保存する
  • 繰り返し、長期間にわたるいくつかの異なるオフライン分析タイプの計算セッションの異なるパラメーター セットを保存します。
  • (3G ネットワークがカバーされているエリアに戻ります)
  • 保存したパラメータをオフライン ウェブデータベースから中央のオンライン データベースに同期する

最後のステップまで、すべてのステップに満足しています...

オフライン Web データベースを中央データベースと同期できるかどうかについての情報を探していますが、そのトピックをカバーするものは見つかりません。これを行うことは可能ですか?もしそうなら、それに関する情報へのリンクを提供していただけますか、それとも私の特定のアプリに実装するのに十分なほど詳細に動作するかを説明していただけますか?

前もって感謝します

4

4 に答える 4

6

HTML5ローカルデータベースを特に使用したことはありませんが、オフライン更新と中央データストアへの再同期が必要なモバイルデバイスを使用しました。

データセットがサーバー上で作成されているかオフラインクライアント上で作成されているかにかかわらず、その主キーがUUIDであることを確認します。また、レコードが更新されるたびにタイムスタンプを付けるようにします。

また、オフラインクライアントが最後に同期されたのはいつかはわかりません。

したがって、中央データベースに再同期するときは、最初にオフラインクライアントに、最後の同期以降に変更されたレコードを照会します。次に、中央データベースにクエリを実行して、最後の同期以降にこれらのレコードのいずれかが変更されているかどうかを確認します。

中央データベースで変更されていない場合は、オフラインクライアントからのデータで更新します。前回の同期以降にサーバー上のレコードが変更された場合は、それらをクライアントに更新します。

UUIDが中央サーバーには存在しないが、オフラインクライアントには存在する場合は、UUIDを挿入します。その逆も同様です。

レコードをパージするには、「パージ」列を作成し、sysncクエリを実行すると、各データベースからレコードを削除します(または、アプリケーションの要件に応じて、レコードを非アクティブとしてマークします)。

前回の更新以降に両方のレコードが変更された場合は、ユーザー入力に依存して調整するか、どちらのレコードが「優先」するかを指定するルールを使用する必要があります。

完全に空のデータベースにインポートする場合を除いて、通常、組み込みのデータベースインポート関数は信頼しません。

于 2011-04-11T17:44:16.543 に答える
1

手順:

  1. ローカル データベースに変更のリストを保持します。
  2. リモート データベースに接続したら、リモートでの最後の同期以降の変更を確認します。
  3. リモート側の変更がローカルの変更と競合する場合は、ユーザーに何をすべきかを知らせます。
  4. 他のすべての変更については、同期に進みます。
    1. ローカルで変更されていないすべてのオンライン変更をダウンロードします。
    2. リモートで変更されていないすべてのローカル変更をアップロードします。

この方法は、一方の側にデータ コンバーターがあれば、実際にはどのようなデータベースの組み合わせでも機能します。

于 2011-03-12T08:57:58.737 に答える
0

私が訪れたいくつかのサイトから、(サーバーデータベースにSQLiteを使用している限り)可能であるように見えます。

HTML5 Web データベースも SQLite を使用します (ただし、すべてのブラウザがサポートしているわけではなく、W3C はサポートを中止したようです)。

それで...

.dump コマンドを使用してデータをエクスポートし、$sqlite mydb.db < mydump.sql 構文を使用してデータを Web データベースにインポートする場合、php または Java バックエンドをいじってこれを行うことができるはずですか?

次に、「オフライン」データをサーバーに同期する場合は、Web データベースから dump.sql ファイルに反対のダンプを実行し、サーバー データベースにインポートします。

このサイトでは、SQLite ダンプへのエクスポートとインポートについて説明しています

SOURCE: SQLite DB のダンプと復元

于 2011-01-28T16:37:19.113 に答える