Iphone 如何在服务器上同步MySQL服务器数据库和SQLite数据库?

Iphone 如何在服务器上同步MySQL服务器数据库和SQLite数据库?,iphone,database,Iphone,Database,我正在开发一个iPhone应用程序,从远程MySQL服务器检索数据。由于数据库很大,我不想每次应用程序运行时都下载数据,而只想下载一次数据,然后与SQLite数据库同步。(无需反复下载) 如果远程MySQL服务器上有更新,则只下载更新的数据 如果在远程MySQL服务器上有一个insert操作,那么我可以通过比较主键值从数据库表的最后一个插入ID中进行识别。但是如何以最佳效率检查删除和更新操作,所以我只需要下载删除或更新操作的最小数据 如有任何帮助和建议,将不胜感激 谢谢, Jim。首先,我想说,

我正在开发一个iPhone应用程序,从远程MySQL服务器检索数据。由于数据库很大,我不想每次应用程序运行时都下载数据,而只想下载一次数据,然后与SQLite数据库同步。(无需反复下载)

如果远程MySQL服务器上有更新,则只下载更新的数据

如果在远程MySQL服务器上有一个insert操作,那么我可以通过比较主键值从数据库表的最后一个插入ID中进行识别。但是如何以最佳效率检查删除和更新操作,所以我只需要下载删除或更新操作的最小数据

如有任何帮助和建议,将不胜感激

谢谢,

Jim。

首先,我想说,与其进行大量的首次下载,为什么不在应用程序中附带一份数据库副本呢?那么你所要担心的就是增量更新

如果数据库没有被不断修改,我认为最简单的方法就是利用查询日志。在MySQL数据库上打开查询日志记录,以便将所有操作记录到一个文件中。然后,当iPhone请求更新的数据时,您可以简单地解析日志文件并准备一个描述插入、更新和删除的响应


如果数据库被许多用户实时修改,这并不是一个好主意,因为查询日志将是巨大的。在这种情况下,您可以在数据库中使用createdOn/modifiedOn时间戳来了解哪些插入和更新是iPhone响应的候选项。但是,对于删除,您可以在iPhone应用程序发现之前将每一行标记为“未真正删除”,或者创建一个名为“已删除数据”的表,并将内容移动到其中,而不是显式删除它。

谢谢。那正是我要找的。在我的情况下,日志文件肯定会用于获取更新。再次非常感谢。吉姆,你能告诉我如何在iphone的Sqlite数据库上同步MySql服务器数据库吗。