Quản lý cơ sở dữ liệu

Trang này mô tả cách tạo, cập nhật và xoá cơ sở dữ liệu Cloud Firestore. Bạn có thể tạo nhiều cơ sở dữ liệu Cloud Firestore 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, cách ly dữ liệu khách hàng và để khu vực hoá dữ liệu.

Cơ sở dữ liệu (default)

Nếu bạn không chỉ định cơ sở dữ liệu, thì theo mặc định, các thư viện ứng dụng Cloud Firestore và Google Cloud CLI sẽ kết nối với cơ sở dữ liệu (default).

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 Quản lý danh tính và quyền truy cập. Các vai trò này cấp những 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

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

Để tạo 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
  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. Nếu đây là cơ sở dữ liệu có tên đầu tiên của bạn, hãy nhấp vào Thêm cơ sở dữ liệu.
  3. Nếu không, hãy nhấp vào (mặc định), rồi nhấp vào Thêm cơ sở dữ liệu.
  4. Định cấu hình cơ sở dữ liệu. Nhập mã nhận dạng cơ sở dữ liệu. Chọn một vị trí. Nhấp vào Tạo cơ sở dữ liệu.
gcloud

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

gcloud firestore databases create \
--database=DATABASE_ID \
--location=LOCATION \
--type=DATABASE_TYPE \
[--delete-protection]

Thay thế nội dung sau:

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

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

  • --tags=123/environment=production,123/costCenter=marketing
  • --tags=tagKeys/333=tagValues/444
Giao diện dòng lệnh (CLI) của Firebase
firebase firestore:databases:create DATABASE_ID \
--location=LOCATION \
[--delete-protection DELETE_PROTECTION_ENABLEMENT]

Thay thế nội dung sau:

--delete-protection là một đối số không bắt buộc để bật tính năng bảo vệ chống xoá. Bạn không thể xoá cơ sở dữ liệu có chế độ bảo vệ xoá được bật cho đến khi tắt chế độ cài đặt này. Theo mặc định, chế độ cài đặt này ở trạng thái tắt.

Terraform
resource "google_firestore_database" "database" {
  project     = "project-id"
  name        = DATABASE_ID
  location_id = LOCATION
  type        = DATABASE_TYPE

  // Optional
  delete_protection_state = DELETE_PROTECTION_STATE
}

Thay thế nội dung sau:

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

Mã cơ sở dữ liệu

Mã nhận dạng hợp lệ của cơ sở dữ liệu bao gồm (default) và mã nhận dạng tuân thủ những điều kiện sau:

  • Chỉ bao gồm các ký tự chữ cái, chữ 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ự.
  • Có tối đa 63 ký tự.
  • Không được là UUID hoặc giống với UUID. Ví dụ: đừng sử dụng mã nhận dạng 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ã nhận dạng cơ sở dữ liệu cho đến sau 5 phút.

Xoá chế độ bảo vệ

Sử dụng tính năng bảo vệ xoá để ngăn chặn trường hợp vô tình xoá cơ sở dữ liệu. Bạn không thể xoá cơ sở dữ liệu có tính năng bảo vệ xoá đang bật cho đến khi tắt tính năng này. Tính năng bảo vệ khỏi bị xoá ở trạng thái tắt theo mặc định. Bạn có thể bật tính năng bảo vệ khỏi xoá khi tạo cơ sở dữ liệu hoặc bạn có thể cập nhật cấu hình cơ sở dữ liệu để bật tính năng bảo vệ khỏi xoá.

Thiết lập Cloud Firestore Security Rules cho cơ sở dữ liệu

Sử dụng CLI Firebase để triển khai Cloud Firestore Security Rules cho từng cơ sở dữ liệu của bạn. Tham khảo hướng dẫn quản lý và triển khai Cloud Firestore Security Rules.

Truy cập vào cơ sở dữ liệu có tên bằng thư viện ứng dụng

Cơ sở dữ liệu có tên bao gồm mọi cơ sở dữ liệu không có tên (default). Theo mặc định, Firebase SDK và Thư viện ứng dụng Google API sẽ kết nối với cơ sở dữ liệu (default) Cloud Firestore trong một dự án. Để tạo một ứng dụng kết nối với cơ sở dữ liệu được đặt tên, hãy đặt mã cơ sở dữ liệu khi bạn khởi tạo một ứng dụng.

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

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

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

gcloud

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

gcloud firestore databases list
Giao diện dòng lệnh (CLI) của Firebase

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

firebase 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:

gcloud

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

gcloud firestore databases describe --database=DATABASE_ID
Giao diện dòng lệnh (CLI) của Firebase

Sử dụng lệnh firebase firestore:databases:get:

firebase firestore:databases:get DATABASE_ID

Thay thế DATABASE_ID bằng 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 một cơ sở dữ liệu, hãy sử dụng lệnh gcloud firestore databases update. Sử dụng lệnh này để bật hoặc tắt tính năng bảo vệ xoá.

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

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

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

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

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

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

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

Xoá cơ sở dữ liệu

Để xoá một 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.

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

Nếu cơ sở dữ liệu chứa dữ liệu tìm kiếm App Engine hoặc các thực thể blob, trước tiên, bạn phải xoá dữ liệu đó.

Việc xoá một cơ sở dữ liệu sẽ không tự động xoá mọi Eventarctrình kích hoạt cho cơ sở dữ liệu đó. Điều kiện kích hoạt sẽ ngừng gửi sự kiện nhưng vẫn tồn tại cho đến khi bạn xoá điều kiện kích hoạt.

Việc xoá cơ sở dữ liệu sẽ không phát sinh phí cho các thao tác xoá.

Bảng điều khiển
  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. Trên thẻ Dữ liệu, phía trên chế độ xem bảng dữ liệu cho cơ sở dữ liệu, hãy nhấp vào , sau đó chọn Xoá cơ sở dữ liệu.
  3. Làm theo hướng dẫn để xoá cơ sở dữ liệu.
gcloud

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

gcloud firestore databases delete --database=DATABASE_ID

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

Định cấu hình quyền truy cập cho từng cơ sở dữ liệu

Bạn có thể sử dụng Điều kiện quản lý danh tính và quyền truy cập để định cấu hình quyền truy cập ở cấp 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 Google Cloud Console.

Xem các 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 giá trị sau:

  • PROJECT_ID: mã dự án của bạn
  • EMAIL: một địa chỉ email đại diện cho một Tài khoản Google cụ thể. Ví dụ: alice@example.com.
  • DATABASE_ID: mã nhận dạng 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 giá trị sau:

  • PROJECT_ID: mã dự án của bạn
  • EMAIL: một địa chỉ email đại diện cho một Tài khoản Google cụ thể. Ví dụ: alice@example.com.
  • DATABASE_ID: mã nhận dạng 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 giá trị sau:

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

Cloud Monitoring

Các chỉ số Cloud Firestore được báo cáo trong 2 tài nguyên được giám sát.

Bạn có thể kiểm tra các chỉ số tổng hợp ở cấp cơ sở dữ liệu bằng cách xem firestore.googleapis.com/Database. Các chỉ số được báo cáo trong mục firestore_instance được tổng hợp ở cấp dự án.

Các điểm 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ạn không thể xoá cơ sở dữ liệu (default) nếu cơ sở dữ liệu đó chứa dữ liệu tìm kiếm GAE. Vui lòng sử dụng index delete api để xoá dữ liệu tìm kiếm trên GAE. Nếu gần đây bạn đã xoá dữ liệu Tìm kiếm trên GAE, thì có thể bạn sẽ phải đợi một khoảng thời gian trước khi có thể xoá cơ sở dữ liệu.
  • Bạn không thể xoá cơ sở dữ liệu (default) nếu cơ sở dữ liệu đó chứa bất kỳ thực thể blob nào. Vui lòng sử dụng API xoá Blobstore để xoá dữ liệu Blobstore. Bạn có thể kiểm tra xem cơ sở dữ liệu (default) có dữ liệu Blobstore hay không bằng cách chạy truy vấn GQL sau đây trong bảng điều khiển Google Cloud: SELECT * FROM __BlobInfo__.
  • Bạn không thể sử dụng lại mã nhận dạng cơ sở dữ liệu cho đến 5 phút sau khi xoá.
  • Cloud Functions phiên bản 1 không hỗ trợ cơ sở dữ liệu có tên Firestore. Vui lòng sử dụng Cloud Firestore Triggers (thế hệ thứ 2) để định cấu hình các sự kiện cho cơ sở dữ liệu được đặt tên.
  • Trình kích hoạt hàm Firestore phiên bản 1trình kích hoạt sự kiện Firestore có thể ngừng hoạt động sau khi cơ sở dữ liệu bị xoá, ngay cả khi bạn tạo một cơ sở dữ liệu mới có cùng tên.

Bước tiếp theo