【问题标题】:Firestore schema versioning and backward compatibility with android app to prevent crashesFirestore 架构版本控制和向后兼容 Android 应用程序以防止崩溃
【发布时间】:2019-02-06 02:34:00
【问题描述】:

Firestore 和 NOSQL 是一个面向文档的数据库。现在,当我将数据与 Firebase SDK 和 Android 应用程序一起使用时,如何管理数据的版本控制?

例如假设我有一个 JSON 模式,我用我的 1.0.0 版本的 android 应用程序启动。后来 1.0.1 出现了,我必须为较新的文档添加一些额外的字段。由于我更改了结构以获取更多信息,因此它仅适用于新文档。

因此,使用此逻辑,我可以看到我的 Android 应用程序必须能够处理所有版本的 JSON 树,如果用于我在 Firebase 控制台中使用 Firestore 创建的这个项目。但这可能很痛苦吧,我一直背负着向后兼容的重担?有没有办法拥有某种版本,如 protobuf 或 android 应用程序可以发送到 firestore 服务器端的东西,以便我们可以自动做一些事情来防止 android 应用程序在看到新字段时崩溃?

另见此线程,工程师发布的那种问题。当 Android 应用程序在 JSON 树中发现新字段时,您可能会遇到此类问题 Add new field or change the structure on all Firestore documents

对我们应该如何处理有什么建议吗?

在 node.js 架构中,我们使用 default-> v1.1/update 或 default-> v1.0/update,这样我们就可以管理路由了。

但是对于 android+firebase SKD-> 与 Firestore NOSQL 交谈,我如何管理 json 模式的版本控制。

【问题讨论】:

  • 我也有同样的问题 - 有什么新想法吗?
  • @doug-stevenson Doug,你有没有机会得到权威的答案?

标签: android firebase nosql google-cloud-firestore versioning


【解决方案1】:

我们提出了 Firestore 的下一个版本:

  • 首选附加更改,向后兼容 -> 保持结构 照原样,但是添加了新字段(旧的可以忽略 移动客户端)
  • 万一这是不可能的,我们正在倒退 不兼容的更改:我们在 Firestore 中有一个名为“版本控制”的集合,其中存储具有允许版本的客户端。然后午餐移动应用程序为当前平台获取此版本,并将配置中的版本与存储在 Firestore 中的版本进行比较 - 如果版本低于允许的最低版本,则需要强制升级,否则如果版本低于当前版本,我们建议更新客户端,否则一切都很好.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    相关资源
    最近更新 更多