本頁面介紹如何建立、更新和刪除 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
建立資料庫
若要建立資料庫,請使用下列方法之一:
安慰
在 Google Cloud Platform Console 中,前往資料庫頁面。
- 按一下建立資料庫。
- 選擇資料庫模式。點擊繼續
- 配置您的資料庫。輸入資料庫 ID。選擇一個位置。按一下建立資料庫。
雲雲
使用gcloud alpha firestore databases create
指令。
gcloud alpha firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
替換以下內容:
- DATABASE_ID :有效的資料庫 ID 。
- LOCATION : Cloud Firestore 多區域或區域的名稱。
- DATABASE_TYPE :本機模式的
firestore-native
或資料儲存模式的 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
地形
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_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 中,前往資料庫頁面。
雲雲
使用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 觸發器。觸發器停止傳送事件,但會繼續存在,直到您刪除觸發器。
安慰
在 Google Cloud Platform Console 中,前往資料庫頁面。
- 點擊 在表格行中查看您要刪除的資料庫的更多資訊。按一下“刪除” 。出現一個對話框。
在刪除資料庫中?對話方塊中,透過在文字欄位中鍵入資料庫 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
下報告的指標是在專案層級聚合的。
限制
- 每個項目最多可以有 100 個資料庫。您可以聯絡支援人員請求增加此限制。
- 如果資料庫包含任何GAE 搜尋資料和/或blob 實體,則您無法刪除該資料庫。請使用索引刪除 api刪除 GAE 搜尋數據,並使用 Blobstore 刪除 api刪除 Blobstore 資料。
- 刪除發生 5 分鐘後才能重複使用資料庫 ID。
- Cloud Function v1 不支援 Firestore 命名資料庫。請使用Cloud Firestore 觸發器(第二代)為指定資料庫配置事件。
- 刪除資料庫後, Firestore 函數觸發器 v1和Firestore 事件觸發器可能會停止運作,即使建立了同名的新資料庫也是如此。