4

我有一个依赖于 MySQL 数据库的 Web 应用程序,我正在考虑为此构建一个 iPhone 应用程序。此应用程序将允许用户在 Web 应用程序上浏览/插入/更新/删除其帐户上的数据。

最简单的方法是将 iPhone 应用程序简单地构建为 Web 应用程序的接口,即每个操作都需要连接到 Web。但是,我希望 iPhone 应用程序拥有自己的“离线”版本的数据库。这不仅可以让用户离线工作,还可以提供更好的体验,因为将一切都放在本地意味着更快、响应更快的应用程序。

我会通过使用时间戳并保持最新版本来处理冲突(我已经使用软删除,即当用户删除记录时,我只需设置一个标志),但我还没有完全弄清楚如何处理插入。实际上,如果用户在离线(iPhone 应用程序)和在线(Web 应用程序)数据库中插入新项目,就会发生主键冲突(我所有的表都有一个 INTEGER 字段,主键是自动递增)。我该如何处理这个问题?

我正在考虑有一个双列主键,一个是自动递增的整数,第二个是特定于“设备”的。这样,通过 Web 应用程序添加的新记录将具有 ID 1-web、2-web 等,而通过 iPhone 应用程序 1-iphone、2-iphone 等创建的记录将允许合并两者没有冲突的数据库。你觉得这个主意怎么样?

4

1 回答 1

5

迄今为止最简单的解决方案是使用 UUID。

一个不太优雅的解决方案是让 iPhone id 占据一个已定义的密钥空间子集。例如,使用 64 位密钥,可以为每部 iPhone 分配最高 20 位的特定模式。

于 2010-06-23T23:48:47.810 回答