查询界面概览
本页介绍了可用于访问原生模式 Firestore 数据库中数据的不同接口。
操作界面
原生模式的 Firestore 支持两种用于访问数据的接口:
流水线操作
Firestore 的新查询界面。 流水线操作支持基于阶段的可组合语法。您可以通过定义一系列按顺序执行的连续阶段来构建操作。这样一来,您就可以执行复杂的运算,例如对汇总结果进行过滤,而这在以前的界面(核心运算)中是不可能实现的。
流水线操作仅在 Firestore 企业版中提供,并且处于预览版发布阶段。
核心运营
核心操作是 Firestore 的原始接口。
核心操作使用方法链式语法(.where()、.orderBy()、.get())在文档或集合引用上检索文档。查询阶段的顺序是隐含的,并且聚合支持有限。
核心操作在企业版和标准版中均可使用,但不同版本之间的索引默认值差异很大。如需了解详情,请参阅下一部分。
版本之间的界面差异
随着企业版引入对原生模式下 Firestore 的支持,Firestore 核心操作与流水线操作均可使用。 在企业版中使用核心操作时,新的索引编制行为和定价模式消除了标准版的许多限制。
| 功能 | 标准版 | 企业版 |
| 支持的查询操作 | 仅限 Firestore 核心操作。 | 支持 Firestore 核心和流水线操作,以及与 MongoDB 兼容的 Firestore 操作。 |
| 索引编制要求 | 所有查询都需要索引。 | 查询不需要索引。 |
| 创建索引 | 系统会为单个字段创建自动索引。您可以手动创建复合索引。 | 系统不会创建任何自动索引。这些索引需要手动管理。 |
| 查询性能和费用 | 由于有索引要求,查询通常具有良好的性能表现。 | 通过创建索引来优化查询性能和费用。您可以使用“查询解释”和“查询数据分析”来识别缺失的索引。 随着数据集不断增长,无索引的查询可能会性能下降且成本上升,因此需要持续监控与优化。 |
| 索引开销费用 | 索引写入不收费,因为索引是自动的。 | 当写入关联文档时,写入索引条目会消耗写入单位(索引条目每 1 KiB 消耗 1 个写入单位)。由于无需为每个字段创建索引条目,因此可节省存储费用。 |
| 结算模式(读取/写入/删除) | 按文档读取、写入和删除操作收费。 | 按每次读取和写入(分批)收费。读取费用以读取单位计费(每 4 KiB 为一批次)。写入和删除操作会合并计入写入单位(按 1 KiB 为批次)。 |
| 基本定价(每百万次) 所示价格适用于 us-central1 区域 |
读取:每 10 万个文档$0.03(每 100 万个文档 $0.30)。 写入:每 10 万个文档$0.09(每 100 万个文档 $0.90)。 删除:每 10 万个文档$0.01(每百万个文档 $0.10) |
读取单位:每 100 万个读取单位$0.05。 写入单位:每 100 万个写入单位$0.26。与标准读取费用相比,当文档大小小于 4KiB 时,价格通常会更低。 |
| 实时更新
所示价格适用于 us-central1 区域 |
实时更新按读取计费,费率为每 10 万个文档 $0.03。 | 实时更新具有新的独立 SKU(实时更新单位),按每 4 KiB 为一批次计费。实时更新的费用为每 100 万个读取单位$0.30。 |