本頁面說明如何建立、更新及刪除 Cloud Firestore 資料庫。您可以為每個專案建立多個 Cloud Firestore 資料庫。您可以使用多個資料庫來設定實際工作環境和測試環境、隔離客戶資料,以及將資料地區化。
(default)
資料庫
如果應用程式不需要多個資料庫,請使用 (default)
資料庫。
如果您未指定資料庫,根據預設,Cloud Firestore 用戶端程式庫和 Google Cloud CLI 會連線至 (default)
資料庫。
(default)
資料庫使用。必要的角色
如要建立及管理資料庫,您需要具備 Owner
或 Datastore Owner
「Identity and Access Management」角色。這些角色可授予必要權限。
所需權限
如要管理資料庫,您必須具備下列權限:
- 建立資料庫:
datastore.databases.create
- 讀取資料庫設定:
datastore.databases.getMetadata
- 設定資料庫:
datastore.databases.update
- 刪除資料庫:
datastore.databases.delete
建立資料庫
如要建立資料庫,請使用下列其中一種方法:
控制台
-
前往 Firebase 控制台中的「Firestore 資料庫」頁面。
- 如果這是第一個已命名的資料庫,請按一下「新增資料庫」。
- 如果沒有,請依序點選「(預設)」和「新增資料庫」。
- 設定資料庫。輸入資料庫 ID。選取位置。 按一下「建立資料庫」。
gcloud
使用 gcloud firestore databases create
指令。
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
更改下列內容:
- DATABASE_ID:有效的資料庫 ID。
- LOCATION:Cloud Firestore 多區域或地區的名稱。
- DATABASE_TYPE:原生模式的
firestore-native
,或 Datastore 模式的 Datastore 模式。
--delete-protection
是啟用防刪除功能的選用標記。您必須先停用這項設定,才能刪除已啟用防刪除功能的資料庫。這個設定預設為停用。
Firebase CLI
firebase firestore:databases:create DATABASE_ID \ --location=LOCATION \ [--delete-protection DELETE_PROTECTION_ENABLEMENT]
更改下列內容:
- DATABASE_ID:有效的資料庫 ID。
- LOCATION:Cloud Firestore 多區域或地區的名稱。
- DELETE_PROTECTION_ENABLEMENT:
ENABLED
或DISABLED
。
建立的資料庫一律為 Firestore 原生模式。
--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。
- LOCATION:Cloud Firestore 多區域或地區的名稱。
- DATABASE_TYPE:原生模式的
FIRESTORE_NATIVE
或 Datastore 模式的DATASTORE_MODE
。 - DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLED
或DELETE_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 觸發條件。觸發條件會停止傳送事件,但在您刪除觸發條件之前,仍會繼續存在。
控制台
-
前往 Firebase 控制台中的「Firestore 資料庫」頁面。
- 在「資料」分頁中,按一下資料庫資料表檢視畫面上方的 ,然後選取「刪除資料庫」。
- 按照操作說明刪除資料庫。
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
:您的專案 IDEMAIL
:代表特定 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
:您的專案 IDEMAIL
:代表特定 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
:您的專案 IDEMAIL
:代表特定 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 函式觸發 v1 和 Firestore 事件觸發條件可能會停止運作,即使以相同名稱建立新資料庫也是如此。