建立及管理資料庫

本頁說明如何建立、更新及刪除Cloud Firestore資料庫。每個專案最多可建立多個 Cloud Firestore 資料庫。您可以使用多個資料庫設定正式版和測試環境、隔離客戶資料,以及進行資料區域化。

免費版用量

Cloud Firestore 提供免費層級,讓您無須付費即可開始使用。

每個專案只能有一個 Cloud Firestore 資料庫適用免費方案。如果專案中沒有免費方案資料庫,系統會將免費方案套用至專案中建立的第一個資料庫。如果刪除套用免費層級的資料庫,下一個建立的資料庫就會套用免費層級。

事前準備

建立資料庫前,請先完成下列步驟:

  1. 如果尚未建立 Firebase 專案,請在 Firebase 控制台中按一下「新增專案」,然後按照畫面上的指示建立 Firebase 專案,或將 Firebase 服務新增至現有 Google Cloud 專案。

  2. 如下一節所述,指派適當的 Identity and Access Management 角色。

必要的角色

如要建立及管理資料庫,您需要 OwnerDatastore Owner Identity and Access Management 角色。這些角色會授予必要權限。

所需權限

如要管理資料庫,您必須具備下列權限:

  • 建立資料庫:datastore.databases.create
  • 讀取資料庫設定:datastore.databases.getMetadata
  • 設定資料庫:datastore.databases.update
  • 刪除資料庫:datastore.databases.delete
  • 複製資料庫:datastore.databases.clone

建立資料庫

如要建立 Cloud Firestore 資料庫,請使用下列其中一種方法:

Firebase 控制台
  1. 前往 Firebase 控制台的「Firestore Database」頁面。

    前往 Firestore 資料庫

  2. 按一下「新增資料庫」
  3. 選取「Enterprise 版」。點選「下一步」
  4. 選取「與 MongoDB 相容的 Firestore」
  5. 輸入資料庫 ID。
  6. 選取資料庫位置。
  7. 點選「建立」
Firebase CLI
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
gcloud CLI

使用 gcloud firestore databases create 指令並設定 --edition=enterprise

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--enable-mongodb-compatible-data-access

更改下列內容:

如要啟用防刪除功能,請新增 --delete-protection 標記。 您必須先停用這項設定,才能刪除已啟用防刪除功能的資料庫。這個設定預設為停用。

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--edition=enterprise \
--delete-protection

如要為資料庫新增標記,請使用 --tags 旗標。例如:

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Terraform

使用 google_firestore_database 資源,並將 database_edition 設為 ENTERPRISE

resource "google_firestore_database" "database" {
  name             = "DATABASE_ID"
  location_id      = "LOCATION"
  type             = "FIRESTORE_NATIVE"
  database_edition = "ENTERPRISE"

  // Optional
  delete_protection_state = "DELETE_PROTECTION_STATE"
}

更改下列內容:

如要啟用防刪除功能,請將 delete_protection_state 設為 DELETE_PROTECTION_ENABLED。 啟用防刪除功能後,您必須先停用這項設定,才能刪除資料庫。這項設定預設為停用。

資料庫 ID

有效的資料庫 ID 包括符合下列條件的 ID:

  • 只能包含英文字母、數字和連字號 (-)。
  • 字母必須為小寫。
  • 第一個字元必須是字母。
  • 最後一個字元須為英文字母或數字。
  • 至少 4 個字元。
  • 最多 63 個字元。
  • 不得為 UUID 或類似 UUID 的值。舉例來說,請勿使用 f47ac10b-58cc-0372-8567-0e02b2c3d479 等 ID。

刪除資料庫後,需等待 5 分鐘才能再次使用該資料庫 ID。

刪除防護措施

使用防刪除功能,避免誤刪資料庫。 刪除保護功能的運作方式如下:

  • 如要刪除已啟用防刪除功能的資料庫,請先停用這項功能。
  • 刪除保護功能預設為停用。
  • 您可以在建立資料庫時啟用防刪除功能,也可以更新資料庫設定來啟用這項功能。

可列出資料庫

請使用下列其中一種方法列出資料庫:

Firebase 控制台
  1. 前往 Firebase 控制台的「Firestore Database」頁面。

    前往 Firestore 資料庫

  2. 按一下「Cloud Firestore」,即可查看專案的所有資料庫。
gcloud CLI

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

gcloud firestore databases list

查看資料庫詳細資料

如要查看單一資料庫的詳細資料,請使用下列其中一種做法:

Firebase 控制台
  1. 前往 Firebase 控制台的「Firestore Database」頁面。

    前往 Firestore 資料庫

  2. 從資料庫清單中選取資料庫。
gcloud CLI

使用 gcloud firestore databases describe 指令:

gcloud firestore databases describe --database=DATABASE_ID

DATABASE_ID 替換為資料庫 ID。

更新資料庫設定

如要更新資料庫的設定,請使用 gcloud firestore databases update 指令。

使用這項指令可變更、啟用或停用刪除保護功能。

更新防刪除設定

如要在資料庫上啟用防刪除功能,請使用 gcloud firestore databases update 指令並搭配 --delete-protection 標記。例如:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --delete-protection

DATABASE_ID 替換為資料庫 ID。

如要停用資料庫的防刪除功能,請使用 gcloud firestore databases update 指令並搭配 --no-delete-protection 旗標。例如:

gcloud CLI
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection

DATABASE_ID 替換為資料庫 ID。

刪除資料庫

如要刪除資料庫,請使用主控台或指令列工具。 刪除資料庫不會產生刪除作業費用。

如果資料庫已啟用防刪除設定,請先停用防刪除功能

Firebase 控制台
  1. 前往 Firebase 控制台的「Firestore Database」頁面。

    前往 Firestore 資料庫

  2. 選取要刪除的資料庫。
  3. 按一下 「查看更多」
  4. 按一下「刪除」即可刪除資料庫。
gcloud CLI

使用 `gcloud firestore databases delete` 指令。

gcloud firestore databases delete --database=DATABASE_ID

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

複製資料庫

您可以將現有資料庫在所選時間戳記的狀態複製到新資料庫:

  • 複製的資料庫是新資料庫,會建立在與來源資料庫相同的位置。

    如要建立副本,Cloud Firestore 會使用來源資料庫的時間點復原 (PITR) 資料。複製的資料庫包括所有資料和索引。

  • 根據預設,複製的資料庫會採用與來源資料庫相同的加密方式,也就是使用 Google 的預設加密機制或 CMEK 加密機制。您可以指定不同的加密類型,或是使用不同的金鑰進行 CMEK 加密。

  • 時間戳記的精細度為一分鐘,且指定過去的時間點,該時間點位於 PITR 視窗定義的期間內:

    • 如果資料庫已啟用 PITR,您可以選取過去 7 天內的任何時間點 (如果啟用 PITR 的時間未滿 7 天,則可選取的時間範圍會更短)。
    • 如果未啟用 PITR,您可以選取過去一小時內的任一分鐘。
    • 你可以查看資料庫說明中可選取的最早時間戳記。

控制台

  1. 前往 Google Cloud 控制台的「資料庫」頁面。

    前往「資料庫」

  2. 在要複製的資料庫表格列中,按一下「查看更多」。按一下「Clone」(複製)。系統會顯示「建立副本」對話方塊。

  3. 在「Create a clone」(建立副本) 對話方塊中,提供資料庫副本的參數:

    1. 在「為本機副本提供 ID」欄位中,輸入新複製資料庫的資料庫 ID。這個資料庫 ID 不得與現有資料庫建立關聯。

    2. 在「Clone from」(從以下時間點複製) 欄位中,選取要用於複製的時間點。 所選時間對應至 PITR 時間戳記,精確度為分鐘。

  4. 按一下 [建立本機複本]

gcloud

使用 gcloud firestore databases clone 指令複製資料庫:

gcloud firestore databases clone \
--source-database='SOURCE_DATABASE' \
--snapshot-time='PITR_TIMESTAMP' \
--destination-database='DESTINATION_DATABASE_ID'

更改下列內容:

  • SOURCE_DATABASE:要複製的現有資料庫名稱。名稱格式為 projects/PROJECT_ID/databases/SOURCE_DATABASE_ID

  • PITR_TIMESTAMPPITR 時間戳記,採用 RFC 3339 格式,精確度為分鐘。例如:2025-06-01T10:20:00.00Z2025-06-01T10:30:00.00-07:00

  • DESTINATION_DATABASE_ID:新複製資料庫的資料庫 ID。這個資料庫 ID 不得與現有資料庫建立關聯。

範例:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db'

如要在複製資料庫時繫結某些標記,請使用先前的指令搭配 --tags 旗標,這是要繫結的標記 KEY=VALUE 組合的選用清單。

範例:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--tags=key1=value1,key2=value2

根據預設,複製的資料庫會與來源資料庫採用相同的加密設定。如要變更加密設定,請使用 --encryption-type 引數:

  • (預設) use-source-encryption:使用與來源資料庫相同的加密設定。
  • google-default-encryption:使用 Google 的預設加密機制。
  • customer-managed-encryption:使用 CMEK 加密。在 --kms-key-name 引數中指定金鑰 ID

以下範例說明如何為複製的資料庫設定 CMEK 加密:

gcloud firestore databases clone \
--source-database='projects/example-project/databases/example-source-db' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='example-dest-db' \
--encryption-type='customer-managed-encryption' \
--kms-key-name='projects/example-project/locations/us-central1/keyRings/example-key-ring/cryptoKeys/example-key'

設定每個資料庫的存取權限

您可以使用 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:專案 ID
  • EMAIL:代表特定帳戶的電子郵件地址,例如: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:代表特定帳戶的電子郵件地址,例如: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:代表特定帳戶的電子郵件地址,例如:alice@example.com

限制

每個專案最多可有 100 個資料庫。 如要提高這項上限,請與支援團隊聯絡

後續步驟