管理數據庫

本頁面介紹如何建立、更新和刪除 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. 在 Google Cloud Platform Console 中,前往資料庫頁面。

    前往資料庫

  2. 按一下建立資料庫
  3. 選擇資料庫模式。點擊繼續
  4. 配置您的資料庫。輸入資料庫 ID。選擇一個位置。按一下建立資料庫
雲雲

使用gcloud alpha firestore databases create指令。

gcloud alpha 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是啟用刪除保護的可選參數。在停用此設定之前,您無法刪除啟用了刪除保護的資料庫。預設情況下禁用此設定。

地形
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_TYPEFIRESTORE_NATIVE (本機模式)或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 中,前往資料庫頁面。

前往資料庫

雲雲

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

gcloud firestore databases list

查看資料庫詳細信息

要查看有關單一資料庫的詳細信息,請使用gcloud firestore databases describe命令:

雲雲
gcloud firestore databases describe --database=DATABASE_ID

DATABASE_ID替換為資料庫 ID。

更新資料庫配置

若要更新資料庫的配置設置,請使用gcloud alpha firestore databases update指令。使用此命令變更以啟用或停用刪除保護。

更新刪除保護設定

若要對資料庫啟用刪除保護,請使用帶有--delete-protection標誌的gcloud alpha firestore databases update指令。例如:

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

DATABASE_ID替換為資料庫 ID。

若要停用資料庫的刪除保護,請使用帶有--no-delete-protection標誌的gcloud alpha firestore databases update指令。例如:

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

DATABASE_ID替換為資料庫 ID。

刪除資料庫

若要刪除資料庫,請使用控制台或命令列工具。

如果資料庫啟用了刪除保護設置,則必須先停用刪除保護

如果資料庫包含App Engine 搜尋資料Blob 實體,您必須先刪除該資料。

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

安慰
  1. 在 Google Cloud Platform Console 中,前往資料庫頁面。

    前往資料庫

  2. 點擊在表格行中查看您要刪除的資料庫的更多資訊。按一下“刪除” 。出現一個對話框。
  3. 刪除資料庫中?對話方塊中,透過在文字欄位中鍵入資料庫 ID 來確認刪除。按一下“刪除” 。控制台會通知您操作成功或失敗。

    如果操作失敗,請查看資料庫詳細資訊並驗證刪除保護是否已停用。若要停用刪除保護,請參閱更新刪除保護設定

雲雲

使用“gcloud alpha firestore 資料庫刪除”指令。

gcloud alpha firestore databases delete --database=DATABASE_ID

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

配置每個資料庫的存取權限

您可以使用身分和存取管理條件在每個資料庫層級設定存取權限。以下範例使用 Google Cloud CLI 為一個或多個資料庫分配條件存取。您也可以在 GCP Console 中定義 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 Firestore 指標在兩個受監控的資源下報告。

您可以透過查看firestore.googleapis.com/Database來檢查資料庫層級的聚合指標。 firestore_instance下報告的指標是在專案層級聚合的。

限制

下一步是什麼