管理資料庫

本頁說明如何建立、更新及刪除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

建立資料庫

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

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

    前往 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 是啟用防刪除功能的選用旗標。您必須先停用這項設定,才能刪除已啟用防刪除功能的資料庫。這個設定預設為停用。

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

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
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 Database」頁面。

    前往 Firestore 資料庫

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

使用 `gcloud firestore databases delete` 指令。

gcloud firestore databases delete --database=DATABASE_ID

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

設定資料庫存取權限

您可以使用 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 事件觸發條件也可能會停止運作。

後續步驟