【发布时间】:2015-11-24 11:30:14
【问题描述】:
我正在使用 firebase 作为移动应用程序的数据库。使用特定数据库结构的移动应用程序版本 1。但在第 2 版中,我有一个重大的架构更改。我找不到任何具体的文档来提及管理数据库升级的最佳实践。所以我正在考虑以下步骤,这在纸上看起来不错。
- 应用程序版本 1 正在使用 firebase/v1 进行生产
- 将版本 1 架构 firebase/v1 复制到 firebase/v2
- 升级firebase/v2架构
- 在 firebase/v1 上禁用写操作
- 分发指向 firebase/v2 的应用程序 v2
通过这些步骤,使用旧版本应用的用户将只能读取数据。因此,除非他们不升级应用程序,否则他们将无法修改任何数据。
我在管理架构更新方面是否朝着正确的方向前进?或者有没有更好的方法来做到这一点。
【问题讨论】:
-
我总是首先寻找向后兼容的方法,因为这对您的用户的破坏性最小。如果您找不到向后兼容的方法,那么您提出的确实是常见的第二种方法。在这种情况下,如果您已经在您的应用中添加了“您的应用处于只读模式,因为它已过时。请通过单击...进行升级”,这会有所帮助。
-
感谢弗兰克消除我的疑虑,我一直在等待这个。在这种特殊情况下,我们将无法使模式更改向后兼容。这就是为什么要尝试做一些不同的事情,我不确定这是否是最好的解决方案。
-
我同意@FrankvanPuffelen 始终将向后兼容性放在首位。但是@kunal,如果您找不到方法,还有另一种解决方案,与您的解决方案几乎相同。您可以轻松编写一个始终填充
firebase/v2的Firebase 云函数,而不会阻止firebase/v1的写入。因此,当用户将应用程序更新到最新版本时,将能够顺利迁移到新的 Firebase 数据结构而不会出现问题。在我们的案例中,我们已经这样做了几次,并且在 ezhome,我们使用 firebase 已经很多年了。 -
我建议您实际上强制用户升级以使用该应用程序而不是向后兼容。否则,您可能很难维护您的应用程序。不幸的是,当您的数据增加时,使用 Firebase DB 会出现问题,因此请确保在您的第二个版本中,您的结构比第一个版本更好。