1

我正在为画廊应用程序构建一个 sqlite 数据库。我想知道使用时间戳来检查数据库是否已更新是一种好习惯,或者是否有更好的方法来做到这一点。

这是我所拥有的......三张桌子:

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

我将从这里开始就该主题进行更广泛的讨论:如何将 iPhone Core Data 与 Web 服务器同步,然后推送到其他设备?.

但是,如果您想做一些简单的单向信息从服务器同步到移动设备,一种“简单”的方法是:

  1. 修改该服务器数据库以引入跨所有表使用的某些唯一标识符(无论是事务 ID 还是版本 ID)的概念;

  2. 确保修改服务器以使用自动递增/更新的标识符记录对“主”表的任何创建、更新和删除;此事务/版本标识符可以在表本身中或使用某些共享事务日志;

  3. 在服务器上编写一个例程,以便客户端可以检索当前标识符;

  4. 让应用程序跟踪它成功接收并完成同步/复制的最后一个标识符;

  5. 编写一些服务器例程,客户端可以使用其“最后一次成功”标识符调用该例程,服务器将返回自该标识符以来已更改的所有记录;和

  6. 编写一些移动设备代码以获取上一步的响应并相应地更新其内部数据库。

如果您还想在移动设备上同步更改并将它们发送回服务器,或者如果您对可以在服务器数据库中进行的更改有限制,那么这一切都会变得更加复杂。

于 2012-08-01T14:48:44.300 回答