Tạo và quản lý cơ sở dữ liệu

Trang này mô tả cách tạo, cập nhật và xoá Cloud Firestore cơ sở dữ liệu. Bạn có thể tạo nhiều Cloud Firestore cơ sở dữ liệu cho mỗi dự án. Bạn có thể sử dụng nhiều cơ sở dữ liệu để thiết lập môi trường kiểm thử và sản xuất, để tách biệt dữ liệu khách hàng và để bản địa hoá dữ liệu.

Mức sử dụng bậc miễn phí

Cloud Firestore cung cấp bậc miễn phí để bạn có thể bắt đầu sử dụng mà không tốn chi phí.

Bậc miễn phí chỉ áp dụng cho một Cloud Firestore cơ sở dữ liệu cho mỗi dự án. Cơ sở dữ liệu đầu tiên được tạo trong một dự án không có cơ sở dữ liệu bậc miễn phí sẽ được hưởng bậc miễn phí. Nếu cơ sở dữ liệu được áp dụng bậc miễn phí bị xoá, thì cơ sở dữ liệu tiếp theo được tạo sẽ nhận được bậc miễn phí.

Trước khi bắt đầu

Bạn phải hoàn tất các bước sau trước khi tạo cơ sở dữ liệu:

  1. Nếu bạn chưa có, hãy tạo một dự án Firebase: Trong bảng điều khiển Firebase Firebase, hãy nhấp vào Thêm dự án, sau đó làm theo hướng dẫn trên màn hình để tạo một dự án Firebase hoặc thêm các dịch vụ Firebase vào một dự án Google Cloud hiện có.

  2. Chỉ định các vai trò Identity and Access Management (IAM) thích hợp như mô tả trong phần tiếp theo.

Các vai trò bắt buộc

Để tạo và quản lý cơ sở dữ liệu, bạn cần có vai trò Owner hoặc Datastore Owner Identity and Access Management. Các vai trò này cấp các quyền cần thiết.

Các quyền bắt buộc

Để quản lý cơ sở dữ liệu, bạn cần có các quyền sau:

  • Tạo cơ sở dữ liệu: datastore.databases.create
  • Đọc cấu hình cơ sở dữ liệu: datastore.databases.getMetadata
  • Định cấu hình cơ sở dữ liệu: datastore.databases.update
  • Xoá cơ sở dữ liệu: datastore.databases.delete
  • Sao chép cơ sở dữ liệu: datastore.databases.clone

Tạo cơ sở dữ liệu

Để tạo cơ sở dữ liệu Cloud Firestore, hãy sử dụng một trong các phương thức sau:

Bảng điều khiển Firebase
  1. Trong bảng điều khiển Firebase, hãy chuyển đến trang Cơ sở dữ liệu Firestore.

    Chuyển đến Cơ sở dữ liệu Firestore

  2. Nhấp vào Thêm cơ sở dữ liệu.
  3. Chọn Phiên bản dành cho doanh nghiệp. Nhấp vào Tiếp theo.
  4. Chọn Firestore có khả năng tương thích với MongoDB.
  5. Nhập Mã cơ sở dữ liệu.
  6. Chọn vị trí cho cơ sở dữ liệu.
  7. Nhấp vào Tạo.
Giao diện dòng lệnh (CLI) của Firebase
firebase firestore:databases:create --edition EDITION DATABASE_ID \
--location=LOCATION
gcloud CLI

Sử dụng lệnh gcloud firestore databases create và đặt --edition=enterprise.

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

Thay thế các mục sau:

Để bật tính năng bảo vệ chống xoá, hãy thêm cờ --delete-protection. Bạn không thể xoá cơ sở dữ liệu có bật tính năng bảo vệ chống xoá cho đến khi tắt chế độ cài đặt này. Cài đặt này bị tắt theo mặc định.

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

Để thêm thẻ vào cơ sở dữ liệu, hãy sử dụng --tags cờ. Ví dụ:

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

Sử dụng tài nguyên google_firestore_database và đặt database_edition thành 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"
}

Thay thế các mục sau:

Để bật tính năng bảo vệ chống xoá, hãy đặt delete_protection_state thành DELETE_PROTECTION_ENABLED. Bạn không thể xoá cơ sở dữ liệu có bật tính năng bảo vệ chống xoá cho đến khi tắt chế độ cài đặt này. Cài đặt này bị tắt theo mặc định.

Mã cơ sở dữ liệu

Mã cơ sở dữ liệu hợp lệ bao gồm các mã tuân thủ những điều sau:

  • Chỉ bao gồm các ký tự chữ cái, số và dấu gạch nối (-).
  • Chữ cái phải là chữ thường.
  • Ký tự đầu tiên phải là một chữ cái.
  • Ký tự cuối cùng phải là một chữ cái hoặc số.
  • Tối thiểu 4 ký tự.
  • Tối đa 63 ký tự.
  • Không được là UUID hoặc giống UUID. Ví dụ: không sử dụng mã như f47ac10b-58cc-0372-8567-0e02b2c3d479.

Nếu xoá một cơ sở dữ liệu, bạn không thể sử dụng lại ngay mã cơ sở dữ liệu đó cho đến sau 5 phút.

Biện pháp bảo vệ chống xoá

Sử dụng tính năng bảo vệ chống xoá để tránh trường hợp xoá cơ sở dữ liệu do nhầm lẫn. Tính năng bảo vệ chống xoá hoạt động theo cách sau:

  • Bạn không thể xoá cơ sở dữ liệu có bật tính năng bảo vệ chống xoá cho đến khi tắt tính năng bảo vệ chống xoá.
  • Tính năng bảo vệ chống xoá bị tắt theo mặc định.
  • Bạn có thể bật tính năng bảo vệ chống xoá khi tạo cơ sở dữ liệu hoặc có thể cập nhật cấu hình cơ sở dữ liệu để bật tính năng bảo vệ chống xoá.

Liệt kê cơ sở dữ liệu

Sử dụng một trong các phương thức sau để liệt kê cơ sở dữ liệu:

Bảng điều khiển Firebase
  1. Trong bảng điều khiển Firebase, hãy chuyển đến trang Cơ sở dữ liệu Firestore.

    Chuyển đến Cơ sở dữ liệu Firestore

  2. Nhấp vào Cloud Firestore để xem tất cả cơ sở dữ liệu cho dự án.
gcloud CLI

Sử dụng lệnh gcloud firestore databases list để liệt kê tất cả cơ sở dữ liệu trong dự án.

gcloud firestore databases list

Xem thông tin chi tiết về cơ sở dữ liệu

Để xem thông tin chi tiết về một cơ sở dữ liệu, hãy sử dụng một trong các phương thức sau:

Bảng điều khiển Firebase
  1. Trong bảng điều khiển Firebase, hãy chuyển đến trang Cơ sở dữ liệu Firestore.

    Chuyển đến Cơ sở dữ liệu Firestore

  2. Chọn một cơ sở dữ liệu trong danh sách cơ sở dữ liệu.
gcloud CLI

Sử dụng lệnh gcloud firestore databases describe:

gcloud firestore databases describe --database=DATABASE_ID

Thay thế DATABASE_ID bằng một mã cơ sở dữ liệu.

Cập nhật cấu hình cơ sở dữ liệu

Để cập nhật chế độ cài đặt cấu hình của cơ sở dữ liệu, hãy sử dụng gcloud firestore databases update lệnh.

Sử dụng lệnh này để thay đổi, bật hoặc tắt tính năng bảo vệ chống xoá.

Cập nhật chế độ cài đặt bảo vệ chống xoá

Để bật tính năng bảo vệ chống xoá trên cơ sở dữ liệu, hãy sử dụng lệnh gcloud firestore databases update với cờ --delete-protection. Ví dụ:

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

Thay thế DATABASE_ID bằng một mã cơ sở dữ liệu.

Để tắt tính năng bảo vệ chống xoá trên cơ sở dữ liệu, hãy sử dụng lệnh gcloud firestore databases update với cờ --no-delete-protection. Ví dụ:

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

Thay thế DATABASE_ID bằng một mã cơ sở dữ liệu.

Xoá cơ sở dữ liệu

Để xoá cơ sở dữ liệu, hãy sử dụng bảng điều khiển hoặc công cụ dòng lệnh. Việc xoá cơ sở dữ liệu không phát sinh chi phí cho các thao tác xoá.

Nếu cơ sở dữ liệu có bật chế độ cài đặt bảo vệ chống xoá, thì bạn phải trước tiên tắt tính năng bảo vệ chống xoá.

Bảng điều khiển Firebase
  1. Trong bảng điều khiển Firebase, hãy chuyển đến trang Cơ sở dữ liệu Firestore.

    Chuyển đến Cơ sở dữ liệu Firestore

  2. Chọn cơ sở dữ liệu mà bạn muốn xoá.
  3. Nhấp vào Xem thêm.
  4. Nhấp vào Xoá để xoá cơ sở dữ liệu.
gcloud CLI

Sử dụng lệnh `gcloud firestore databases delete`.

gcloud firestore databases delete --database=DATABASE_ID

Thay thế DATABASE_ID bằng mã của cơ sở dữ liệu cần xoá.

Sao chép cơ sở dữ liệu

Bạn có thể sao chép một cơ sở dữ liệu hiện có tại dấu thời gian đã chọn vào một cơ sở dữ liệu mới:

  • Cơ sở dữ liệu được sao chép là một cơ sở dữ liệu mới sẽ được tạo ở cùng vị trí với cơ sở dữ liệu nguồn.

    Để tạo bản sao, Cloud Firestore sử dụng dữ liệu khôi phục tại một thời điểm (PITR) của cơ sở dữ liệu nguồn. Cơ sở dữ liệu được sao chép bao gồm tất cả dữ liệu và chỉ mục.

  • Theo mặc định, cơ sở dữ liệu được sao chép sẽ được mã hoá theo cùng một cách với cơ sở dữ liệu nguồn, sử dụng quy trình mã hoá mặc định của Google hoặc quy trình mã hoá CMEK. Bạn có thể chỉ định một loại mã hoá khác hoặc sử dụng một khoá khác cho quy trình mã hoá CMEK.

  • Dấu thời gian có độ chi tiết là một phút và chỉ định một thời điểm trong quá khứ, trong khoảng thời gian được xác định bởi cửa sổ PITR:

    • Nếu bạn đã bật PITR cho cơ sở dữ liệu, thì bạn có thể chọn bất kỳ phút nào trong 7 ngày qua (hoặc ít hơn nếu bạn đã bật PITR chưa đến 7 ngày).
    • Nếu bạn chưa bật PITR, thì bạn có thể chọn bất kỳ phút nào trong giờ qua.
    • Bạn có thể kiểm tra dấu thời gian sớm nhất mà bạn có thể chọn trong phần mô tả cơ sở dữ liệu.

Bảng điều khiển

  1. Trong bảng điều khiển Cloud, hãy chuyển đến trang Cơ sở dữ liệu.

    Chuyển đến Cơ sở dữ liệu

  2. Nhấp vào Xem thêm trong hàng của bảng cho cơ sở dữ liệu mà bạn muốn sao chép. Nhấp vào Sao chép. Hộp thoại Tạo bản sao sẽ xuất hiện.

  3. Trong hộp thoại Tạo bản sao, hãy cung cấp các tham số để sao chép cơ sở dữ liệu:

    1. Trong trường Đặt mã nhận dạng cho bản sao, hãy nhập mã cơ sở dữ liệu cho cơ sở dữ liệu được sao chép mới. Mã cơ sở dữ liệu này không được liên kết với cơ sở dữ liệu hiện có.

    2. Trong trường Sao chép từ, hãy chọn một thời điểm để sử dụng cho việc sao chép. Thời gian đã chọn tương ứng với dấu thời gian PITR, ở độ chi tiết theo phút.

  4. Nhấp vào Tạo bản sao.

gcloud

Sử dụng lệnh gcloud firestore databases clone để sao chép cơ sở dữ liệu:

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

Thay thế các mục sau:

  • SOURCE_DATABASE: tên cơ sở dữ liệu của một cơ sở dữ liệu hiện có mà bạn muốn sao chép. Tên này sử dụng định dạng projects/PROJECT_ID/databases/SOURCE_DATABASE_ID.

  • PITR_TIMESTAMP: dấu thời gian PITR ở định dạng RFC 3339, ở độ chi tiết theo phút. Ví dụ: 2025-06-01T10:20:00.00Z hoặc 2025-06-01T10:30:00.00-07:00.

  • DESTINATION_DATABASE_ID: mã cơ sở dữ liệu cho cơ sở dữ liệu được sao chép mới. Mã cơ sở dữ liệu này không được liên kết với cơ sở dữ liệu hiện có.

Ví dụ:

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'

Nếu bạn muốn liên kết với một số thẻ trong khi sao chép cơ sở dữ liệu, hãy sử dụng lệnh trước đó với cờ --tags. Đây là danh sách không bắt buộc gồm các cặp thẻ KEY=VALUE để liên kết.

Ví dụ:

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

Theo mặc định, cơ sở dữ liệu được sao chép sẽ có cùng cấu hình mã hoá với cơ sở dữ liệu nguồn. Để thay đổi cấu hình mã hoá, hãy sử dụng đối số --encryption-type:

  • (Mặc định) use-source-encryption: sử dụng cùng cấu hình mã hoá với cơ sở dữ liệu nguồn.
  • google-default-encryption: sử dụng quy trình mã hoá mặc định của Google.
  • customer-managed-encryption: sử dụng quy trình mã hoá CMEK. Chỉ định mã khoá trong đối số --kms-key-name.

Ví dụ sau đây cho thấy cách định cấu hình quy trình mã hoá CMEK cho cơ sở dữ liệu được sao chép:

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'

Định cấu hình quyền truy cập cho mỗi cơ sở dữ liệu

Bạn có thể sử dụng Điều kiện Identity and Access Management để định cấu hình quyền truy cập ở cấp độ mỗi cơ sở dữ liệu. Các ví dụ sau đây sử dụng Google Cloud CLI để chỉ định quyền truy cập có điều kiện cho một hoặc nhiều cơ sở dữ liệu. Bạn cũng có thể xác định các điều kiện IAM trong bảng điều khiển Google Cloud.

Xem chính sách IAM hiện có

gcloud projects get-iam-policy PROJECT_ID

Đặt PROJECT_ID thành mã dự án của bạn.

Cấp quyền truy cập vào cơ sở dữ liệu

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'

Đặt các mục sau:

  • PROJECT_ID: mã dự án của bạn
  • EMAIL: địa chỉ email đại diện cho một tài khoản cụ thể. Ví dụ: alice@example.com.
  • DATABASE_ID: mã cơ sở dữ liệu.
  • TITLE: tiêu đề không bắt buộc cho biểu thức.
  • DESCRIPTION: nội dung mô tả không bắt buộc về biểu thức.

Cấp quyền truy cập vào tất cả cơ sở dữ liệu ngoại trừ một cơ sở dữ liệu

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'

Đặt các mục sau:

  • PROJECT_ID: mã dự án của bạn
  • EMAIL: địa chỉ email đại diện cho một tài khoản cụ thể. Ví dụ: alice@example.com.
  • DATABASE_ID: mã cơ sở dữ liệu.
  • TITLE: tiêu đề không bắt buộc cho biểu thức.
  • DESCRIPTION: nội dung mô tả không bắt buộc về biểu thức.

Xoá chính sách cho một thành viên và vai trò nhất định

gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all

Đặt các mục sau:

  • PROJECT_ID: mã dự án của bạn
  • EMAIL: địa chỉ email đại diện cho một tài khoản cụ thể. Ví dụ: alice@example.com.

Hạn chế

Bạn có thể có tối đa 100 cơ sở dữ liệu cho mỗi dự án. Bạn có thể liên hệ với nhóm hỗ trợ để yêu cầu tăng hạn mức này.

Bước tiếp theo