1

私はギャラリーアプリケーション用のsqliteデータベースの設計に取り組んでいます。タイムスタンプを使用してデータベースが更新されているかどうかを確認するのが良い方法かどうか、またはこれを行うためのより良い方法があるかどうかを知りたいです。

これが私が持っているものです...3つのテーブル:

buildings
  buliding_id PK
  code
  name
  description
  timestamp

building_album
 album_id PK
 building_id FK (reference to buildings->building_id)
 album_url
 timestamp

building_images
 image_id PK
 album_id FK (reference to building_album->album_id)
 image
 timestamp

今のところ、アプリケーションでサーバーのデータベースをチェックして、タイムスタンプが変更されているかどうか、およびそれらのフィールドが変更されているかどうかを確認します。

4

1 に答える 1

4

トピックに関するより広範な議論のためにここから始めたいと思います: How to Sync iPhone Core Data with web server, and then push to other devices? .

しかし、サーバーからモバイル デバイスへの情報の簡単な一方向の同期を行いたい場合、1 つの「簡単な」アプローチは次のようになります。

  1. そのサーバーデータベースを変更して、すべてのテーブルで使用される一意の識別子 (トランザクション ID またはバージョン ID) の概念を導入します。

  2. 自動的にインクリメント/更新される識別子を持つ「マスター」テーブルへの作成、更新、および削除を記録するようにサーバーが変更されていることを確認します。このトランザクション/バージョン識別子は、テーブル自体または共有トランザクション ログを使用することができます。

  3. クライアントが現在の識別子を取得できるように、サーバー上でルーチンを作成します。

  4. 同期/レプリケーションを正常に受信して完了した最後の識別子をアプリに追跡させます。

  5. クライアントが「最後に成功した」識別子を使用して呼び出すことができるサーバールーチンを作成します。サーバーは、その識別子以降に変更されたすべてのレコードを返します。と

  6. 前のステップからの応答を受け取り、それに応じて内部データベースを更新するモバイル デバイス コードを記述します。

モバイルでも変更を同期してサーバーに送り返したい場合、またはサーバー データベースで実行できる変更に制限がある場合、これはすべて非常に複雑になります。

于 2012-08-01T14:48:44.300 に答える