我有一个依赖于MySQL数据库的Web应用程序,我考虑构建一个iPhone应用程序。该应用程序将允许用户浏览/插入/更新/删除其在Web应用程序上的帐户数据。
最简单的方法是将iPhone应用程序仅构建为Web应用程序的接口,即每个操作都需要连接到Web。但是,我希望iPhone应用程序具有自己的“离线”数据库版本。这不仅允许用户脱机工作,而且还提供更好的体验,因为本地拥有所有内容意味着更快和更响应的应用程序。
我将使用时间戳并保留最新版本来处理冲突(我已经使用软删除,即当用户删除记录时,我只需设置标志),但我还没有完全想清楚如何处理插入。事实上,如果用户在离线(iPhone应用程序)和在线(Web应用程序)数据库中都插入了新项目,则会出现主键冲突(我的所有表都具有INTEGER字段,其中auto-increment为主键)。我该如何解决这个问题?
我考虑使用两个列的主键,一个是自动递增的整数,另一个是特定于“设备”的主键。这样,通过Web应用程序添加的新记录将具有ID 1-web、2-web等,通过iPhone应用程序创建的记录将具有ID 1-iphone、2-iphone等...这将允许合并两个数据库而不会发生冲突。你觉得这个想法怎么样?
最简单的方法是将iPhone应用程序仅构建为Web应用程序的接口,即每个操作都需要连接到Web。但是,我希望iPhone应用程序具有自己的“离线”数据库版本。这不仅允许用户脱机工作,而且还提供更好的体验,因为本地拥有所有内容意味着更快和更响应的应用程序。
我将使用时间戳并保留最新版本来处理冲突(我已经使用软删除,即当用户删除记录时,我只需设置标志),但我还没有完全想清楚如何处理插入。事实上,如果用户在离线(iPhone应用程序)和在线(Web应用程序)数据库中都插入了新项目,则会出现主键冲突(我的所有表都具有INTEGER字段,其中auto-increment为主键)。我该如何解决这个问题?
我考虑使用两个列的主键,一个是自动递增的整数,另一个是特定于“设备”的主键。这样,通过Web应用程序添加的新记录将具有ID 1-web、2-web等,通过iPhone应用程序创建的记录将具有ID 1-iphone、2-iphone等...这将允许合并两个数据库而不会发生冲突。你觉得这个想法怎么样?