使用带有数十个更新的轻量级迁移是否会降低性能?

发布于 2024-09-05 12:44:26 字数 241 浏览 2 评论 0原文

我认为我注意到的一个问题是,在发布更新时我必须保持整个模型版本堆栈的完整性。我不确定如果有人拥有包含填充数据的 1.0 版本,然后立即更新到 5.0 版本,而没有中间的任何版本,会发生什么情况。因此,迁移还必须知道第一个数据模型是什么样的。或者也许这根本不起作用。不知道。

然而,经过一些更改后,我有大约 25 个数据模型,其中最后一个是当前版本。所以我的猜测是,持久存储协调器将需要大量工作来迭代这些版本并逐步找出差异。这不是很糟糕吗?有解决方法吗?

One think I notices is, that I must probably keep the whole stack of model versions intact when shipping updates. I am not sure what happens if someone has version 1.0 with populated data, and then instantly updates to version 5.0 without any of the versions inbetween. So the migration must also know what was that very first data model like. Or maybe this doesn't even work at all. don't know.

However, after some changes I had like 25 data models in there where the last one was the current version. So what I guess is, that the persistent store coordinator will have a lot of work iterating over these versions and figuring out differences, step-by-step. Doesn't this suck? Is there a workaround?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

谁把谁当真 2024-09-12 12:44:26

如果用户要从版本 1 升级到版本 5,Core Data 将一次性尝试该操作。

Core Data 没有“版本 1”和“版本 5”的概念,它只理解源模型和目标模型。当用户加载您的“版本 1”时,Core Data 会在您的包中查找源模型。核心数据还将根据“当前”模型确定目的地。从那里它尝试迁移。

因此,当您创建新版本时,您必须测试每个可能的迁移以确保它们有效。如果它们不能自动工作,则为迁移引入映射模型。

因此不存在性能问题,因为 Core Data 只会执行一次迁移。

If a user is going from version 1 to version 5, Core Data will attempt that in one pass.

Core Data has no concept of "version 1" and "version 5", it only understands source and destination models. When a user loads your "version 1", Core Data finds the source model in your bundle. Core Data will also determine the destination based on the "current" model. From there it attempts to migration.

Therefore when you create a new version, you MUST test each possible migration to insure they work. If they don't work with automatic then put in a mapping model for that migration.

So there is no performance issue because Core Data will only perform one migration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文