gpt4 book ai didi

firebase - Firebase Cloud Firestore : fetching documents over collections 的成本优化模式

转载 作者:行者123 更新时间:2023-12-03 14:25:25 25 4
gpt4 key购买 nike

我的目标是在使用 Firebase Cloud Firestore 时优化应用架构的成本。我了解 Cloud Firestore 的定价模型是按读/写计算的。因此,出于成本优化的目的,我正在考虑以下模式。我想知道这是“最佳实践”还是反模式。

这个想法是,每当我创建一个新文档以添加到集合中时,我都会让用户更新第二个“主文档”,其中包含文档内容的某个子集以及来自许多不同用户的许多类似文档的相同内容。

然后,当我去获取列表数据时,我不是获取一个集合并为从集合中读取的每个文档(多次读取)收取费用,而是只检索主文档(一次读取)。

在代码中,它将如下所示。

取而代之的是:

db.collection("reviews")
.get()
.then(querySnapshot => {
querySnapshot.forEach(doc => {
// doc.data() is never undefined for query doc snapshots
console.log(doc.id, " => ", doc.data());
});
})

我这样做:
const docRef = db.collection("reviews").doc("MasterList");

docRef.get().then(doc => {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
})

这是成本方面的最佳实践吗?或者这是一种反模式?

最佳答案

编辑: 2021 年 8 月 27 日
为了更好地理解,我写了一篇关于这个主题的文章:

  • How to reduce Firestore costs?

  • 拥有“主文档”的想法是个好主意,因为即使您更改其中的多个属性,您也可以进行一次写入操作 但是 约束存在问题, documents have limits .因此,当涉及到可以放入文档的数据量时,存在一些限制。根据关于 的官方文档用法和限制 :

    Maximum size for a document: 1 MiB (1,048,576 bytes)


    如您所见,单个文档中的数据总量限制为 1 MiB。当我们谈论存储文本时,您可以存储很多内容,但随着文档变大,请注意此限制。
    Cloud Firestore 已针对存储大量小文档进行了优化。所以你应该利用这个功能。即使您需要在单独的集合中复制和更新多个文档,我也建议您以这种方式进行。
    附言如果您担心成本,还可以查看 Firebase 实时数据库并尝试将它们一起使用。工作得很好。

    关于firebase - Firebase Cloud Firestore : fetching documents over collections 的成本优化模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52609184/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com