gpt4 book ai didi

database - 具有大数据集的 Firestore where 子句

转载 作者:搜寻专家 更新时间:2023-10-30 20:23:13 25 4
gpt4 key购买 nike

我的 firestore 数据库中有以下结构:

messages:
m1:
title: "Message 1"
...
archived: false
m2:
title: "Message 2"
...
archived: true

假设我有 20k 条消息,我想使用“where”子句获取存档的消息,我的查询会比按以下方式构建我的数据库慢吗

nonArchivedMessages:
m1:
title: "Message 1"
...
archivedMessages:
m2:
title: "Message 2"
...

在我看来,使用第二种结构似乎更适合大型数据集,但在某些情况下会带来一些问题,例如在不知道消息是否已存档的情况下获取消息。

最佳答案

Cloud Firestore 的保证之一是检索一定数量的文档所需的时间不依赖于集合中的文档总数。

这意味着在您的第一个数据模型中,如果您加载 100 个存档文档并且(例如)需要 1 秒,您知道加载 100 个存档文档总是需要大约 1 秒,无论有多少文档收藏中有。

有了这些知识,您的两个数据模型之间的唯一区别是,在第一个模型中,您需要一个查询来捕获存档的消息,而在第二个模型中,您不需要查询。 Cloud Firestore 上的查询通过访问索引来运行,因此不同之处在于第一个数据模型中读取了一个(多个)索引。虽然这对执行时间的影响很小,但与实际读取文档并将其返回给客户端所花费的时间相比,这将是微不足道的。

因此:可能有其他原因更喜欢第二种数据模型,但读取存档消息的性能在它们之间将是相同的。

关于database - 具有大数据集的 Firestore where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52533903/

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