管理資料庫

本頁面說明如何建立、更新及刪除 Cloud Firestore 資料庫。您可以為每個專案建立多個 Cloud Firestore 資料庫。您可以使用多個資料庫來設定實際工作環境和測試環境、隔離客戶資料,以及將資料地區化。

(default) 資料庫

如果應用程式不需要多個資料庫,請使用 (default) 資料庫。

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

免費配額只能搭配 (default) 資料庫使用。

必要的角色

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

所需權限

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

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

建立資料庫

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

控制台
  1. 前往 Firebase 控制台中的「Firestore 資料庫」頁面。

    前往 Firestore 資料庫

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

使用 gcloud firestore databases create 指令。

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

更改下列內容:

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

Firebase CLI
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

更改下列內容:

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

Terraform
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 安全性規則

使用 Firebase CLI 將 Cloud Firestore 安全性規則部署至每個資料庫。請參閱管理及部署 Cloud Firestore 安全性規則指南

透過用戶端程式庫存取已命名的資料庫

已命名資料庫包含任何未命名為 (default) 的資料庫。根據預設,Firebase SDK 和 Google API 用戶端程式庫會連線至專案中的 (default) Cloud Firestore 資料庫。如要建立連線至已命名資料庫的用戶端,請在將用戶端執行個體化時設定資料庫 ID。

可列出資料庫

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

控制台

在 Google Cloud Platform Console 中,前往「Databases」頁面。

前往「資料庫」頁面

gcloud

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

gcloud firestore databases list
Firebase CLI

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

firebase firestore:databases:list

查看資料庫詳細資料

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

gcloud

使用 gcloud firestore databases describe 指令:

gcloud firestore databases describe --database=DATABASE_ID

Firebase CLI

使用 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 觸發條件。觸發條件會停止傳送事件,但在您刪除觸發條件之前,仍會繼續存在。

控制台
  1. 前往 Firebase 控制台中的「Firestore 資料庫」頁面。

    前往 Firestore 資料庫

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

請使用 「gcloud Firestore libraries 刪除」指令。

gcloud firestore databases delete --database=DATABASE_ID

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

設定個別資料庫的存取權限

您可以使用 Identity and Access Management Conditions,設定各資料庫層級的存取權。下列範例使用 Google Cloud CLI 指派條件式存取權給一或多個資料庫。您也可以在 GCP 控制台中定義 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 搜尋資料。如果您最近才刪除 Google Analytics (分析) 搜尋資料,可能要等一段時間才能刪除資料庫。
  • 如果 (default) 資料庫含有任何 blob 實體,您就無法刪除該資料庫。請使用 Blob 刪除 API 刪除 Blob 資料。您可以在 Google Cloud Platform 控制台中執行以下 GQL 查詢,藉此檢查 (default) 資料庫是否包含 blob 資料:SELECT * FROM __BlobInfo__
  • 刪除作業發生 5 分鐘後,您才能重複使用資料庫 ID。
  • Cloud 函式 v1 不支援 Firestore 具名資料庫。請使用 Cloud Firestore 觸發條件 (第 2 代) 為具名資料庫設定事件。
  • 刪除資料庫後,Firestore 函式觸發 v1Firestore 事件觸發條件可能會停止運作,即使以相同名稱建立新資料庫也是如此。

後續步驟