我正在为一个库应用程序构建一个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 :(得分:3)
我从这里开始就这个主题进行更广泛的讨论:How to Sync iPhone Core Data with web server, and then push to other devices?。
但是如果你想从服务器到移动设备进行一些简单的单向同步,那么一种“简单”的方法就是:
修改该服务器数据库,以引入在所有表中使用的某些唯一标识符(无论是事务ID还是版本ID)的概念;
确保修改服务器以使用自动递增/更新的标识符记录对“主”表的任何创建,更新和删除;此事务/版本标识符可以在表本身中使用,也可以使用某些共享事务日志;
在服务器上编写例程,以便客户端可以检索当前标识符;
让应用程序跟踪其成功接收并完成同步/复制的最后一个标识符;
编写客户端可以使用“最后成功”标识符调用的一些服务器例程,服务器将返回自该标识符以来已更改的所有记录;以及
编写一些移动设备代码以获取上一步的响应,并相应地更新其内部数据库。
如果您还希望同步移动设备上的更改并将其发送回服务器,或者您对服务器数据库中可以进行的更改有限制,那么这一切都变得非常复杂。