查詢介面總覽

本頁面說明可存取 Firestore 原生模式資料庫資料的不同介面。

作業介面

原生模式支援兩種資料存取介面:

管道作業

Firestore 的新版查詢介面。管道作業支援以階段為基礎的可組合語法。您可以定義一系列依序執行的連續階段,建構作業。這樣一來,您就能執行複雜作業,例如根據匯總結果進行篩選,這是原始介面 (核心作業) 無法做到的事。

管道作業僅適用於 Firestore Enterprise 版。

核心作業

核心作業是 Firestore 的原始介面。核心作業會在文件或集合參照上使用方法鏈結語法 (.where().orderBy().get()) 來擷取文件。查詢階段的順序是隱含的,且匯總支援有限。

企業版和標準版都提供核心作業,但各版本的索引預設值差異很大。詳情請參閱下節。

各版本介面差異

Enterprise 版推出原生模式支援後,您可以使用 Firestore Core 和 Pipeline 作業。在 Enterprise 版中使用 Core 作業時,新的索引行為和定價模式會移除 Standard 版的許多限制。

功能 Standard 版 Enterprise 版
支援的作業 僅限 Firestore Core 作業。 支援 Firestore 核心和管道作業,以及與 MongoDB 相容的 Firestore 作業。
索引規定 所有查詢都需要索引。 查詢不需要索引。
建立索引 系統會為單一欄位建立自動索引。您可以手動建立複合式索引。 系統不會建立自動索引。您必須手動管理索引。
已建立索引的欄位 如果索引欄位中沒有 __name__ 欄位,系統會自動附加該欄位。 __name__ 不會自動附加至已建立索引的欄位。如果 __name__ 對應用程式很重要,您必須在已建立索引的欄位中明確指定該欄位。
索引稀疏程度 所有索引都是稀疏索引。只有當文件中包含索引中定義的「所有」欄位時,才會出現索引項目。 預設值為「dense」,即使文件中沒有索引中定義的任何欄位,也會有索引項目。

此外,您也可以啟用稀疏索引,只要文件中至少有一個索引欄位,就會建立索引項目。

排序順序正規化 查詢的 order by 子句會經過正規化,方法是在結尾附加不相等欄位和 __name__ 欄位 (如果尚未存在)。這可確保結果的排序方式是唯一且具決定性,無論 order by 子句中還有哪些其他欄位。 不會進行排序順序正規化。sort a ASC 等排序順序只會保證結果會依欄位 a 排序。Firestore 會使用現有索引,盡可能以最有效率的順序傳回結果。因此,如果 a 在結果集中不是唯一值,結果的順序可能會因查詢而異,具體取決於索引設定、執行策略等。如要確保結果的排序方式不重複且具決定性,您需要在排序順序中加入 __name__ 等唯一欄位。
查詢效能和費用 由於索引需求,查詢通常效能良好 建立索引,盡可能提高查詢效能和降低成本。您可以使用「查詢說明」和「查詢洞察」找出缺少的索引。

隨著資料集擴大,沒有索引的查詢可能會效能不佳且成本高昂,因此需要監控和調整。

索引額外負荷成本 索引是自動建立,因此寫入索引不需付費。 寫入索引項目時,系統會消耗寫入單位 (每 1 KiB 的索引項目大小為 1 個寫入單位)。您不必為每個欄位建立索引項目,因此可節省儲存空間費用。
計費模式 (讀取/寫入/刪除) 系統會根據文件讀取、寫入和刪除作業次數計費。 系統會根據讀取和寫入 (分層) 次數收費。讀取作業的費用是以讀取單元 (4 KiB 為一組) 計算。寫入和刪除作業會合併為寫入單位 (1 KiB 為一組)。
基本定價 (每百萬次)

顯示的價格為 us-central1 區域的價格

讀取:每 10 萬份文件$0.03 美元 (或每 100 萬份文件 $0.30 美元)。

寫入:每 100,000 份文件$0.09 美元 (或每 100 萬份文件 $0.90 美元)。

刪除:每 100,000 份文件$0.01 美元 (或每 100 萬份文件 $0.10 美元)

讀取單位:每 100 萬個讀取單位 $0.05 美元

寫入單元:每 100 萬個寫入單元 $0.26 美元。如果文件小於 4 KiB,價格通常會比標準讀取費用低。

即時更新

顯示的價格為 us-central1 區域的價格

系統會將即時更新視為讀取作業,並以每 100,000 份文件 $0.03 美元的價格計費 即時更新功能有新的獨立 SKU (即時更新單位),每 4 KiB 區塊計費。即時更新的費用為每 100 萬個讀取單位$0.30 美元

後續步驟