【发布时间】:2023-04-01 16:38:02
【问题描述】:
我们基于 Firestore 数据库的模型会自然演变。现在我们想将所有现有文档更新为新的(隐式)模式。
是否有任何工具支持这一点或最佳做法是什么。我希望有一个可与 Rails ActiveRecord 迁移相媲美的概念。
【问题讨论】:
标签: google-cloud-firestore schema-migration
我们基于 Firestore 数据库的模型会自然演变。现在我们想将所有现有文档更新为新的(隐式)模式。
是否有任何工具支持这一点或最佳做法是什么。我希望有一个可与 Rails ActiveRecord 迁移相媲美的概念。
【问题讨论】:
标签: google-cloud-firestore schema-migration
目前,对于 Firestore,您必须编写自己的代码才能将所有现有文档更新为新的(隐式)架构。几周前,我在一篇文章中读到,Firestore 团队正在努力让这一切在未来变得更容易。
如果您的新架构需要对整个数据库进行一些更改,您还可以考虑使用Firestore import / export system,它允许您将数据转储到 GCS 存储桶中。它不是您可能预期的 JSON 格式,但它与 Cloud Datastore 使用的格式相似,因此我认为可以帮助您解决此问题。
【讨论】:
available 的布尔类型文档时,我遇到了类似的问题。所以我通过以下方式解决了这个问题。我创建了一个新版本的应用程序,一旦用户打开应用程序,它就会添加这个新属性,默认值为 true。在 3 周内,几乎 85% 的用户可以使用这个新选项。所以这就是我回答你的问题的原因,因为我有同样的问题,我以这种方式解决了它。但是目前不存在像 rails ActiveRecord 这样的选项。希望您重新考虑并接受我的回答。
我找不到 Firestore 架构迁移工具,所以我写了fireway。目前非常简单(不支持逆向迁移),但对于我的用例来说已经足够了。
这是一个迁移脚本示例:
// migrations/v0.0.1__example.js
module.exports.migrate = async ({firestore}) => {
await firestore.collection('name').add({key: 'value'});
};
然后运行fireway migrate 来迁移您的默认项目。
【讨论】: