本頁說明如何建立、更新及刪除Cloud Firestore資料庫。每個專案最多可建立多個 Cloud Firestore 資料庫。您可以使用多個資料庫設定正式版和測試環境、隔離客戶資料,以及進行資料區域化。
(default)
資料庫
如果您未指定資料庫,Cloud Firestore用戶端程式庫和 Google Cloud CLI 預設會連線至 (default)
資料庫。
必要的角色
如要建立及管理資料庫,您需要 Owner
或 Datastore Owner
Identity and Access Management 角色。這些角色會授予必要權限。
所需權限
如要管理資料庫,您必須具備下列權限:
- 建立資料庫:
datastore.databases.create
- 讀取資料庫設定:
datastore.databases.getMetadata
- 設定資料庫:
datastore.databases.update
- 刪除資料庫:
datastore.databases.delete
建立資料庫
如要建立資料庫,請使用下列其中一種方法:
控制台
-
前往 Firebase 控制台的「Firestore Database」頁面。
- 如果是第一個具名資料庫,請按一下「新增資料庫」。
- 否則,請依序點選「(預設)」和「新增資料庫」。
- 設定資料庫。輸入資料庫 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-mode
。
--delete-protection
是啟用防刪除功能的選用旗標。您必須先停用這項設定,才能刪除已啟用防刪除功能的資料庫。這個設定預設為停用。
--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]
更改下列內容:
- 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 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觸發程序。觸發條件會停止傳送事件,但會繼續存在,直到您刪除觸發條件為止。
刪除資料庫不會產生刪除作業費用。
控制台
-
前往 Firebase 控制台的「Firestore Database」頁面。
- 在「資料」分頁中,按一下資料庫資料表檢視畫面上的 ,然後選取「刪除資料庫」。
- 按照操作說明刪除資料庫。
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
:您的專案 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 搜尋資料。如果您最近刪除了 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 事件觸發條件也可能會停止運作。