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