【问题标题】:SQlite synchronization schemeSQlite 同步方案
【发布时间】:2009-12-24 14:10:52
【问题描述】:

我知道现在是圣诞节前夕,所以现在是在网上寻找铁杆程序员的最佳时机:)。

我有一个包含超过 10 K 记录的 sqlite db 字段,我从 mysql 数据库生成 db,我以通常的方式在我的 iphone 应用程序中构建了 sqlite db。

记录包含有关产品及其价格、商店等的信息,这些信息当然不是静态的,我使用自动方案来填充并不断更新我的 mysql 数据库。

现在,如何使用 mysql db 中可用的新信息更新 iphoen app sqlite 数据库,db 结构仍然相同,但记录包含新信息。

谢谢。 阿赫德

信息: libsqlite3.0, 苹果操作系统 3.1, mysql 2005, Mac OS X 10.6.2

【问题讨论】:

    标签: iphone mysql synchronization sqlite


    【解决方案1】:

    有一个问题你需要先回答; 您如何确定 MySQL 数据库中的更改记录集?

    或者,更具体地说,假设 MySQL 数据库处于状态 A,发生了一些事务,现在处于状态 B,你怎么知道 A 和 B 之间发生了什么变化?

    底线;您需要在 MySQL 中启用此模式。一旦您回答了那个问题,您就可以回答“我如何同步问题?”。

    【讨论】:

      【解决方案2】:

      我有一个类似的应用程序。

      我正在使用推送通知让我的用户知道有新的或更新的数据可用。

      每次更新服务器上的记录时,我都会在记录旁边存储一个连续的记录编号。

      每个注册的 UDID 都有一个与之关联的“最后更新”编号,其中包含它曾经下载过的最高记录编号。

      当任何给定设备获取其更新时,所有大于存储在服务器上的 UDID 的最后更新记录号的数据库记录都将发送到该设备。如果一切正常,UDID 的最后更新记录号将设置为最后发送的记录号。

      如果用户觉得需要将他的设备同步到整个数据库,他可以选择获取所有记录并刷新他的数据库。

      似乎运行良好。

      -t

      【讨论】:

        【解决方案3】:

        你可以通过搜索“iphone同步”找到很多其他类似的问题:

        https://stackoverflow.com/search?q=iphone+synchronization

        我将假设数据仅从 mysql 传输到 sqlite,而不是反向。

        我可以想象出三种方式来做到这一点。首先是重新下载 每次更新期间的整个数据库。我在下面描述的另一种方法是创建一个“日志”表来记录对主表的修改,然后在进行更新时只下载新日志。

        我会在您的 SQL 数据库中创建一个新的“日志”表来记录对需要同步的表的更改。日志可以包含一个“修订”列来跟踪更改的顺序,一个“类型”列来指定它是插入、更新还是删除,如果是受影响的行,则包含行 ID,最后有主表中的整个列集。

        您可以使用存储过程作为包装器来修改您的主表,从而自动创建日志条目。

        只有 10k 条记录,我不希望这个日志表增长到那么大。

        然后您将在 sqlite 中跟踪从 mysql 下载的最新版本。要更新表,您需要在最新更新后下载所有日志条目,然后将它们应用到您的 sqlite 表。

        【讨论】:

          猜你喜欢
          • 2013-03-16
          • 2014-11-21
          • 1970-01-01
          • 1970-01-01
          • 2012-12-16
          • 2011-02-05
          • 2012-07-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多