html5 を使用して最終年度のプロジェクトの Web システムを開発する予定ですが、モバイルからサーバーに同期する方法について少し混乱しています... モバイル (SQL lite) から同期する方法はありますか?管理者(SQLサーバー)へ...この件について親切に助けてください
1 に答える
同期は単純なものから始めることもできますが、すぐにかなり複雑になる可能性があります。それはすべてあなたのニーズに依存します。
次の質問を自問してください。
- 削除を処理する必要がありますか? - 墓石/削除フラグ
- 同期は一方向ですか、それとも双方向ですか? - バックアップ/コピー vs 完全同期
- 保存に 1 秒あたり 100 ミリ秒以上かかるものはありますか? - 日時の問題、またはオーバーラップの必要性
- 一度に 2 つのデバイス (またはデバイスとサーバー) でレコードを編集できますか? - 競合
簡単な解決策は、「lastModified」フィールドを使用して、どこまで行ったかを追跡することです。データベースを実行しているシステムの日付/時刻を使用することを忘れないでください。そのため、デバイスでサーバーの現在の UTC 日付/時刻を取得し、その日付/時刻までのすべての更新を取得します。保存した日付よりも新しいため、すべてのレコードをクエリして、それらを他のサーバーにコピーします。
より複雑なソリューションでは、削除の追跡、トランザクションの処理 (同期前に開始、同期後に終了、単純なソリューションでは見逃された)、高度な競合解決、バッチ処理のサポートなどがあります。
さらに安全にするために、日付/時刻の使用をやめて、リビジョン用のグローバル カウンターを用意する必要があります。トランザクションを開始したがコミットしていない更新を追跡したい場合、これはさらに複雑になります (SQL-Server Change Tracking を参照してCHANGE_TRACKING_CURRENT_VERSION()
ください)。
その方法の一例として、 Microsoft Sync Frameworkで詳細を確認できます。