您能否以更加专注和线性的方式使用 Realm 进行迁移?
Can you migrate with Realm in a more focused and linear fashion?
Realm 是否有可能进行线性、更集中、独立的迁移,Rails 是如何做到的?
例如,据我目前的理解,如果 Person
class 更改两次(因此两次迁移),当添加 migration 2
并且最终架构更改时,migration 1
将需要修改,以便迁移到最终架构。
有没有办法在迁移之间迁移到中间模式(migration 1
时的模式)?
我意识到这会降低效率,因为需要创建临时表并完成额外的工作,而不是仅仅迁移到最新的模式。但是,花在修改旧迁移、认知开销、测试复杂性等方面的开发时间更少。
Realm 支持线性迁移的场景有很多,但是你描述的情况是不支持的。 Realm 可以执行迁移而不必保留所有模式的完整历史记录的原因,就像 Core Data 通过其 xcdatamodeld 包所做的那样,是因为 Realm 可以访问模式(在磁盘上)和目标模式(内存模型 类).
为了支持您请求的用例,您必须在您的应用程序中保留架构的所有先前版本,以便 Realm 可以在中间迁移步骤中知道要创建哪些表。作为 Realm 用户,这不仅会给您带来更多工作,而且它是一种设计反模式,无疑会导致效率降低和迁移时间延长。
我希望这是有道理的,如果您愿意,我很乐意进一步解释。
有关更多信息,请参阅 Realm 的迁移文档,其中包含更多内容:https://realm.io/docs/objc/latest/#migrations
Realm 是否有可能进行线性、更集中、独立的迁移,Rails 是如何做到的?
例如,据我目前的理解,如果 Person
class 更改两次(因此两次迁移),当添加 migration 2
并且最终架构更改时,migration 1
将需要修改,以便迁移到最终架构。
有没有办法在迁移之间迁移到中间模式(migration 1
时的模式)?
我意识到这会降低效率,因为需要创建临时表并完成额外的工作,而不是仅仅迁移到最新的模式。但是,花在修改旧迁移、认知开销、测试复杂性等方面的开发时间更少。
Realm 支持线性迁移的场景有很多,但是你描述的情况是不支持的。 Realm 可以执行迁移而不必保留所有模式的完整历史记录的原因,就像 Core Data 通过其 xcdatamodeld 包所做的那样,是因为 Realm 可以访问模式(在磁盘上)和目标模式(内存模型 类).
为了支持您请求的用例,您必须在您的应用程序中保留架构的所有先前版本,以便 Realm 可以在中间迁移步骤中知道要创建哪些表。作为 Realm 用户,这不仅会给您带来更多工作,而且它是一种设计反模式,无疑会导致效率降低和迁移时间延长。
我希望这是有道理的,如果您愿意,我很乐意进一步解释。
有关更多信息,请参阅 Realm 的迁移文档,其中包含更多内容:https://realm.io/docs/objc/latest/#migrations