2012-07-30 104 views
0

我正在为图库应用程序构建一个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 

截至目前,我将不得不对服务器的数据库应用程序检查,看是否有时间戳已经改变,如果他们有改变这些领域。

+0

反对什么,你比较时间戳? – 2012-07-30 14:14:14

+1

如果您实际上并不关心时间戳,听起来您并不在意,请改用版本号。如果您还为整个数据库添加版本号,则检查更新过程将非常快速。 – bzlm 2012-07-30 14:15:05

+0

@Tichodroma,数据库应用程序当前拥有的时间戳 – 2012-07-30 14:15:06

回答

1

我会从这里开始有关该主题的更广泛的讨论:How to Sync iPhone Core Data with web server, and then push to other devices?

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

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

  2. 确保服务器被修改为使用该标识符自动增加/更新记录对“主”表的任何创建,更新和删除操作;这个事务/版本标识符可以在表本身中使用,也可以使用某些共享事务日志;

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

  4. 具有该应用跟踪对于其成功接收并完成同步/复制的最后一个标识符;

  5. 写一些服务器例行程序在客户端可以用它的“一次成功”标识,该服务器将返回,因为该标识符已更改的所有记录调用;和

  6. 写入一些移动设备的代码来采取自前面步骤的响应,并且相应地更新其内部数据库。

如果你也想同步的移动变化,并将它们发送回服务器,或者如果你有在什么样的变化,你可以在服务器数据库中做出限制,那么这一切都变得显著更加复杂。

相关问题