代码之家  ›  专栏  ›  技术社区  ›  Hoang Pham

构建通过webapi与服务器同步数据的iphone应用程序的主要挑战是什么?

  •  2
  • Hoang Pham  · 技术社区  · 14 年前

    我想构建一个利用服务器数据的应用程序,它需要将应用程序中的数据与其他客户端应用程序输入的数据同步。 所以,有一些问题:

    • 如何有效地设计数据库模式?它应该在服务器上复制相同的数据库架构,还是应该添加更多的字段和实体?
    • 在每个应用程序启动时,或在应用程序的某个空闲状态期间,或在其他情况下,同步数据的策略是什么…
    • 如何处理用户在应用程序中输入的数据与其他客户端应用程序输入的数据之间的冲突。

    欢迎任何回应。

    1 回复  |  直到 14 年前
        1
  •  5
  •   apenwarr    14 年前

    好吧,你已经在你最初的问题中确定了主要的挑战。真正的答案是这与iphone没什么关系-数据库复制是 真的很难 .

    以下是我可以提供的一些经验法则:

    • 单向复制 数据是 百万次 比双向复制更容易,如果你能摆脱它的话。

    • 如果数据库 客户端和服务器上的架构相同。

    • 要执行双向复制,您需要存储 每端每行的时间戳, 或将一端的全部内容存储在另一端。(即,服务器需要知道客户端的最新状态,或者客户端需要知道服务器的最新状态)。

    • 要允许从断开连接的客户端添加行,您需要 使用guid标识行 (或散列,例如sha-1),不是自动递增字段。在与服务器同步之前,可以将新的客户端添加的行保持为“无标识”状态,但这样做太疯狂了。

    • 没有真正的解决冲突的好方法。 不完美的选项包括最后一个写入程序wins(最后一个同步修改记录的人得到插入的记录副本)、三向合并(当有人发送修改记录时,检查他们更改了哪些列,并且只更改那些列,因此不会覆盖对其他列的任何更改umns),分为两个记录(如果两个人对同一个记录进行了更改,只需创建两个记录,并假设最终有人会修复它)和“询问用户”(这在技术上是最合理的,但需要大量的ui工作,用户甚至很少理解什么是冲突 )