Xuất và nhập dữ liệu

Bạn có thể sử dụng dịch vụ xuất và nhập được quản lý của Cloud Firestore để khôi phục dữ liệu bị xoá nhầm và xuất dữ liệu để xử lý khi không có mạng. Bạn có thể xuất tất cả tài liệu hoặc chỉ xuất các nhóm bộ sưu tập cụ thể. Tương tự, bạn có thể nhập tất cả dữ liệu từ một tệp xuất hoặc chỉ nhập các nhóm tập hợp cụ thể. Bạn có thể nhập dữ liệu được xuất từ một cơ sở dữ liệu Cloud Firestore vào một cơ sở dữ liệu Cloud Firestore khác. Bạn cũng có thể tải Cloud Firestore tệp xuất vào BigQuery.

Trang này mô tả cách xuất và nhập tài liệu Cloud Firestore bằng dịch vụ xuất và nhập được quản lý cũng như Cloud Storage. Dịch vụ xuất và nhập được quản lý của Cloud Firestore được cung cấp thông qua công cụ dòng lệnh gcloud và API Cloud Firestore (REST, RPC).

Trước khi bắt đầu

Trước khi có thể sử dụng dịch vụ xuất và nhập được quản lý, bạn phải hoàn tất các nhiệm vụ sau:

  1. Bật tính năng thanh toán cho dự án Google Cloud của bạn. Chỉ những dự án Google Cloud đã bật tính năng thanh toán mới có thể sử dụng chức năng xuất và nhập.
  2. Tạo một bộ chứa Cloud Storage cho dự án của bạn ở một vị trí gần vị trí cơ sở dữ liệu Cloud Firestore của bạn. Bạn không thể sử dụng bộ chứa Người yêu cầu thanh toán hoặc bộ chứa Rapid cho các thao tác xuất và nhập.
  3. Đảm bảo tài khoản của bạn có các quyền cần thiết cho Cloud Firestore và Cloud Storage. Nếu bạn là chủ sở hữu dự án, tài khoản của bạn sẽ có các quyền cần thiết. Nếu không, các vai trò sau đây sẽ cấp quyền cần thiết cho hoạt động xuất và nhập cũng như quyền truy cập vào Cloud Storage:

Quyền của nhân viên hỗ trợ dịch vụ

Hoạt động xuất và nhập sử dụng tác nhân dịch vụ Cloud Firestore để cho phép các hoạt động Cloud Storage. Tác nhân dịch vụ Cloud Firestore sử dụng quy ước đặt tên sau:

Nhân viên hỗ trợ dịch vụ Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Để tìm hiểu thêm về tác nhân dịch vụ, hãy xem bài viết Tác nhân dịch vụ.

Tác nhân dịch vụ Cloud Firestore cần có quyền truy cập vào bộ chứa Cloud Storage được dùng trong một thao tác xuất hoặc nhập. Nếu bộ chứa Cloud Storage nằm trong cùng một dự án với cơ sở dữ liệu Cloud Firestore, thì tác nhân dịch vụ Cloud Firestore có thể truy cập vào bộ chứa theo mặc định.

Nếu bộ chứa Cloud Storage nằm trong một dự án khác, thì bạn phải cấp cho tác nhân dịch vụ Cloud Firestore quyền truy cập vào bộ chứa Cloud Storage.

Chỉ định vai trò cho tác nhân dịch vụ

Bạn có thể sử dụng công cụ dòng lệnh gsutil để chỉ định một trong các vai trò dưới đây. Ví dụ: để chỉ định vai trò Quản trị viên bộ nhớ cho tác nhân dịch vụ Cloud Firestore, hãy chạy lệnh sau:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com:roles/storage.admin \
    gs://[BUCKET_NAME]

Thay thế PROJECT_NUMBER bằng số dự án của bạn, số này được dùng để đặt tên cho tác nhân dịch vụ Cloud Firestore. Để xem tên của nhân viên hỗ trợ dịch vụ, hãy xem phần Xem tên nhân viên hỗ trợ dịch vụ.

Ngoài ra, bạn có thể chỉ định vai trò này bằng Google Cloud Console.

Xem tên nhân viên hỗ trợ dịch vụ

Bạn có thể xem tài khoản mà các thao tác nhập và xuất của bạn sử dụng để uỷ quyền yêu cầu trên trang Nhập/Xuất trong Google Cloud Console. Bạn cũng có thể xem liệu cơ sở dữ liệu của mình có sử dụng tác nhân dịch vụ Cloud Firestore hay tài khoản dịch vụ App Engine cũ hay không.

  1. Xem tài khoản uỷ quyền bên cạnh nhãn Chạy công việc nhập/xuất dưới dạng.

Tác nhân dịch vụ cần có vai trò Storage Admin đối với bộ chứa Cloud Storage để dùng cho thao tác xuất hoặc nhập.

Thiết lập gcloud cho dự án của bạn

Bạn có thể bắt đầu các thao tác nhập và xuất thông qua Google Cloud Console hoặc công cụ dòng lệnh gcloud. Để sử dụng gcloud, hãy thiết lập công cụ dòng lệnh và kết nối với dự án của bạn theo một trong những cách sau:

Xuất dữ liệu

Thao tác xuất sẽ sao chép tài liệu trong cơ sở dữ liệu của bạn vào một tập hợp tệp trong một bộ chứa Cloud Storage. Xin lưu ý rằng dữ liệu xuất không phải là ảnh chụp nhanh chính xác của cơ sở dữ liệu được chụp tại thời điểm bắt đầu xuất. Tệp xuất có thể bao gồm những thay đổi được thực hiện trong khi thao tác đang chạy.

Xuất tất cả tài liệu

Bảng điều khiển Google Cloud

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.

  4. Nhấp vào Xuất.

  5. Nhấp vào tuỳ chọn Xuất toàn bộ cơ sở dữ liệu.

  6. Trong phần Choose Destination (Chọn đích đến), hãy nhập tên của một bộ chứa Cloud Storage hoặc sử dụng nút Browse (Duyệt xem) để chọn một bộ chứa.

  7. Nhấp vào Xuất.

Bảng điều khiển sẽ quay lại trang Nhập/Xuất. Nếu thao tác này bắt đầu thành công, thì trang sẽ thêm một mục vào trang nhập và xuất gần đây. Nếu không thành công, trang sẽ hiển thị thông báo lỗi.

gcloud

Sử dụng lệnh firestore export để xuất tất cả tài liệu trong cơ sở dữ liệu, thay thế [BUCKET_NAME] bằng tên của bộ chứa Cloud Storage. Thêm cờ --async để ngăn công cụ gcloud chờ thao tác hoàn tất.

  gcloud firestore export gs://[BUCKET_NAME] \
  --database=[DATABASE]

Thay thế nội dung sau:

  • BUCKET_NAME: sắp xếp dữ liệu xuất bằng cách thêm tiền tố tệp sau tên bộ chứa, ví dụ: BUCKET_NAME/my-exports-folder/export-name. Nếu bạn không cung cấp tiền tố tệp, dịch vụ xuất được quản lý sẽ tạo một tiền tố dựa trên dấu thời gian hiện tại.

  • DATABASE: tên của cơ sở dữ liệu mà bạn muốn xuất tài liệu. Đối với cơ sở dữ liệu mặc định, hãy sử dụng --database='(default)'.

Sau khi bạn bắt đầu thao tác xuất, việc đóng thiết bị đầu cuối sẽ không huỷ thao tác đó, hãy xem phần huỷ thao tác.

Xuất các nhóm bộ sưu tập cụ thể

Bảng điều khiển Google Cloud

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.

  4. Nhấp vào Xuất.

  5. Nhấp vào lựa chọn Xuất một hoặc nhiều nhóm bộ sưu tập. Sử dụng trình đơn để chọn một hoặc nhiều nhóm bộ sưu tập.

  6. Trong phần Choose Destination (Chọn đích đến), hãy nhập tên của một bộ chứa Cloud Storage hoặc sử dụng nút Browse (Duyệt xem) để chọn một bộ chứa.

  7. Nhấp vào Xuất.

Bảng điều khiển sẽ quay lại trang Nhập/Xuất. Nếu thao tác này bắt đầu thành công, thì trang sẽ thêm một mục vào trang nhập và xuất gần đây. Nếu không thành công, trang sẽ hiển thị thông báo lỗi.

gcloud

Để xuất các nhóm tập hợp cụ thể, hãy sử dụng cờ --collection-ids. Thao tác này chỉ xuất những nhóm tập hợp có mã nhận dạng đã cho. Nhóm tập hợp bao gồm tất cả tập hợp và tập hợp con có mã nhận dạng tập hợp cuối cùng là mã nhận dạng nhóm tập hợp.

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] \
--database=[DATABASE]

Ví dụ: bạn có thể thiết kế một tập hợp restaurants trong cơ sở dữ liệu foo để bao gồm nhiều tập hợp con, chẳng hạn như ratings, reviews hoặc outlets. Để xuất nhóm tập hợp reviews, bạn phải liệt kê nhóm này một cách rõ ràng:

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=reviews \
--database='cymbal'

Nếu bạn chỉ định restaurants, thì các tài liệu trong bộ sưu tập con reviews sẽ không được xuất.

Xuất từ dấu thời gian PITR

Bạn có thể xuất cơ sở dữ liệu sang Cloud Storage từ dữ liệu PITR. Bạn có thể xuất dữ liệu PITR có dấu thời gian là dấu thời gian phút tròn trong bảy ngày qua, nhưng không sớm hơn earliestVersionTime. Nếu dữ liệu không còn tồn tại tại dấu thời gian đã chỉ định, thì thao tác xuất sẽ không thành công.

Thao tác xuất PITR hỗ trợ tất cả bộ lọc, bao gồm cả việc xuất tất cả tài liệu và xuất các nhóm tập hợp cụ thể.

Hãy lưu ý những điểm sau trước khi xuất dữ liệu PITR:

  • Chỉ định dấu thời gian theo định dạng RFC 3339. Ví dụ: 2023-05-26T10:20:00.00Z.
  • Đảm bảo rằng dấu thời gian bạn chỉ định là dấu thời gian tính theo phút tròn trong vòng 7 ngày qua, nhưng không sớm hơn earliestVersionTime. Nếu dữ liệu không còn tồn tại tại dấu thời gian đã chỉ định, thì hệ thống sẽ tạo ra lỗi.
  • Bạn sẽ không bị tính phí cho một lần xuất PITR không thành công.

Bảng điều khiển

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

    Chuyển đến phần Cơ sở dữ liệu
  2. Chọn một cơ sở dữ liệu trong danh sách cơ sở dữ liệu.
  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
  4. Nhấp vào Xuất.
  5. Định cấu hình nguồn xuất để xuất toàn bộ cơ sở dữ liệu hoặc chỉ xuất các nhóm tập hợp cụ thể.
  6. Trong phần Chọn trạng thái của cơ sở dữ liệu để xuất, hãy chọn Xuất từ một thời điểm trước đó.

    Chọn thời điểm chụp nhanh để sử dụng cho quá trình xuất

  7. Trong mục Đích đến, hãy nhập tên của một Cloud Storage vùng lưu trữ hoặc sử dụng nút Duyệt xem để chọn một vùng lưu trữ.
  8. Nhấp vào Xuất.

    Bảng điều khiển sẽ quay lại trang Nhập/Xuất. Nếu thao tác bắt đầu thành công, trang sẽ thêm một mục vào trang xuất và nhập gần đây. Nếu không thành công, trang sẽ hiển thị thông báo lỗi.

gcloud

Bạn có thể xuất cơ sở dữ liệu sang Cloud Storage từ dữ liệu PITR bằng lệnh gcloud firestore export.

Xuất cơ sở dữ liệu, chỉ định tham số snapshot-time cho dấu thời gian khôi phục. Chạy lệnh sau để xuất cơ sở dữ liệu sang bộ chứa của bạn.

gcloud firestore export gs://[BUCKET_NAME_PATH] \
    --snapshot-time=[PITR_TIMESTAMP]

Trong đó PITR_TIMESTAMP là dấu thời gian PITR ở mức độ chi tiết theo phút, ví dụ: 2023-05-26T10:20:00.00Z.

Thêm cờ --collection-ids để xuất các nhóm tập hợp cụ thể.

Nhập dữ liệu

Sau khi có tệp xuất trong Cloud Storage, bạn có thể nhập tài liệu trong các tệp đó trở lại dự án của mình hoặc vào một dự án khác. Hãy lưu ý những điểm sau về hoạt động nhập:

  • Khi bạn nhập dữ liệu, các chỉ mục bắt buộc sẽ được cập nhật bằng cách sử dụng định nghĩa chỉ mục hiện tại của cơ sở dữ liệu. Tệp xuất không chứa định nghĩa chỉ mục.

  • Thao tác nhập không chỉ định mã tài liệu mới. Quá trình nhập sử dụng mã nhận dạng được ghi lại tại thời điểm xuất. Khi một tài liệu đang được nhập, mã nhận dạng của tài liệu đó sẽ được đặt trước để tránh xung đột mã nhận dạng. Nếu đã có một tài liệu có cùng mã nhận dạng, thì quá trình nhập sẽ ghi đè lên tài liệu hiện có.

  • Nếu một tài liệu trong cơ sở dữ liệu của bạn không bị ảnh hưởng bởi quá trình nhập, thì tài liệu đó sẽ vẫn còn trong cơ sở dữ liệu sau khi nhập.

  • Thao tác nhập không kích hoạt Cloud Functions. Trình nghe ảnh chụp nhanh nhận được thông tin cập nhật liên quan đến hoạt động nhập.

  • Bạn không nên thêm tài liệu Cloud Firestore mới không có trong tệp đầu ra ban đầu của một tệp xuất hoặc xoá bất kỳ tài liệu hiện có nào khỏi tệp GCS trước khi nhập. Nếu không, quá trình nhập sẽ không thành công.

  • Tên tệp .overall_export_metadata phải khớp với tên của thư mục mẹ:

    gs://BUCKET_NAME/OPTIONAL_NAMESPACE_PATH/PARENT_FOLDER_NAME/PARENT_FOLDER_NAME.overall_export_metadata

    Nếu bạn di chuyển hoặc sao chép tệp đầu ra của một tệp xuất, hãy giữ nguyên tên tệp PARENT_FOLDER_NAME và .overall_export_metadata.

Nhập tất cả tài liệu từ một tệp xuất

Bảng điều khiển Google Cloud

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.

  4. Nhấp vào Nhập.

  5. Trong trường Filename (Tên tệp), hãy nhập tên tệp của một tệp .overall_export_metadata từ một thao tác xuất đã hoàn tất. Bạn có thể sử dụng nút Duyệt qua để chọn tệp.

  6. Nhấp vào Nhập.

Bảng điều khiển sẽ quay lại trang Nhập/Xuất. Nếu thao tác này bắt đầu thành công, thì trang sẽ thêm một mục vào trang nhập và xuất gần đây. Nếu không thành công, trang sẽ hiển thị thông báo lỗi.

gcloud

Sử dụng lệnh firestore import để nhập tài liệu từ một thao tác xuất trước đó.

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ --database=[DATABASE]

Thay thế nội dung sau:

  • BUCKET_NAME/EXPORT_PREFIX: vị trí của tệp xuất.

  • DATABASE: tên của cơ sở dữ liệu. Đối với cơ sở dữ liệu mặc định, hãy sử dụng --database='(default)'.

Ví dụ:

gcloud firestore import gs://my-bucket/2017-05-25T23:54:39_76544/ --database='cymbal'

Bạn có thể xác nhận vị trí của các tệp xuất trong trình duyệt Cloud Storage trên Google Cloud Console:

Mở trình duyệt Cloud Storage

Sau khi bạn bắt đầu thao tác nhập, việc đóng thiết bị đầu cuối sẽ không huỷ thao tác đó, hãy xem phần huỷ thao tác.

Nhập các nhóm bộ sưu tập cụ thể

Bảng điều khiển Google Cloud

Bạn không thể chọn các nhóm tập hợp cụ thể trong bảng điều khiển. Thay vào đó, hãy sử dụng gcloud.

gcloud

Để nhập các nhóm tập hợp cụ thể từ một tập hợp tệp xuất, hãy sử dụng cờ --collection-ids. Thao tác này chỉ nhập những nhóm tập hợp có mã nhận dạng đã cho. Nhóm tập hợp bao gồm tất cả tập hợp và tập hợp con có mã nhận dạng tập hợp cuối cùng là mã nhận dạng nhóm tập hợp. Chỉ định tên cơ sở dữ liệu bằng cờ --database. Đối với cơ sở dữ liệu mặc định, hãy sử dụng --database='(default)'.

Chỉ có thể nhập các nhóm tập hợp cụ thể từ tệp xuất của các nhóm tập hợp cụ thể. Bạn không thể nhập các nhóm tập hợp cụ thể từ một tệp xuất tất cả tài liệu.

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_GROUP_ID_1],[COLLECTION_GROUP_ID_2] \
  --database=[DATABASE]

Nhập dữ liệu xuất PITR

Làm theo các bước trong phần Nhập tất cả tài liệu để nhập cơ sở dữ liệu đã xuất. Nếu có tài liệu nào đã tồn tại trong cơ sở dữ liệu, thì tài liệu đó sẽ bị ghi đè.

Quản lý hoạt động xuất và nhập

Sau khi bạn bắt đầu thao tác xuất hoặc nhập, Cloud Firestore sẽ chỉ định một tên riêng biệt cho thao tác đó. Bạn có thể sử dụng tên thao tác để xoá, huỷ hoặc kiểm tra trạng thái của thao tác.

Tên thao tác có tiền tố là projects/[PROJECT_ID]/databases/(default)/operations/, ví dụ:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

Tuy nhiên, bạn có thể bỏ qua tiền tố khi chỉ định tên thao tác cho các lệnh describe, cancel và delete.

Liệt kê tất cả hoạt động xuất và nhập

Bảng điều khiển Google Cloud

Bạn có thể xem danh sách các thao tác xuất và nhập gần đây trên trang Nhập/Xuất của Google Cloud Console.

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.

gcloud

Sử dụng lệnh operations list để xem tất cả các thao tác xuất và nhập đang chạy và vừa hoàn tất:

gcloud firestore operations list

Kiểm tra trạng thái hoạt động

Bảng điều khiển Google Cloud

Bạn có thể xem trạng thái của một thao tác nhập hoặc xuất gần đây trên trang Nhập/Xuất của Google Cloud Console.

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.

gcloud

Sử dụng lệnh operations describe để hiện trạng thái của thao tác xuất hoặc nhập.

gcloud firestore operations describe [OPERATION_NAME]

Ước tính thời gian hoàn thành

Yêu cầu về trạng thái của một thao tác diễn ra trong thời gian dài sẽ trả về các chỉ số workEstimated và workCompleted. Mỗi chỉ số này được trả về theo cả số byte và số thực thể:

  • workEstimated cho biết tổng số byte và tài liệu ước tính mà một thao tác sẽ xử lý. Cloud Firestore có thể bỏ qua chỉ số này nếu không thể đưa ra thông tin ước tính.

  • workCompleted cho biết số byte và số tài liệu đã được xử lý cho đến nay. Sau khi thao tác hoàn tất, giá trị này sẽ cho biết tổng số byte và tài liệu thực tế đã được xử lý, có thể lớn hơn giá trị của workEstimated.

Chia workCompleted cho workEstimated để ước tính sơ bộ tiến độ. Thông tin ước tính này có thể không chính xác vì phụ thuộc vào việc thu thập số liệu thống kê bị trì hoãn.

Huỷ thao tác

Bảng điều khiển Google Cloud

Bạn có thể huỷ một thao tác xuất hoặc nhập đang chạy trên trang Nhập/Xuất của Google Cloud Console.

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.

  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất. Trong bảng Lượt nhập và xuất gần đây, các thao tác đang chạy sẽ có nút Huỷ trong cột Đã hoàn tất. Nhấp vào nút Huỷ để dừng thao tác. Nút này sẽ thay đổi thành thông báo Đang huỷ, sau đó thành Đã huỷ khi thao tác dừng hoàn toàn.

Bảng nhập và xuất gần đây trong bảng điều khiển cho thấy một hoạt động nhập dữ liệu đang diễn ra, kèm theo lựa chọn Huỷ để dừng hoạt động này.

gcloud

Sử dụng lệnh operations cancel để dừng một thao tác đang diễn ra:

gcloud firestore operations cancel [OPERATION_NAME]

Việc huỷ một thao tác đang chạy sẽ không huỷ bỏ thao tác đó. Thao tác xuất bị huỷ sẽ để lại các tài liệu đã được xuất trong Cloud Storage, còn thao tác nhập bị huỷ sẽ giữ nguyên các bản cập nhật đã được thực hiện cho cơ sở dữ liệu của bạn. Bạn không thể nhập một tệp xuất chưa hoàn tất.

Xoá một thao tác

Sử dụng lệnh gcloud firestore operations delete để xoá một thao tác khỏi danh sách các thao tác gần đây. Lệnh này sẽ không xoá các tệp xuất khỏi Cloud Storage.

gcloud firestore operations delete [OPERATION_NAME]

Thanh toán và giá cho hoạt động xuất và nhập

Bạn phải bật tính năng thanh toán cho dự án Google Cloud trước khi sử dụng dịch vụ xuất và nhập được quản lý.

Thao tác xuất và nhập được tính phí cho các lượt đọc và ghi tài liệu theo mức giá nêu trong phần Cloud Firestore giá. Thao tác xuất sẽ phát sinh một thao tác đọc cho mỗi tài liệu được xuất. Thao tác nhập sẽ phát sinh một thao tác ghi cho mỗi tài liệu được nhập.

Các tệp đầu ra được lưu trữ trong Cloud Storage sẽ được tính vào chi phí lưu trữ dữ liệu Cloud Storage.

Hoạt động xuất hoặc nhập sẽ không kích hoạt cảnh báo về ngân sách Google Cloud cho đến khi hoàn tất. Thao tác xuất và nhập sẽ không ảnh hưởng đến mức sử dụng hiển thị trong phần mức sử dụng của bảng điều khiển.

Xem chi phí xuất và nhập

Thao tác xuất và nhập áp dụng nhãn goog-firestoremanaged:exportimport cho các thao tác được tính phí. Trong trang báo cáo thanh toán Cloud Billing, bạn có thể sử dụng nhãn này để xem các chi phí liên quan đến hoạt động nhập và xuất:

Truy cập nhãn goog-firestoremanaged trong trình đơn bộ lọc.

Xuất sang BigQuery

Bạn có thể tải dữ liệu từ tệp xuất Cloud Firestore vào BigQuery, nhưng chỉ khi bạn đã chỉ định bộ lọc collection-ids. Xem phần Tải dữ liệu từ tệp xuất Cloud Firestore.

Giới hạn BigQuery cột

BigQuery áp đặt giới hạn 10.000 cột cho mỗi bảng. Thao tác xuất Cloud Firestore tạo một giản đồ bảng BigQuery cho mỗi nhóm tập hợp. Trong giản đồ này, mỗi tên trường riêng biệt trong một nhóm tập hợp sẽ trở thành một cột giản đồ. Nếu giản đồ BigQuery của một nhóm tập hợp vượt quá 10.000 cột, thì thao tác xuất Cloud Firestore sẽ cố gắng duy trì dưới giới hạn cột bằng cách coi các trường bản đồ là byte. Nếu lượt chuyển đổi này khiến số lượng cột giảm xuống dưới 10.000, thì bạn có thể tải dữ liệu vào BigQuery, nhưng không thể truy vấn các trường con trong trường bản đồ. Nếu số lượng cột vẫn vượt quá 10.000, thì thao tác xuất sẽ không tạo giản đồ BigQuery cho nhóm tập hợp và bạn không thể tải dữ liệu của nhóm đó vào BigQuery.

Định dạng xuất và tệp siêu dữ liệu

Kết quả của một tệp xuất được quản lý sử dụng định dạng nhật ký LevelDB.

Tệp siêu dữ liệu

Thao tác xuất sẽ tạo một tệp siêu dữ liệu cho mỗi nhóm tập hợp mà bạn chỉ định. Tệp siêu dữ liệu thường có tên là ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata.

Các tệp siêu dữ liệu là vùng đệm giao thức và bạn có thể giải mã các tệp này bằng trình biên dịch giao thức protoc. Ví dụ: bạn có thể giải mã tệp siêu dữ liệu để xác định các nhóm tập hợp mà tệp xuất chứa:

protoc --decode_raw < export0.export_metadata

Di chuyển tác nhân dịch vụ

Cloud Firestore sử dụng tác nhân dịch vụ Cloud Firestore để cho phép các thao tác nhập và xuất thay vì sử dụng tài khoản dịch vụ App Engine. Tác nhân dịch vụ và tài khoản dịch vụ sử dụng quy ước đặt tên sau:

Nhân viên hỗ trợ dịch vụ Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

Cloud Firestore trước đây đã sử dụng tài khoản dịch vụ mặc định App Engine thay vì tác nhân dịch vụ Cloud Firestore. Nếu cơ sở dữ liệu của bạn vẫn sử dụng tài khoản dịch vụ App Engine để nhập hoặc xuất dữ liệu, bạn nên làm theo hướng dẫn trong phần này để chuyển sang sử dụng tác nhân dịch vụ Cloud Firestore.

tài khoản dịch vụ App Engine
PROJECT_ID@appspot.gserviceaccount.com

Bạn nên dùng tác nhân dịch vụ Cloud Firestore vì tác nhân này dành riêng cho Cloud Firestore. Tài khoản dịch vụ App Engine được dùng chung cho nhiều dịch vụ.

Xem tài khoản uỷ quyền

Bạn có thể xem tài khoản mà các thao tác nhập và xuất của bạn sử dụng để uỷ quyền cho các yêu cầu trên trang Nhập/Xuất trong Google Cloud Console. Bạn cũng có thể xem liệu cơ sở dữ liệu của bạn đã sử dụng tác nhân dịch vụ Cloud Firestore chưa.

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.

  4. Xem tài khoản uỷ quyền bên cạnh nhãn Chạy công việc nhập/xuất dưới dạng.

Nếu dự án của bạn không sử dụng tác nhân dịch vụ Cloud Firestore, bạn có thể di chuyển sang tác nhân dịch vụ Cloud Firestore bằng một trong hai kỹ thuật sau:

Bạn nên dùng kỹ thuật đầu tiên vì kỹ thuật này giúp khoanh vùng phạm vi ảnh hưởng đến một dự án Cloud Firestore. Kỹ thuật thứ hai không được ưu tiên vì không di chuyển các quyền hiện có của bộ chứa Cloud Storage. Tuy nhiên, tính năng này cung cấp khả năng tuân thủ bảo mật ở cấp tổ chức.

Di chuyển bằng cách kiểm tra và cập nhật quyền đối với bộ chứa Cloud Storage

Quá trình di chuyển gồm hai bước:

  1. Cập nhật quyền đối với bộ chứa Cloud Storage. Hãy xem phần sau để biết thông tin chi tiết.
  2. Xác nhận di chuyển sang tác nhân dịch vụ Cloud Firestore.

Quyền đối với bộ chứa của tác nhân dịch vụ

Đối với mọi hoạt động xuất hoặc nhập sử dụng bộ chứa Cloud Storage trong một dự án khác, bạn phải cấp quyền cho tác nhân dịch vụ Cloud Firestore đối với bộ chứa đó. Ví dụ: các thao tác di chuyển dữ liệu sang một dự án khác cần truy cập vào một bộ chứa trong dự án đó. Nếu không, các thao tác này sẽ không thành công sau khi di chuyển sang tác nhân dịch vụ Cloud Firestore.

Quy trình nhập và xuất trong cùng một dự án không yêu cầu thay đổi quyền. Theo mặc định, tác nhân dịch vụ Cloud Firestore có thể truy cập vào các bộ chứa trong cùng một dự án.

Cập nhật quyền cho các bộ chứa Cloud Storage từ các dự án khác để cấp quyền truy cập cho tác nhân dịch vụ service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com. Cấp cho tác nhân dịch vụ vai trò Firestore Service Agent.

Vai trò Firestore Service Agent cấp quyền đọc và quyền ghi cho một bộ chứa Cloud Storage. Nếu bạn chỉ cần cấp quyền đọc hoặc quyền ghi, hãy sử dụng vai trò tuỳ chỉnh.

Quy trình di chuyển được mô tả trong phần sau đây giúp bạn xác định các bộ chứa Cloud Storage có thể cần cập nhật quyền.

Di chuyển dự án sang Tác nhân dịch vụ Firestore

Hãy hoàn tất các bước sau để di chuyển từ tài khoản dịch vụ App Engine sang tác nhân dịch vụ Cloud Firestore. Sau khi hoàn tất, bạn không thể huỷ quá trình di chuyển.

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.

  4. Nếu dự án của bạn chưa di chuyển sang tác nhân dịch vụ Cloud Firestore, bạn sẽ thấy một biểu ngữ mô tả quá trình di chuyển và nút Kiểm tra trạng thái bộ chứa. Bước tiếp theo sẽ giúp bạn xác định và khắc phục các lỗi tiềm ẩn về quyền.

    Nhấp vào Check Bucket Status (Kiểm tra trạng thái bộ chứa).

    Một trình đơn sẽ xuất hiện cùng với lựa chọn hoàn tất quá trình di chuyển và danh sách các bộ chứa Cloud Storage. Có thể mất vài phút để danh sách tải xong.

    Danh sách này bao gồm các bộ chứa được dùng gần đây trong các thao tác nhập và xuất, nhưng hiện không cấp quyền đọc và quyền ghi cho tác nhân dịch vụ Cloud Firestore.

  5. Ghi lại tên chính của tác nhân dịch vụ Cloud Firestore trong dự án của bạn. Tên nhân viên hỗ trợ dịch vụ xuất hiện dưới nhãn Nhân viên hỗ trợ dịch vụ cần cấp quyền truy cập.
  6. Đối với bất kỳ bộ chứa nào trong danh sách mà bạn sẽ sử dụng cho các thao tác nhập hoặc xuất trong tương lai, hãy hoàn tất các bước sau:

    1. Trong hàng của bảng chứa bộ chứa này, hãy nhấp vào Khắc phục. Thao tác này sẽ mở trang quyền của bộ chứa đó trong một thẻ mới.

    2. Nhấp vào Thêm.
    3. Trong trường Bên giao đại lý mới, hãy nhập tên của tác nhân dịch vụ Cloud Firestore.
    4. Trong trường Chọn vai trò, hãy chọn Tác nhân dịch vụ > Tác nhân dịch vụ Firestore.
    5. Nhấp vào Lưu.
    6. Quay lại thẻ có trang Nhập/Xuất Cloud Firestore.
    7. Lặp lại các bước này cho các bộ chứa khác trong danh sách. Hãy nhớ xem tất cả các trang trong danh sách.
  7. Nhấp vào Migrate to Firestore Service Agent (Di chuyển sang Tác nhân dịch vụ Firestore). Nếu vẫn còn bộ chứa không vượt qua được quy trình kiểm tra quyền, bạn cần xác nhận việc di chuyển bằng cách nhấp vào Di chuyển.

    Bạn sẽ nhận được thông báo khi quá trình di chuyển hoàn tất. Bạn không thể huỷ quy trình di chuyển.

Xem trạng thái di chuyển

Cách xác minh trạng thái di chuyển của dự án:

  1. Trong Google Cloud Console, hãy chuyển đến trang Databases (Cơ sở dữ liệu).

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

  2. Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
  3. Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.

  4. Tìm chủ thể bên cạnh nhãn Nhập/Xuất công việc chạy dưới dạng.

    Nếu tài khoản chính là service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, thì dự án của bạn đã di chuyển sang tác nhân dịch vụ Cloud Firestore. Bạn không thể huỷ quy trình di chuyển.

    Nếu dự án chưa được di chuyển, một biểu ngữ sẽ xuất hiện ở đầu trang kèm theo nút Check Bucket Status (Kiểm tra trạng thái bộ chứa). Xem bài viết Di chuyển sang tác nhân dịch vụ Firestore để hoàn tất quá trình di chuyển.

Thêm quy tắc ràng buộc chính sách trên toàn tổ chức

  • Đặt quy tắc ràng buộc sau đây trong chính sách của tổ chức:

    Yêu cầu tác nhân dịch vụ Firestore để nhập/xuất (firestore.requireP4SAforImportExport).

    Quy tắc ràng buộc này yêu cầu các thao tác nhập và xuất phải sử dụng tác nhân dịch vụ Cloud Firestore để uỷ quyền cho các yêu cầu. Để đặt quy tắc ràng buộc này, hãy xem bài viết Tạo và quản lý chính sách của tổ chức .

Việc áp dụng quy tắc ràng buộc này của chính sách tổ chức không tự động cấp các quyền thích hợp đối với bộ chứa Cloud Storage cho tác nhân dịch vụ Cloud Firestore.

Nếu quy tắc ràng buộc này gây ra lỗi về quyền cho bất kỳ quy trình nhập hoặc xuất nào, bạn có thể tắt quy tắc này để quay lại sử dụng tài khoản dịch vụ mặc định. Sau khi kiểm tra và cập nhật quyền đối với bộ chứa Cloud Storage, bạn có thể bật lại quy tắc ràng buộc.