我有一个依赖于 MySQL 数据库的 Web 应用程序,我正在考虑为其构建一个 iPhone 应用程序。该应用程序将允许用户在网络应用程序上浏览/插入/更新/删除其帐户的数据。
最简单的方法是将 iPhone 应用程序简单地构建为 Web 应用程序的界面,即每个操作都需要连接到网络。不过,我希望 iPhone 应用程序有自己的“离线”版本的数据库。这不仅允许用户离线工作,而且还可以提供更好的体验,因为一切都在本地意味着应用程序更快、响应更灵敏。
我会通过使用时间戳并保留最新版本来处理冲突(我已经使用软删除,即当用户删除记录时我只需设置一个标志),但我还没有完全弄清楚如何处理插入。事实上,如果用户在离线(iPhone 应用程序)和在线(Web 应用程序)数据库上插入新项目,就会出现主键冲突(我的所有表都有一个以自动增量作为主键的 INTEGER 字段)。我该如何处理这个问题?
我正在考虑有一个两列主键,一个是自动递增整数,第二个是特定于“设备”的。这样,通过 Web 应用程序添加的新记录将具有 ID 1-web、2-web 等,而通过 iPhone 应用程序创建的记录将具有 ID 1-iphone、2-iphone 等...这将允许合并这两个记录数据库而不会发生冲突。你觉得这个想法怎么样?
迄今为止最简单的解决方案是使用 UUID。
一个不太优雅的解决方案是让 iPhone id 占据密钥空间的定义子集。例如,使用 64 位密钥,可以为每部 iPhone 分配最高 20 位的特定模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)