首页 文章

iOS - 核心数据和服务器数据库同步最佳实践[重复]

提问于
浏览
21

这个问题在这里已有答案:

我开始为大型应用程序设置核心数据模型,并且希望在涉及服务器数据库和脱机功能时提供有关正确同步方法/技术的一些反馈 .

我使用PHP和mySQL作为我的Web服务器/数据库 .

我已经知道如何连接,接收数据,存储到核心数据等等 . 我正在寻找有关方法和跟踪数据更改的特定实例的更多帮助:

A)确保应用程序和服务器在联机和脱机使用期间保持同步(即,一旦重新联机,离线活动将被推升) . B)优化将数据保存到应用程序的速度 .

My main questions are:

What is the best way to check what new/updated data in the app still needs to be synchronized (after offline use)?

(即在我的所有核心数据实体中,我放置了一个BOOL类型的'isSynchronized'属性 . 然后在成功提交后更新为'YES'并从服务器发回响应) . 这是最好的方法吗?

What is the best way to optimize speed of saving data from server to core data?

(即,如何更新核心数据中的数据,而不是服务器数据库上的数据,而不是遍历每个实体,只是每次都更新)?是否可以在不添加服务器数据库列的情况下跟踪每个表的更新时间戳?

同样,我已经知道如何下载数据并将其存储到Core Data,我只是寻求一些帮助,确保在确保优化处理时间的同时确保跨应用和服务器数据库同步的最佳实践 .

1 回答

  • 9

    我将最后修改的时间戳存储在手机上的核心数据记录和服务器上的mysql表的数据库中 .

    手机会搜索自上次同步以来发生变化的所有内容,并将其与上次同步的时间戳一起发送到服务器,并且服务器会响应自提供的同步时间戳以来已经更改的所有内容 .

    当许多记录发生变化时,性能是一个问题 . 我在背景NSOpeartion上进行同步,它具有自己的托管对象上下文 . 当后台线程完成对其托管对象上下文的更改时,有一个API用于将所有更改合并到主线程的托管对象上下文中 - 可以将其配置为在发生任何冲突时简单地丢弃所有更改用户在同步进行时更改数据 . 在那种情况下,我只需等待几秒钟,然后再尝试进行同步 .

    在较旧的硬件上,即使经过多次优化,如果用户开始在应用程序中执行操作,也必须完全中止同步 . 它只是使用了太多的系统资源 . 我认为更现代的iOS设备可能足够快,您不再需要这样做了 .

    (顺便说一句,当我说“很多记录已经改变”时,我的意思是30,000左右的行正在更新或插入手机)

相关问题