iOS版 - 核心数据与服务器数据库同步的最佳实践[复制](iOS - Core Data and

2019-08-17 20:46发布

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

  • 客户端-服务器同步模式/算法? 6个回答

我开始为建立一个大规模应用的核心数据模型,并希望在适当的同步方法/技术的一些反馈,当涉及到服务器数据库和离线功能。

我使用PHP和MySQL我的Web服务器/数据库。

我已经知道如何连接,接收数据,存储到核心数据,等等等等,我期待更多的与方法和跟踪数据变化的特定情况下帮助:

A)确保应用程序和服务器是同步的在线和离线使用(即离线活动期间将获得在线推回过一次)。 B)优化数据保存到应用程序的速度。

我的主要问题是:

什么是检查还是需要在应用程序有什么新的/更新的数据进行同步(脱机使用后)的最好方法?

(即在我所有的核心数据实体,我把BOOL类型的“isSynchronized”属性,然后更新为“是”一次成功提交,并响应从服务器发回)。 这是最好的办法吗?

什么是优化从服务器将数据保存到核心数据的速度最好的方法是什么?

(即如何,我只更新核心数据的数据比什么是对服务器数据库,而无需通过每个实体遍历和更新只是每一次旧的)? 是否有可能不添加跟踪更新时间戳每个表格服务器数据库列?

再次,我已经知道如何下载数据,并存储到核心数据,我只是在寻找一些帮助,确保跨应用程序和服务器数据库同步,同时确保最优化的处理时间的最佳实践。

Answer 1:

我存储在手机上的两个核心数据记录,并在服务器上的MySQL表数据库中的最后一次修改的时间戳。

一切手机搜索自上次同步后更改,并与上次同步的时间戳一起将其发送到服务器,服务器用,因为提供的同步时间戳已经在它的最终改变了一切响应。

性能是一个问题的时候了很多纪录已经改变。 我做它有它自己的管理对象上下文背景NSOpeartion同步。 当以它的管理对象范围内的后台线程已经完成更改,对于合并所有更改到主线程的管理对象上下文的API - 它可以被配置为简单地扔掉所有的变化,如果有造成任何冲突用户改变数据而同步回事。 在这种情况下,我只是等待几秒钟,然后再次尝试做一个同步。

在老硬件上即使经过多次的优化是必要的,如果用户开始在应用程序中做的东西完全中止同步。 它是简单地使用过多的系统资源。 我觉得更现代的iOS设备可能是速度不够快,你不必这样做了。

(顺便说一下,当我说“了很多纪录已经改变了”我的意思是30000点这样的行更新或插入电话)



文章来源: iOS - Core Data and Server Database Synchronization Best Practices [duplicate]