建立及管理資料庫

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

免費方案用量

Cloud Firestore 提供免費方案,無須付費即可開始使用。

免費方案僅適用於每項專案的一個 Cloud Firestore 資料庫。在沒有免費方案資料庫的專案中,第一個建立的資料庫會獲得免費方案。如果刪除套用免費方案的資料庫,下一個建立的資料庫就會套用免費方案。

事前準備

建立資料庫前,請務必完成下列事項:

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

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

必要的角色

如要建立及管理資料庫,您必須具備 Owner 或 Datastore 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 Database」

  2. 按一下「新增資料庫」。
  3. 選取「Enterprise edition」。點選「下一步」。
  4. 選取「原生模式的 Firestore」。
  5. 輸入資料庫 ID。
  6. 選取資料庫位置。點選「下一步」。
  7. 選取要啟用或停用「即時更新」。

    啟用即時更新功能後,資料庫就能支援 onSnapshot 監聽器。原生模式的 Enterprise 資料庫預設會啟用這項功能。

  8. 選取 Cloud Firestore Security Rules 的起始模式:

    測試模式
    適合用於開始使用行動和網頁用戶端程式庫,但允許任何人讀取及覆寫資料。測試完成後,請務必詳閱「保護資料」一節。
    正式環境模式
    拒絕所有來自行動和網路用戶端的讀寫要求。您的已驗證應用程式伺服器 (Node.js、Python、Java) 仍可存取資料庫
  9. 點選「建立」。
gcloud CLI

使用 gcloud firestore databases create 指令:

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

更改下列內容:

資料庫 ID

有效的資料庫 ID 必須符合下列條件:

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

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

防刪除功能

使用防刪除功能,防止資料庫遭到意外刪除。刪除保護功能的運作方式如下:

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

可列出資料庫

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

Firebase 控制台
  1. 在 Firebase 控制台中,前往「Firestore Database」頁面。

    前往「Firestore Database」

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

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

gcloud firestore databases list

查看資料庫詳細資料

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

Firebase 控制台
  1. 在 Firebase 控制台中,前往「Firestore Database」頁面。

    前往「Firestore Database」

  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 Database」

  2. 選取要刪除的資料庫。
  3. 按一下「查看更多」圖示 。
  4. 按一下「Delete」(刪除),刪除資料庫。
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,則可選取過去一小時內的任一分鐘。
    • 您可以在資料庫說明中查看可選取的最早時間戳記。

Google Cloud 控制台

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

    前往「資料庫」

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

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

    1. 在「Give the clone an ID」(為本機副本設定 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_TIMESTAMP:RFC 3339 格式的 PITR 時間戳記,精細程度為分鐘。例如:2025-06-01T10:20:00.00Z 或 2025-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'

Firebase CLI

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

firebase firestore:databases:clone \
'SOURCE_DATABASE' \
'DESTINATION_DATABASE' \
--snapshot-time 'PITR_TIMESTAMP' \

更改下列內容:

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

  • DESTINATION_DATABASE::新複製資料庫 的名稱。名稱格式為 projects/PROJECT_ID/databases/DESTINATION_DATABASE_ID。這個資料庫名稱不得與現有資料庫相關聯。

  • PITR_TIMESTAMP:RFC 3339 格式的 PITR 時間戳記,精細程度為分鐘。例如:2025-06-01T10:20:00.00Z 或 2025-06-01T10:30:00.00-07:00。如未指定,系統會選擇目前時間,並向下捨入至分鐘。

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

  • (預設) USE_SOURCE_ENCRYPTION:使用與來源資料庫相同的加密設定。
  • GOOGLE_DEFAULT_ENCRYPTION:使用 Google 的預設加密機制。
  • CUSTOMER_MANAGED_ENCRYPTION:使用 CMEK 加密。在 --kms-key-name 引數中指定金鑰 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:專案 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 個資料庫。如要提高這項限制,請聯絡支援團隊。

後續步驟