仅将对主数据库所做的更改复制到设备上的数据库

时间:2015-09-13 23:13:36

标签: android database sqlite

我正在尝试在应用程序上工作,其中主数据库的一个版本将存储在设备上。但是,需要使用主数据库中所做的更改来更新此数据库。 由于此数据库的大小,我想查看除更新整个数据库之外的其他选项。

那么,有没有一种方法可以更新设备上的数据库,只更改自上次更新以来在主数据库上所做的更改?

谢谢

2 个答案:

答案 0 :(得分:0)

在每条记录中添加一个时间戳,并在某个地方存储更新/添加发生的最后一个时间戳。在设备中执行相同操作并执行以下操作:

If Device.Timestamp<Online.Timestamp then
get recorded that happen after Device.Timestamp

(使用一种方法记录设备和在线数据库的时间,例如从在线服务器获取当前时间)

答案 1 :(得分:0)

有两种方法可以确定自上次更新以来发生的变化:

  1. 在服务器数据库上,创建所有更改(插入/更新/删除)的日志以及时间戳。 (对于插入和更新,每个表中的附加时间戳列就足够了,但至少必须单独记录删除。)

    设备会在下载时记录上次的时间戳。 在进行下一次下载时,它会告诉服务器仅为其提供具有更大时间戳的行/更改。

    (时间戳不需要是实际的时间戳;它只需要单调增加。)

  2. 下载时,服务器会创建数据库的副本,以便有一个副本包含每个设备的当前状态。 在进行下一次下载时,服务器会将该副本与实时数据库进行比较,并仅发送已更改的内容。

  3. 通常,使用第一个替代方案,因为它在服务器上需要的存储空间更少。但是,它要求必须更改服务器数据库(可能是访问它的所有程序)以正确管理日志。