Database 具有大数据集的Firestore where子句
我的firestore数据库具有以下结构:Database 具有大数据集的Firestore where子句,database,firebase,google-cloud-firestore,Database,Firebase,Google Cloud Firestore,我的firestore数据库具有以下结构: messages: m1: title: "Message 1" ... archived: false m2: title: "Message 2" ... archived: true 假设我有20k条消息,我想使用“where”子句获取存档的消息,我的查询速度是否会比按照以下方式构建数据库慢 nonArchivedMessages:
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"
...
在我看来,使用第二种结构似乎更适合于大型数据集,但在某些情况下会产生问题,例如,在不知道消息是否已存档的情况下获取消息。云Firestore的一个保证是,检索一定数量的文档所需的时间不依赖于集合中的文档总数 这意味着,在第一个数据模型中,如果加载100个存档文档(例如)需要1秒,则无论集合中有多少文档,加载100个存档文档都需要1秒左右的时间 有了这些知识,两个数据模型之间的唯一区别在于,在第一个模型中,您需要一个查询来捕获归档的消息,而在第二个模型中,您不需要查询。云Firestore上的查询是通过访问索引来运行的,所以区别在于第一个数据模型中读取了一个(多个)索引。虽然这对执行时间的影响很小,但与实际读取文档并将其返回给客户机所需的时间相比,这将是微不足道的 因此:可能还有其他原因更喜欢第二种数据模型,但它们之间读取归档消息的性能是相同的