管理資料庫

本頁說明如何建立、更新及刪除Cloud Firestore資料庫。每個專案最多可建立多個 Cloud Firestore 資料庫。您可以使用多個資料庫設定正式版和測試環境、隔離客戶資料,以及進行資料區域化。

(default) 資料庫

如未指定資料庫,Cloud Firestore 用戶端程式庫和 Google Cloud CLI 預設會連線至 (default) 資料庫。

必要的角色

如要建立及管理資料庫,您需要 OwnerDatastore Owner Identity and Access Management 角色。這些角色會授予必要權限。

所需權限

如要管理資料庫,您必須具備下列權限:

  • 建立資料庫:datastore.databases.create
  • 讀取資料庫設定:datastore.databases.getMetadata
  • 設定資料庫:datastore.databases.update
  • 刪除資料庫:datastore.databases.delete
  • 複製資料庫:datastore.databases.clone

建立資料庫

如要建立資料庫,請使用下列其中一種方法:

  1. 前往 Firebase 控制台的「Firestore Database」頁面。

    前往 Firestore 資料庫

  2. 如果是第一個具名資料庫,請按一下「新增資料庫」
  3. 否則,請依序點選「(預設)」和「新增資料庫」
  4. 設定資料庫。輸入資料庫 ID。選取位置。 按一下「建立資料庫」

使用 gcloud firestore databases create 指令。

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

更改下列內容:

--delete-protection 是啟用防刪除功能的選用旗標。您必須先停用這項設定,才能刪除已啟用防刪除功能的資料庫。這個設定預設為停用。

如要將標記新增至資料庫,請使用 --tags 旗標。例如:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

更改下列內容:

--delete-protection 是啟用防刪除功能的選用引數。如要刪除已啟用防刪除功能的資料庫,請先停用這項設定。這項設定預設為停用。

resource "google_firestore_database" "database" {
  project     = "project-id"
  name        = DATABASE_ID
  location_id = LOCATION
  type        = DATABASE_TYPE

  // Optional
  delete_protection_state = DELETE_PROTECTION_STATE
}

更改下列內容:

  • DATABASE_ID有效的資料庫 ID
  • LOCATIONCloud Firestore 多區域或區域的名稱。
  • DATABASE_TYPE:原生模式為 FIRESTORE_NATIVE,Datastore 模式為 DATASTORE_MODE
  • DELETE_PROTECTION_ENABLEMENTDELETE_PROTECTION_ENABLEDDELETE_PROTECTION_DISABLED

delete_protection_state 是啟用防刪除功能的選用引數。您必須先停用這項設定,才能刪除已啟用防刪除功能的資料庫。這項設定預設為停用。

資料庫 ID

有效的資料庫 ID 包括 (default),以及符合下列條件的 ID:

  • 只能包含英文字母、數字和連字號 (-)。
  • 字母必須為小寫。
  • 第一個字元必須是字母。
  • 最後一個字元須為英文字母或數字。
  • 至少 4 個字元。
  • 最多 63 個字元。
  • 不得為 UUID 或類似 UUID 的值。舉例來說,請勿使用 f47ac10b-58cc-0372-8567-0e02b2c3d479 這類 ID。

刪除資料庫後,需等待 5 分鐘才能再次使用該資料庫 ID。

刪除防護措施

使用防刪除功能,避免誤刪資料庫。 您必須先停用防刪除功能,才能刪除已啟用這項功能的資料庫。刪除保護功能預設為停用。您可以在建立資料庫時啟用刪除保護機制,也可以更新資料庫設定來啟用這項機制。

為資料庫設定 Cloud Firestore Security Rules

使用 Firebase CLI 將 Cloud Firestore Security Rules 部署至每個資料庫。請參閱管理及部署 Cloud Firestore Security Rules 的指南。

使用用戶端程式庫存取具名資料庫

已命名的資料庫是指名稱不是 (default) 的資料庫。根據預設,Firebase SDK 和 Google API 用戶端程式庫會連線至專案中的 (default) Cloud Firestore 資料庫。如要建立連線至具名資料庫的用戶端,請在例項化用戶端時設定資料庫 ID。

可列出資料庫

請使用下列其中一種方法列出資料庫:

前往 Google Cloud 控制台的「資料庫」頁面。

前往「資料庫」

使用 gcloud firestore databases list 指令列出專案中的所有資料庫。

gcloud firestore databases list

使用 firebase firestore:databases:list 指令列出專案中的所有資料庫。

firebase firestore:databases:list

查看資料庫詳細資料

如要查看單一資料庫的詳細資料,請使用下列其中一種做法:

gcloudFirebase CLI

使用 gcloud firestore databases describe 指令:

gcloud firestore databases describe --database=DATABASE_ID

使用 firebase firestore:databases:get 指令:

firebase firestore:databases:get DATABASE_ID

DATABASE_ID 替換為資料庫 ID。

更新資料庫設定

如要更新資料庫的設定,請使用 gcloud firestore databases update 指令。使用這項指令可啟用或停用刪除保護機制。

更新防刪除設定

如要在資料庫上啟用防刪除功能,請使用 gcloud firestore databases update 指令並搭配 --delete-protection 旗標。例如:

gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection

DATABASE_ID 替換為資料庫 ID。

如要停用資料庫的防刪除功能,請使用 gcloud firestore databases update 指令並搭配 --no-delete-protection 旗標。例如:

gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

DATABASE_ID 替換為資料庫 ID。

刪除資料庫

如要刪除資料庫,請使用主控台或指令列工具。

如果資料庫已啟用防刪除設定,您必須先停用防刪除功能

如果資料庫包含App Engine搜尋資料Blob 實體,請先刪除這些資料。

刪除資料庫時,系統不會自動刪除該資料庫的任何Eventarc觸發程序。觸發條件會停止傳送事件,但會繼續存在,直到您刪除觸發條件為止。

刪除資料庫不會產生刪除作業費用。

控制台gcloud
  1. 前往 Firebase 控制台的「Firestore Database」頁面。

    前往 Firestore 資料庫

  2. 在「資料」分頁中,按一下資料庫資料表檢視畫面上的 ,然後選取「刪除資料庫」
  3. 按照操作說明刪除資料庫。

使用 `gcloud firestore databases delete` 指令。

gcloud firestore databases delete --database=DATABASE_ID

DATABASE_ID 替換為要刪除的資料庫 ID。

複製資料庫

您可以將所選時間戳記的現有資料庫複製到新資料庫:

  • 複製的資料庫是新資料庫,會建立在與來源資料庫相同的位置。

    如要建立副本,Cloud Firestore 會使用來源資料庫的時間點復原 (PITR) 資料。複製的資料庫包括所有資料和索引。

  • 根據預設,複製的資料庫會使用與來源資料庫相同的加密方式,也就是 Google 的預設加密或 CMEK 加密。您可以指定其他加密類型,或使用其他金鑰進行 CMEK 加密。

  • 時間戳記的精細度為一分鐘,且指定過去的時間點,該時間點位於 PITR 視窗定義的期間內:

    • 如果資料庫已啟用 PITR,您可以選取過去 7 天內的任何時間點 (如果啟用 PITR 的時間未滿 7 天,則為啟用 PITR 之後的任何時間點)。
    • 如果未啟用 PITR,您可以選取過去一小時內的任一分鐘。
    • 你可以查看資料庫說明中可選取的最早時間戳記。
主控台gcloud

Firebase 控制台不支援資料庫複製功能。您可以按照 Google Cloud CLI 的操作說明複製資料庫。

使用 gcloud alpha firestore databases clone 指令複製資料庫:

gcloud alpha firestore databases clone \
--source-database='SOURCE_DATABASE_ID' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

更改下列內容:

  • SOURCE_DATABASE_ID:您要複製的現有資料庫資料庫 ID

  • PITR_TIMESTAMPPITR 時間戳記,採用RFC 3339 格式,精確度達分鐘單位。例如:2025-06-01T10:20:00.00Z2025-06-01T10:30:00.00-07:00

  • DESTINATION_DATABASE_ID:新複製資料庫的資料庫 ID。這個資料庫 ID 不得與現有資料庫建立關聯。

範例:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db'

變更複製資料庫的加密設定

根據預設,複製的資料庫會與來源資料庫採用相同的加密設定。如要變更加密設定,請使用 --encryption-type 引數:

  • (預設) use-source-encryption:使用與來源資料庫相同的加密設定。
  • google-default-encryption:使用 Google 的預設加密機制。
  • customer-managed-encryption:使用 CMEK 加密。在 --kms-key-name 引數中指定金鑰 ID

以下範例說明如何為複製的資料庫設定 CMEK 加密:

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

設定資料庫存取權限

您可以使用 Identity and Access Management 條件,在每個資料庫層級設定存取權。下列範例使用 Google Cloud CLI,為一或多個資料庫指派條件式存取權。您也可以在 Google Cloud 控制台中定義 IAM 條件

查看現有的 IAM 政策

gcloud projects get-iam-policy PROJECT_ID

PROJECT_ID 設為您的專案 ID。

授予資料庫存取權

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

設定下列欄位:

  • PROJECT_ID:您的專案 ID
  • EMAIL:代表特定 Google 帳戶的電子郵件地址,例如:alice@example.com
  • DATABASE_ID:資料庫 ID。
  • TITLE:運算式的選用標題。
  • DESCRIPTION:(選用) 運算式的說明。

授予所有資料庫的存取權,但一個資料庫除外

gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'

設定下列欄位:

  • PROJECT_ID:您的專案 ID
  • EMAIL:代表特定 Google 帳戶的電子郵件地址,例如:alice@example.com
  • DATABASE_ID:資料庫 ID。
  • TITLE:運算式的選用標題。
  • DESCRIPTION:(選用) 運算式的說明。

移除特定成員和角色的政策

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

設定下列欄位:

  • PROJECT_ID:您的專案 ID
  • EMAIL:代表特定 Google 帳戶的電子郵件地址,例如:alice@example.com

Cloud Monitoring

Cloud Firestore 指標會根據兩個受監控的資源回報。

您可以查看 firestore.googleapis.com/Database,檢查資料庫層級的匯總指標。firestore_instance 下方顯示的指標是專案層級的匯總資料。

限制

  • 每個專案最多可有 100 個資料庫。如要提高這項上限,請與支援團隊聯絡
  • 如果 (default) 資料庫含有任何 GAE 搜尋資料,就無法刪除。 使用索引刪除 API 刪除 GAE 搜尋資料。如果您最近刪除了 GAE 搜尋資料,可能需要等待一段時間才能刪除資料庫。
  • 如果 (default) 資料庫含有任何 Blob 實體,就無法刪除。使用 Blobstore 刪除 API 刪除 Blobstore 資料。 如要檢查 (default) 資料庫是否含有 Blobstore 資料,請在 Google Cloud 控制台中執行下列 GQL 查詢:SELECT * FROM __BlobInfo__
  • 刪除資料庫後,需等待 5 分鐘才能重複使用資料庫 ID。
  • Cloud Functions 第 1 版不支援 Firestore 已命名資料庫。使用 Cloud Firestore 觸發程序 (第 2 代) 為具名資料庫設定事件。
  • 刪除資料庫後,即使建立同名的新資料庫,Firestore 函式觸發條件第 1 版Firestore 事件觸發條件也可能會停止運作。

後續步驟