管理資料庫

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

(default) 資料庫

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

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

免費配額僅適用於 (default) 資料庫。

必要的角色

如要建立及管理資料庫,您需要具備 OwnerDatastore Owner 身分和存取權管理角色。這些角色會授予必要權限。

所需權限

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

  • 建立資料庫: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 Security Rules

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

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

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

可列出資料庫

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

控制台

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

前往「資料庫」

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 為一或多個資料庫指派條件式存取權。您也可以在 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 搜尋資料,就無法刪除。請使用 index delete api 刪除 GAE 搜尋資料。如果您最近刪除了 GAE 搜尋資料,可能需要等待一段時間才能刪除資料庫。
  • 如果 (default) 資料庫含有任何 blob 實體,就無法刪除。請使用 Blobstore 刪除 API 刪除 Blobstore 資料。您可以在 Google Cloud 控制台中執行下列 GQL 查詢:SELECT * FROM __BlobInfo__,檢查 (default) 資料庫是否含有 Blobstore 資料。
  • 刪除資料庫後,需等待 5 分鐘才能重複使用資料庫 ID。
  • Cloud Function 1.x 不支援 Firestore 命名資料庫。請使用 Cloud Firestore 觸發條件 (第 2 代) 為命名資料庫設定事件。
  • 即使建立名稱相同的新資料庫,Firestore 函式觸發事件 v1Firestore 事件觸發事件 可能會在資料庫刪除後停止運作。

後續步驟