查询根据结果集的大小而不是数据集的大小进行缩放
Queries scale with the size of your result set, not the size of your data set
这是一个关于最新 Firebase Cloud Firestore 的问题。在这个文档中它是这样说的:
It also allows for expressive queries. Queries scale with the size of
your result set, not the size of your data set, so you'll get the same
performance fetching 1 result from a set of 100, or 100,000,000.
这个说法我不是很清楚。你能解释一下这个用例吗?
这样写可能有点乱。它不是经典意义上的用例,它只是关于 Firestore 性能的陈述。
它基本上是说,无论您请求 100 件中的 1 件还是 100.000.000 件中的 1 件,都一样快。这里 1 是您的结果集,100/100.000.000 是您的数据集。因此,从 100.000.000 件中请求 1 件将比从 100 件中请求 50 件更快。
我希望这能让它更清楚一点!
firebaser 在这里
在大多数数据库(包括 Firebase 自己的实时数据库)中,查询性能取决于您请求的项目数量和您从中请求项目的集合大小的组合。
所以:
- 如果您请求 100 万个项目中的 10 个项目,这将比您请求 100 万个项目中的 1000 个项目更快。
- 如果您请求 100 万个项目中的 10 个项目,这将比您请求 1 亿个项目中的 10 个项目更快。
#1 的性能差异在意料之中,单是数据传输就让人难以忘怀。由于#2 依赖于服务器端处理,开发人员有时会忘记#2。许多关系型 DBMS 优化得非常好,这意味着性能差异通常是对数性能差异。但是如果集合大小足够大,即使 log(n)
性能也会很明显。
Cloud Firestore 水平扩展,这意味着上面的规则 #2 不适用:
- 如果您请求 100 万项中的 10 项,则与请求 1 亿项中的 10 项所花费的时间相同。
这是因为 Firestore 查询系统的设计方式。虽然您可能无法将每个查询直接从关系数据模型建模到 Firestore 数据模型,但如果您可以根据 Firestore 查询定义您的用例,则可以保证在与数量相关的时间内执行您请求的结果。 (在这里转述吉尔的评论)
这是一个关于最新 Firebase Cloud Firestore 的问题。在这个文档中它是这样说的:
It also allows for expressive queries. Queries scale with the size of your result set, not the size of your data set, so you'll get the same performance fetching 1 result from a set of 100, or 100,000,000.
这个说法我不是很清楚。你能解释一下这个用例吗?
这样写可能有点乱。它不是经典意义上的用例,它只是关于 Firestore 性能的陈述。
它基本上是说,无论您请求 100 件中的 1 件还是 100.000.000 件中的 1 件,都一样快。这里 1 是您的结果集,100/100.000.000 是您的数据集。因此,从 100.000.000 件中请求 1 件将比从 100 件中请求 50 件更快。
我希望这能让它更清楚一点!
firebaser 在这里
在大多数数据库(包括 Firebase 自己的实时数据库)中,查询性能取决于您请求的项目数量和您从中请求项目的集合大小的组合。
所以:
- 如果您请求 100 万个项目中的 10 个项目,这将比您请求 100 万个项目中的 1000 个项目更快。
- 如果您请求 100 万个项目中的 10 个项目,这将比您请求 1 亿个项目中的 10 个项目更快。
#1 的性能差异在意料之中,单是数据传输就让人难以忘怀。由于#2 依赖于服务器端处理,开发人员有时会忘记#2。许多关系型 DBMS 优化得非常好,这意味着性能差异通常是对数性能差异。但是如果集合大小足够大,即使 log(n)
性能也会很明显。
Cloud Firestore 水平扩展,这意味着上面的规则 #2 不适用:
- 如果您请求 100 万项中的 10 项,则与请求 1 亿项中的 10 项所花费的时间相同。
这是因为 Firestore 查询系统的设计方式。虽然您可能无法将每个查询直接从关系数据模型建模到 Firestore 数据模型,但如果您可以根据 Firestore 查询定义您的用例,则可以保证在与数量相关的时间内执行您请求的结果。 (在这里转述吉尔的评论)