数据模型结构经常变化:最佳工作方式

时间:2016-04-28 07:49:54

标签: ios objective-c swift core-data database-migration

我一直在我的iOS(swift和objectiveC)应用程序中使用Coredata。

现在在我的新项目中我有这种情况;数据模型频繁更改。例如,以前是String的属性变为Relation,反之亦然,String变为NSNumber,Relation消失,实体与其他表分离,等等。

Coredata仍然是最好的解决方案吗? 我必须总是写一个迁移脚本来解决迁移问题吗?

2 个答案:

答案 0 :(得分:2)

核心数据最好与什么相比?在什么样的衡量轴上?易于管理数据模型迁移?查询速度?对象< - >存储互动?

你可以在很多轴上进行比较。

首先,观察,在现场设备上迁移数据是一个问题。任何数据库都需要一些时间才能迁移。应用无响应的时间。用户可以在迁移过程中杀死应用程序,认为它已经死了因此,请注意更改架构的频率。在启动时,您将失去每个无响应的应用程序的客户。您的同事可能无法理解客户可能会有多变幻无常。用户可能不太关心您的应用程序遭受任何类型的漫长迁移。

根据我的经验,Core Data比大多数环境更好地处理迁移。使用SQLite的其他环境不太可能具有更高的性能。使用其他数据库?然后你重写你的应用程序中的每个对象?哇!那么你有一个以上的迁移问题。

从您的问题来看,听起来您正在经历架构流失。这不是关于您的开发过程的好兆头。在考虑更改数据库之前,我会解决这个问题。

如果有选项,请始终使用轻量级迁移。在需要用于硬迁移的映射模型之前,请仔细考虑。轻量级迁移在该领域往往非常有效。这是一个非常重要的维护特征。硬迁移是您的架构的相当激进的突变。我非常努力地避免漫长的迁移。

答案 1 :(得分:0)

从我的角度来看,核心数据是最佳解决方案,即使在您需要进行硬迁移的情况下也是如此。

  1. (硬)迁移不像改变实体类型那样简单 或从实体和其他人删除属性。对于这种类型 迁移你需要编写所谓的附加脚本 migration process
  2. Lightweight migration很简单 更改模型,例如向实体添加新属性,Core Data执行自动数据迁移。
  3. 这只是我的观点。让我们看看其他人会在这里发布什么。

    Core Data and Swift: Migration