建立及管理資料庫

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

免費版用量

Firestore 提供免費層級,您無須付費即可開始使用這項服務。

每項專案只能有一個 Firestore 資料庫適用免費方案。如果專案中沒有免費方案資料庫,則在專案中建立的第一個資料庫會取得免費方案。如果刪除套用免費層級的資料庫,下一個建立的資料庫將會套用免費層級。

事前準備

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

  1. Verify that billing is enabled for your Google Cloud project.

  2. 指派適當的身分與存取權管理角色,詳情請見下一節。

必要的角色

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

所需權限

如要管理資料庫,您需要下列權限:

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

建立資料庫

如要建立與 MongoDB 相容的 Firestore 資料庫,請使用下列任一方法:

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 按一下「建立 Firestore 資料庫」
  3. 輸入資料庫 ID。
  4. 選取 Enterprise 版本。
  5. 選取資料庫位置。
  6. (選用) 如需自訂加密方式,請按一下「顯示加密選項」,然後設定加密選項。
  7. 按一下 [Create Database] (建立資料庫)。
gcloud CLI

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

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

更改下列內容:

如要啟用防刪除功能,請新增 --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 必須符合下列條件:

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

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

刪除防護措施

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

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

可列出資料庫

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

控制台

前往 Google Cloud 控制台的「Databases」頁面。

前往「資料庫」

gcloud CLI

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

gcloud firestore databases list

查看資料庫詳細資料

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

控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  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。

刪除資料庫

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

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

Google Cloud 控制台
  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

  2. 找到要刪除的資料庫,然後按一下「動作」欄中的「查看更多」。按一下「刪除」。系統隨即會顯示對話方塊。
  3. 在「Delete database?」(要刪除資料庫嗎?) 對話方塊中,在文字欄位輸入資料庫 ID,確認要刪除。按一下「刪除」。控制台會通知您作業是否成功。

    如果作業失敗,請查看資料庫詳細資料,並確認刪除保護機制已停用。如要停用防刪除功能,請參閱「更新防刪除設定」。

gcloud CLI

使用 `gcloud firestore databases delete` 指令。

gcloud firestore databases delete --database=DATABASE_ID

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

複製資料庫

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

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

    Firestore 會使用來源資料庫的時間點復原 (PITR) 資料進行複製。複製的資料庫包括所有資料和索引。

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

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

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

主控台

  1. 前往 Google Cloud 控制台的「Databases」頁面。

    前往「資料庫」

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

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

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

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

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

gcloud

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

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

更改下列內容:

  • SOURCE_DATABASE_ID:您要複製的現有資料庫資料庫 ID

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

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

範例:

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

變更複製資料庫的加密設定

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

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

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

gcloud alpha firestore databases clone \
--source-database='projects/example-project/databases/(default)' \
--snapshot-time='2025-06-01T10:20:00.00Z' \
--destination-database='projects/example-project/databases/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 個資料庫。 如要提高這項上限,請與支援團隊聯絡

後續步驟