本頁面說明如何建立、更新及刪除 Cloud Firestore 資料庫。您可以在每個專案中建立多個 Cloud Firestore 資料庫。您可以使用多個資料庫來設定實際工作環境和測試環境,以便隔離客戶資料,並進行資料區域化。
(default)
資料庫
如果應用程式不需要多個資料庫,請使用 (default)
資料庫。
如果您未指定資料庫,Cloud Firestore 用戶端程式庫和 Google Cloud CLI 預設會連線至 (default)
資料庫。
(default)
資料庫。必要的角色
如要建立及管理資料庫,您需要具備 Owner
或 Datastore Owner
身分和存取權管理角色。這些角色會授予必要權限。
所需權限
如要管理資料庫,您必須具備下列權限:
- 建立資料庫:
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-mode
。
--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 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 資料庫」頁面。
- 在「資料」分頁的資料庫資料表檢視上方,按一下 ,然後選取「刪除資料庫」。
- 按照操作說明刪除資料庫。
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
:您的專案 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 搜尋資料,就無法刪除。請使用 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 函式觸發事件 v1和 Firestore 事件觸發事件 可能會在資料庫刪除後停止運作。