用量與限制

本指南來瞭解 Cloud Firestore 的限制, 並查看 Cloud Firestore 定價,瞭解完整的 Cloud Firestore 費用,包括應留意的事項。

監控您的使用情況

如要監控 Cloud Firestore 用量,請開啟 Cloud Firestore 「用量」分頁 。請使用資訊主頁, 時間範圍。

在 Google Cloud 控制台中查看詳細的用量資訊

建立 Firebase 專案時,也會一併建立 Google Cloud 專案。 Cloud Firestore API 配額App Engine 配額 Google Cloud 控制台的頁面會追蹤 Cloud Firestore 用量和配額 可能不準確或不適當

免費配額

Cloud Firestore 提供免費配額,讓您可以開始使用 (default) 資料庫。下表列出免費配額。 如果您需要更多配額,則須為 Google Cloud 專案啟用計費功能

您每天可使用的配額有一定的限制,系統會在太平洋時間凌晨 12 點左右重設配額。

只有 (default) 資料庫才符合免費配額資格。

免費方案 配額
儲存的資料量 1 GiB
文件讀取次數 每天 50,000 次
文件寫入次數 每天 20,000 次
文件刪除次數 每天 20,000 次
傳出資料傳輸 每月 10 GiB

以下作業和功能不包含免費用量。 您必須啟用計費功能,才能使用以下功能:

  • 使用已命名 (非預設) 資料庫
  • 存留時間刪除
  • 時間點復原資料
  • 備份資料
  • 復原作業

如要進一步瞭解這些功能的計費方式,請參閱 儲存空間定價

標準限制

下表說明 例如 Cloud Firestore除非另有註明,否則這些限制為嚴格限制。

資料庫

限制 詳細資料
每項專案的資料庫數量上限

100

你可以 與支援團隊聯絡 要求提高此上限

集合、文件和欄位

限制 說明
集合 ID 限制
  • 必須使用有效的 UTF-8 字元
  • 長度不得超過 1,500 個位元組
  • 不得包含正斜線 (/)
  • 不得僅包含一個半形句號 (.) 或連續兩個半形句號 (..)
  • 不得與以下規則運算式相符:__.*__
子集合深度上限 100
文件 ID 限制
  • 必須使用有效的 UTF-8 字元
  • 長度不得超過 1,500 個位元組
  • 不得包含正斜線 (/)
  • 不得僅包含一個半形句號 (.) 或連續兩個半形句號 (..)
  • 不得與以下規則運算式相符:__.*__
  • 如果將 Datastore 實體匯入到 Firestore 資料庫中,數字實體 ID 會以 __id[0-9]+__ 的形式顯示
檔案名稱大小上限 6 KiB
檔案大小上限 1 MiB (1,048,576 個位元組)
欄位名稱限制 必須使用有效的 UTF-8 字元
欄位名稱大小上限 1,500 個位元組
欄位路徑限制
  • 必須以一個半形句號 (.) 分隔欄位名稱
  • 可用以點分隔 (.) 字串的區隔字串傳遞,其中每個區隔都是簡單欄位名稱或加上引號的欄位名稱 (定義如下)。
如果欄位名稱符合以下所有條件,即為簡單的名稱:
  • 僅含 a-zA-Z0-9 等字元和底線 (_)
  • 開頭不是 0-9
引用的欄位名稱的開頭和結尾是倒引號字元 (`)。舉例來說,foo.`x&y` 是指 foo 欄位下以巢狀結構為基礎的 x&y 欄位。如要使用倒引號字元建立欄位名稱,請使用反斜線字元 (\) 逸出反引號字元。為了方便起見,您可以透過 FieldPath 物件的形式傳遞欄位路徑,避免使用半形引號括住的欄位名稱 (例如,請參閱 JavaScript FieldPath)。
欄位路徑大小上限 1,500 個位元組
欄位值大小上限 1 MiB 減去 89 個位元組 (1,048,487 個位元組)
對應關係或陣列中欄位的深度上限

20

對應和陣列欄位會為物件的整體深度新增一個等級。舉例來說,以下物件的總深度為三個層級:


{
  nested_map: {         #depth 1
    nested_array: [     #depth 2
      {
        foo: "bar"      #depth 3
      }
    ]
  }
}
      

寫入作業和交易

除了這些限制之外, 規模設計的最佳做法

限制 說明
API 請求大小上限 10 MiB
交易時間限制 270 秒,閒置到期時間為 60 秒

索引

下列限制適用於單一欄位索引複合式索引

限制 說明
資料庫的複合式索引數量上限
資料庫的單一欄位設定數量上限

單一欄位層級設定 同一個欄位可以包含多個設定。例如: 單一欄位的索引豁免項目和存留時間政策 只會計為一個欄位設定,計入限制。

每個文件的索引項目數量上限

40,000 個

索引項目數量是文件中下列兩種項目的總和:

  • 單一欄位索引項目的數量
  • 複合式索引項目的數量

如要瞭解 Cloud Firestore 如何旋轉文件和一組 編入索引為索引項目,請參閱 這個索引項目計數範例

複合式索引中的欄位數量上限 100
索引項目大小上限

7.5 KiB

如要瞭解 Cloud Firestore 計算索引項目大小的方式,請參閱索引項目大小一節。

文件的索引項目大小總計上限

8 MiB

大小總計是文件中下列兩種項目的總和:

  • 文件的單一欄位索引項目大小總和
  • 文件的複合式索引項目大小總和
  • 已建立索引的欄位值大小上限

    1500 個位元組

    超過 1500 個位元組的欄位值會遭到截斷。如果查詢中有欄位值遭截斷,系統可能會傳回不一致的結果。

    存留時間 (TTL)

    限制 詳細資料
    資料庫的單一欄位設定數量上限

    單一欄位層級設定 同一個欄位可以包含多個設定。例如: 單一欄位的索引豁免項目和存留時間政策 只會計為一個欄位設定,計入限制。

    匯出/匯入

    以下限制適用於代管匯入及匯出作業

    限制 說明
    專案每分鐘允許的匯出與匯入要求總數上限 20
    並行匯出與匯入作業的數量上限 50
    匯出與匯入要求的集合 ID 篩選器數量上限 100

    安全性規則

    限制 說明
    每項要求的 exists()get()getAfter() 呼叫數量上限
    • 單一文件要求和查詢要求的上限為 10 項。
    • 多文件讀取作業、交易和批次寫入作業的上限為 20 項。上述限制 (10 項呼叫) 同樣適用於各項作業。

      舉例來說,假設您建立的批次寫入要求含有 3 項寫入作業,而您的安全性規則會使用 2 項文件存取呼叫來驗證各項寫入作業。此時,各項寫入作業會使用 2 項存取呼叫 (上限為 10 項),批次寫入要求則會使用 6 項存取呼叫 (上限為 20 項)。

    超過任一項限制都會引發權限遭拒的錯誤。

    系統可能會快取部分的文件存取呼叫,已快取的呼叫不會計入限制中。

    巢狀 match 陳述式深度上限 10
    一組巢狀 match 陳述式中允許的路徑長度上限 (以路徑區段為單位) 100
    一組巢狀 match 陳述式中允許的路徑擷取變數數量上限 20
    函式呼叫深度上限 20
    函式引數數量上限 7
    每個函式的 let 變數繫結上限 10
    遞迴或循環函式呼叫的數量上限 0 (不允許)
    每個要求中經評估的運算式數量上限 1,000 個
    規則集的大小上限 規則集必須遵守以下兩項大小限制:
    • 規則集文字來源的大小限制為 256 KB 透過 Firebase 控制台或 CLI 發布 firebase deploy
    • 針對結果產生的已編譯規則集大小,限制為 250 KB Firebase 處理來源並在 後端。

    管理支出

    為避免帳單產生非預期的費用,請設定每月預算與快訊。

    設定每月預算

    如要追蹤 Cloud Firestore 費用,請在下列位置建立每月預算: 存取 Google Cloud 控制台預算並不會限制您的用量,但您可以將快訊設為 系統會在您接近或超過預計費用的 每月。

    如要設定預算,請前往「帳單」頁面 建立預算 Cloud Billing 帳戶。您可以使用預設快訊設定 傳送快訊,在每月預算的不同百分比傳送通知。

    進一步瞭解 設定預算和預算快訊