【发布时间】:2015-10-22 13:27:51
【问题描述】:
客户端数据库 - CoreData (iOS)
服务器数据库 - MySQL
我正在尝试实现客户端和服务器之间的数据同步,但复杂的部分是架构是高度相关的。我正在经历几种已经在使用的同步模式,看起来它们中的大多数都是基于 NOSQL 或无模式数据库的。想知道对于高度相关的数据是否有任何同步模式。我已经使用过 couchbase、dropbox sync api、wasabi synch 等。以下是关注点
1) 高度相关的数据意味着,有几个相互关联的表,并且创建/更新发生在所有表上。现在我计划为每个表做单独的 CRUD 请求。这是一个好方法吗?但问题是请求应该有严格的排序,因为在收到 table-2 数据之前无法处理 table-3 中的更改。这种关系很难同步。
2) 客户端上的更改跟踪。识别特定表(CoreData 实体)中更改的最佳方法是什么。我正在计划一种增量方法,一次只上传类似对象的更改。有任何见解/链接吗?
3) 数据合并/冲突解决 - 我偶然发现了这部分。一种方法是在每个对象中使用修改后的时间戳,但是如果设备日期不同步或手动更改怎么办。
我想知道这种同步模式与 RDBMS 支持的服务器或任何替代方法的影响/挑战。
问题 #1 解释
假设有 10 个表,API 公开这 10 个表的 CRUD 请求。 1 请求将只做任何一张表的 C/R/U/D。所以我的问题是,在离线数据同步方面,这是设计此类 API 的一种好方法。例如考虑一个关系数据
组织->员工->部门->项目
假设这 4 个表中的一些对象是离线创建的。现在我们需要在网络恢复时将数据同步到服务器。所以它就像首先创建/更新组织,一旦它结束创建/更新员工,以便它可以链接到组织。所以基本上每次 C/U/D 都会从顶层->底层对象发出。所以我的问题是这是否是同步问题中的好方法。因为如果数据不是关系数据,我们可以在单个 C/U/D API 调用中上传所有表中的更改。
【问题讨论】:
-
您的服务器 API 是什么样的?还是那还没有设计?
-
@TomHarrington 服务器在 Heroku 上运行,API 是在 nodejs 中设计的
-
我实际上是指 API 调用是什么样的,而不是它们构建的框架。听起来您担心尝试在客户端应用程序中复制 MySQL 需求,这很不寻常。
标签: ios core-data client-server rdbms data-synchronization