这是关于最新Firebase Cloud Firestore的问题。在此文档中,它是这样说的:
它还允许表达性查询。查询的大小为 您的结果集,而不是数据集的大小,因此您将获得相同的结果 性能从一组100或100,000,000中获取1个结果。
这句话对我来说并不清楚。你能解释一下这个用例吗?
答案 0 :(得分:14)
firebaser here
在大多数数据库(包括Firebase自己的实时数据库)中,查询性能取决于您请求的项目数量和请求项目的集合大小的组合。
所以:
预计#1的性能差异,仅数据传输是难以忘记的。由于#2取决于服务器端处理,开发人员有时会忘记#2。许多关系DBMS非常好地优化,这意味着性能差异通常是对数性能差异。但是,如果收集量足够大,即使log(n)
性能也会很明显。
Cloud Firestore水平扩展,这意味着上面的规则#2不适用:
这是因为Firestore的查询系统的设计方式。虽然您可能无法将每个查询直接从关系数据模型建模到Firestore数据模型,但如果您可以根据Firestore查询定义用例,则可以保证在相对于数量的时间内执行你要求的结果。 (解释吉尔在这里的评论)
答案 1 :(得分:5)
这可能写得有些混乱。它不是典型意义上的用例,只是关于Firestore性能的声明。
它基本上说如果从100.000.000中的100或1项中请求1项并不重要,它将同样快。这里1是您的结果集,100 / 100.000.000是您的数据集。因此,从100.000.000中请求1项将比请求100项中的50项更快。
我希望这会让它更清晰一点!