使用 Cloud Firestore 后端时迁移到新数据模型的最佳实践

Fed*_*ede 6 versioning data-modeling firebase firebase-realtime-database google-cloud-firestore

问题如下。我们有 2 个本机应用程序(ios 和 android)连接到 Firestore 后端。我们当前的数据模型存储分布在 5 个不同集合中的用户信息(个人资料数据、用户答案、用户法律文件等)。这意味着,很多时候,当我们需要查询有关用户的数据时,我们需要进行多个查询并手动将它们连接在一起以获得我们需要的数据。将所有信息存储在一个集合中对我们来说要简单得多。这是我们现在遇到的问题,而且随着我们业务的不断发展,我们会有更多的情况需要改变数据模型的结构。

\n

目前,我们使用Firestore API在前端查询user\xe2\x80\x99s数据以进行实时更新。ATM 我们不\xe2\x80\x99t 使用自定义端点,因此我们\xe2\x80\x99t 没有任何类型的版本控制。

\n

是否有任何最佳实践或策略来执行此类数据模型迁移而不强制用户升级到应用程序的最新版本?

\n

我们可以想一些解决办法:

\n
    \n
  1. 使用版本化端点并忘记实时更新(将 FE 与 BE 解耦)
  2. \n
  3. 将当前数据迁移到新的数据模型,同时保持旧集合仍处于活动状态以服务旧版本的应用程序。此外,编写一些云函数侦听器以保持 2 个模型同步(每当旧版本的应用程序写入 5 个用户集合中的任何一个时,将该数据复制到新的数据模型)
  4. \n
  5. ...\n\xe2\x80\xa6
  6. \n
\n

不断发展的数据模型以及多个 FE\xe2\x80\x99 消耗数据的问题非常常见。通常的最佳实践是拥有一个 FE 与之通信的版本化端点,以打破对数据模型的直接依赖。然而,Firebase 似乎并没有为此提供一套最佳实践。这对我们来说听起来有点奇怪,因为这是一个非常常见的问题,而且 Firebase 开箱即用地解决了许多其他常见的挑战。

\n

我们缺少什么?

\n

相关问题:\n https://www.reddit.com/r/Firebase/comments/dyhzlv/best_practices_of_versioning_with_a_firestore/

\n

谢谢!

\n