Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 具有大数据集的Firestore where子句_Database_Firebase_Google Cloud Firestore - Fatal编程技术网

Database 具有大数据集的Firestore where子句

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:

我的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"
        ...

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

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

这意味着,在第一个数据模型中,如果加载100个存档文档(例如)需要1秒,则无论集合中有多少文档,加载100个存档文档都需要1秒左右的时间

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

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