【问题标题】:Versioning objects in firebaseFirebase 中的对象版本控制
【发布时间】:2015-11-24 11:30:14
【问题描述】:

我正在使用 firebase 作为移动应用程序的数据库。使用特定数据库结构的移动应用程序版本 1。但在第 2 版中,我有一个重大的架构更改。我找不到任何具体的文档来提及管理数据库升级的最佳实践。所以我正在考虑以下步骤,这在纸上看起来不错。

  1. 应用程序版本 1 正在使用 firebase/v1 进行生产
  2. 将版本 1 架构 firebase/v1 复制到 firebase/v2
  3. 升级firebase/v2架构
  4. firebase/v1 上禁用写操作
  5. 分发指向 firebase/v2 的应用程序 v2

通过这些步骤,使用旧版本应用的用户将只能读取数据。因此,除非他们不升级应用程序,否则他们将无法修改任何数据。

我在管理架构更新方面是否朝着正确的方向前进?或者有没有更好的方法来做到这一点。

【问题讨论】:

  • 我总是首先寻找向后兼容的方法,因为这对您的用户的破坏性最小。如果您找不到向后兼容的方法,那么您提出的确实是常见的第二种方法。在这种情况下,如果您已经在您的应用中添加了“您的应用处于只读模式,因为它已过时。请通过单击...进行升级”,这会有所帮助。
  • 感谢弗兰克消除我的疑虑,我一直在等待这个。在这种特殊情况下,我们将无法使模式更改向后兼容。这就是为什么要尝试做一些不同的事情,我不确定这是否是最好的解决方案。
  • 我同意@FrankvanPuffelen 始终将向后兼容性放在首位。但是@kunal,如果您找不到方法,还有另一种解决方案,与您的解决方案几乎相同。您可以轻松编写一个始终填充firebase/v2 的Firebase 云函数,而不会阻止firebase/v1 的写入。因此,当用户将应用程序更新到最新版本时,将能够顺利迁移到新的 Firebase 数据结构而不会出现问题。在我们的案例中,我们已经这样做了几次,并且在 ezhome,我们使用 firebase 已经很多年了。
  • 我建议您实际上强制用户升级以使用该应用程序而不是向后兼容。否则,您可能很难维护您的应用程序。不幸的是,当您的数据增加时,使用 Firebase DB 会出现问题,因此请确保在您的第二个版本中,您的结构比第一个版本更好。

标签: android ios firebase rest


【解决方案1】:

使用云函数数据库函数将数据从db/v1迁移到db/v2。在 db/v1 的更新事件中,您可以并行写入 db/v2,因此所有活动用户数据都可以移动到 db/v2。

https://firebase.google.com/docs/functions/database-events

尽快迁移数据!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2019-05-06
    相关资源
    最近更新 更多