Bạn có thể sử dụng dịch vụ xuất và nhập được quản lý Cloud Firestore để khôi phục dữ liệu bị xoá do nhầm lẫn và xuất dữ liệu để xử lý ngoại tuyến. Bạn có thể xuất tất cả tài liệu hoặc chỉ xuất một số 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 bộ sưu tậ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 các tệp xuất Cloud Firestore 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ý và Cloud Storage. Dịch vụ xuất và nhập được quản lý Cloud Firestore có sẵn thông qua công cụ dòng lệnh gcloud
và API Cloud Firestore (REST, RPC).
Trước khi bắt đầu
Để 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 việc sau:
- 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.
- Tạo một vùng chứa Cloud Storage cho dự án ở một vị trí gần với vị trí cơ sở dữ liệu Cloud Firestore của bạn. Bạn không thể sử dụng một vùng lưu trữ Người yêu cầu thanh toán cho các thao tác xuất và nhập.
-
Đả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 là chủ sở hữu dự án, thì tài khoản của bạn có các quyền cần thiết. Nếu không, các vai trò sau đây sẽ cấp các quyền cần thiết cho hoạt động xuất và nhập, cũng như cho quyền truy cập vào Cloud Storage:
- Vai trò Cloud Firestore:
Owner
,Cloud Datastore Owner
hoặcCloud Datastore Import Export Admin
Vai trò Cloud Storage:
Owner
hoặcStorage Admin
- Vai trò Cloud Firestore:
Quyền của nhân viên hỗ trợ dịch vụ
Các thao tác xuất và nhập dữ liệu sử dụng tác nhân dịch vụ Cloud Firestore để uỷ quyền cho các thao tác 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ụ của Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
Để tìm hiểu thêm về trợ lý dịch vụ, hãy xem bài viết Trợ lý dịch vụ.
Tác nhân dịch vụ Cloud Firestore cần có quyền truy cập vào nhóm Cloud Storage được dùng trong thao tác xuất hoặc nhập. Nếu vùng chứa Cloud Storage của bạn 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 vùng 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 nhân viên hỗ trợ
Bạn có thể dùng công cụ dòng lệnh gsutil để chỉ định một trong các vai trò bên dưới. 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 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 dùng để uỷ quyền cho các yêu cầu trên trang Nhập/Xuất trong bảng điều khiển Google Cloud. 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.
- Xem tài khoản uỷ quyền bên cạnh nhãn Nhập/Xuất các công việc chạy dưới dạng.
Tác nhân dịch vụ cần có vai trò Storage Admin
đối với vùng chứa Cloud Storage sẽ được 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 bảng điều khiển Google Cloud 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:
Truy cập vào
gcloud
từ bảng điều khiển Google Cloud Platform bằng cách sử dụng Cloud Shell.Đảm bảo bạn đã định cấu hình
gcloud
cho đúng dự án:gcloud config set project [PROJECT_ID]
Xuất dữ liệu
Thao tác xuất sẽ sao chép các tài liệu trong cơ sở dữ liệu của bạn vào một nhóm tệp trong 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 thực hiện vào thời điểm bắt đầu xuất. Một thao tác 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
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
Nhấp vào Xuất.
Nhấp vào lựa chọn Xuất toàn bộ cơ sở dữ liệu.
Bên dưới mục Chọn đích đến, hãy nhập tên của một vùng chứa Cloud Storage hoặc sử dụng nút Duyệt qua để chọn một vùng chứa.
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 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 của bạn, thay thế [BUCKET_NAME]
bằng tên của nhóm 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 các tệp xuất bằng cách thêm tiền tố tệp sau tên nhóm, 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 một 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ỷ một thao tác.
Xuất các bộ sưu tập cụ thể
Bảng điều khiển Google Cloud
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
Nhấp vào Xuất.
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 thả xuống để chọn một hoặc nhiều nhóm bộ sưu tập.
Bên dưới mục Chọn đích đến, hãy nhập tên của một vùng chứa Cloud Storage hoặc sử dụng nút Duyệt qua để chọn một vùng chứa.
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 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 bộ sưu tập cụ thể, hãy dùng cờ --collection-ids
. Thao tác này chỉ xuất các nhóm bộ sưu tập có mã nhận dạng bộ sưu tập đã cho. Nhóm bộ sưu tập bao gồm tất cả các bộ sưu tập và bộ sưu tập con (ở bất kỳ đường dẫn nào) có mã nhận dạng bộ sưu tập được chỉ định.
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \ --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
để thêm nhiều tập hợp con, chẳng hạn như ratings
, reviews
hoặc outlets
. Để xuất restaurants
và reviews
của một bộ sưu tập cụ thể, lệnh của bạn sẽ có dạng như sau:
gcloud firestore export gs://[BUCKET_NAME] \ --collection-ids=restaurants,reviews \ --database='cymbal'
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 nguyên phút trong vòng 7 ngày qua, nhưng không được sớm hơn earliestVersionTime
. Nếu dữ liệu không còn tồn tại ở dấu thời gian được 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ả các bộ lọc, bao gồm cả việc xuất tất cả tài liệu và xuất các bộ sưu tập cụ thể.
Lưu ý những điểm sau đây 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 ở phút nguyê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 ở dấu thời gian đã chỉ định, thì sẽ xảy ra lỗi. - Bạn sẽ không bị tính phí cho lệnh xuất PITR không thành công.
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 - Chọn một cơ sở dữ liệu trong danh sách cơ sở dữ liệu.
- Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
- Nhấp vào Xuất.
- Đị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 bộ sưu tập cụ thể.
Trong phần Chọn trạng thái cơ sở dữ liệu cần 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 ảnh nhanh để dùng cho việc xuất
- Trong phần Đích đến, hãy nhập tên của một vùng chứa Cloud Storage hoặc dùng nút Duyệt qua để chọn một vùng chứa.
-
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 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
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
thành dấu thời gian khôi phục. Chạy lệnh sau để xuất cơ sở dữ liệu vào nhóm 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 ở độ chi tiết theo phút, ví dụ: 2023-05-26T10:20:00.00Z
.
Thêm cờ --collection-ids
để xuất các bộ sưu tập cụ thể.
Nhập dữ liệu
Sau khi xuất tệp 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. Lưu ý những điểm sau đây về các thao tác 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ác đị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 các định nghĩa chỉ mục.
Thao tác nhập không chỉ định mã nhận dạng tài liệu mới. Tính năng nhập sử dụng các mã đượ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 dành riêng để 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ì thao tác nhập sẽ ghi đè 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 chịu ảnh hưởng của một thao tác nhập, thì tài liệu đó sẽ vẫn nằm trong cơ sở dữ liệu của bạn sau khi nhập.
Các thao tác nhập không kích hoạt Cloud Functions. Trình nghe ảnh chụp nhanh sẽ nhận được thông tin cập nhật liên quan đến các thao tác nhập.
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 các 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
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
Nhấp vào Nhập.
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
trong một thao tác xuất đã hoàn tất. Bạn có thể dùng nút Duyệt qua để chọn tệp.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 bắt đầu thành công, 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 các 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 trong bảng điều khiển Google Cloud:
Sau khi bạn bắt đầu một 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 bộ sưu tập cụ thể
Bảng điều khiển Google Cloud
Bạn không thể chọn các bộ sưu tậ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 bộ sưu tập cụ thể từ một bộ tệp xuất, hãy sử dụng cờ --collection-ids
. Thao tác này chỉ nhập các nhóm tập hợp có mã tập hợp đã cho. Nhóm bộ sưu tập bao gồm tất cả các bộ sưu tập và bộ sưu tập con (ở bất kỳ đường dẫn nào) có mã bộ sưu tập được chỉ định. 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ỉ khi xuất các nhóm bộ sưu tập cụ thể thì bạn mới có thể nhập các nhóm bộ sưu tập cụ thể. Bạn không thể nhập các bộ sưu tập cụ thể từ tệp xuất của tất cả tài liệu.
gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \ --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \ --database=[DATABASE]
Nhập tệp xuất PITR
Hãy 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ó bất kỳ tài liệu nào đã tồn tại trong cơ sở dữ liệu của bạn, 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 một thao tác xuất hoặc nhập, Cloud Firestore sẽ chỉ định cho thao tác đó một tên duy nhất. 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ả các thao tác 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.
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
gcloud
Dùng lệnh operations list
để xem tất cả các thao tác xuất và nhập đang chạy và mới 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 xuất hoặc nhập gần đây trên trang Nhập/Xuất của Google Cloud Console.
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
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ố lượng byte và số lượng 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ể ước tính.workCompleted
cho biết số lượng byte và tài liệu đã xử lý cho đến thời điểm hiện tại. Sau khi thao tác hoàn tất, giá trị này cho biết tổng số byte và tài liệu đã được xử lý thực tế, có thể lớn hơn giá trị củaworkEstimated
.
Chia workCompleted
cho workEstimated
để ước tính tiến trình một cách sơ bộ. Số liệu ướ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 bảng điều khiển Google Cloud.
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
Trong bảng Hoạt động 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ẽ chuyển thành thông báo Đang huỷ rồi chuyển thành Đã huỷ khi thao tác dừng hoàn toàn.
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ỷ thao tác đó. Thao tác xuất bị huỷ sẽ giữ lại các tài liệu đã xuất trong Cloud Storage, còn thao tác nhập bị huỷ sẽ giữ nguyên các nội dung cập nhật đã 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à định 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 thì mới có thể sử dụng dịch vụ xuất và nhập được quản lý.
Các thao tác xuất và nhập được tính phí cho việc đọc và ghi tài liệu theo mức giá được nêu trong phần Cloud Firestore định giá. Các 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. Các 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 được tính vào chi phí lưu trữ dữ liệu Cloud Storage của bạn.
Các thao tác xuất hoặc nhập sẽ không kích hoạt cảnh báo Google Cloudngân sách cho đến khi hoàn tất. Các thao tác xuất và nhập sẽ không ảnh hưởng đến mức sử dụng xuất hiện trong phần mức sử dụng của bảng điều khiển.
Xem chi phí xuất và nhập
Các thao tác xuất và nhập sẽ áp dụng nhãn goog-firestoremanaged:exportimport
cho các thao tác được tính phí. Trên trang Báo cáo thanh toán trên đám mây, bạn có thể sử dụng nhãn này để xem chi phí liên quan đến các hoạt động nhập và xuất:
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. Cloud Firestore các thao tác xuất sẽ tạo ra 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 làm giảm số lượng cột xuống dưới 10.000, bạn có thể tải dữ liệu vào BigQuery, nhưng không thể truy vấn các trường phụ trong các 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 lược đồ BigQuery cho nhóm tập hợp và bạn không thể tải dữ liệu của nhóm tập hợp đó vào BigQuery.
Xuất tệp định dạng và siêu dữ liệu
Đầu ra của một hoạt động xuất được quản lý sẽ 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. Các 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à bộ đệm giao thức và bạn có thể giải mã chúng bằng trình biên dịch giao thức protoc
.
Ví dụ: bạn có thể giải mã một tệp siêu dữ liệu để xác định các nhóm bộ sưu tập mà tệp xuất chứa:
protoc --decode_raw < export0.export_metadata
Di chuyển nhân viên hỗ trợ dịch vụ
Cloud Firestore sử dụng tác nhân dịch vụ Cloud Firestore để uỷ quyền cho 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 các quy ước đặt tên sau:
- Nhân viên hỗ trợ dịch vụ của Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
Trước đây, Cloud Firestore đã 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, thì bạn nên làm theo hướng dẫn trong phần này để di chuyển sang sử dụng tác nhân dịch vụ Cloud Firestore.
- App Engine tài khoản dịch vụ
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. Nhiều dịch vụ dùng chung tài khoản dịch vụ App Engine.
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 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 mình đã sử dụng tác nhân dịch vụ Cloud Firestore hay chưa.
-
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
- Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
-
Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
- Xem tài khoản uỷ quyền bên cạnh nhãn Nhập/Xuất các công việc chạy 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 những kỹ thuật sau:
- Di chuyển dự án bằng cách kiểm tra và cập nhật quyền đối với nhóm Cloud Storage (nên dùng).
- Thêm một quy tắc ràng buộc chính sách trên toàn tổ chức ảnh hưởng đến tất cả các dự án trong tổ chức.
Bạn nên dùng kỹ thuật đầu tiên trong số này vì kỹ thuật này sẽ bản địa hoá phạm vi ảnh hưởng thành một dự án Cloud Firestore duy nhất. Bạn không nên dùng kỹ thuật thứ hai vì kỹ thuật này không di chuyển các quyền hiện có của vùng chứa Cloud Storage. Tuy nhiên, tiện ích này có 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 vùng chứa Cloud Storage
Quá trình di chuyển gồm 2 bước:
- Cập nhật quyền đối với nhóm Cloud Storage. Hãy xem phần sau để biết thông tin chi tiết.
- Xác nhận việc di chuyển sang Cloud Firestore.
Quyền đối với nhóm nhân viên hỗ trợ dịch vụ
Đối với mọi thao tác xuất hoặc nhập dữ liệu sử dụng một vùng chứa Cloud Storage trong một dự án khác, bạn phải cấp cho tác nhân dịch vụ Cloud Firestore các quyền đối với vùng 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 vùng 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 nằm 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 vùng lưu trữ trong cùng một dự án.
Cập nhật quyền cho các vùng 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à ghi cho bộ chứa Cloud Storage. Nếu bạn chỉ cần cấp quyền đọc hoặc chỉ cần cấp 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 những vùng chứa Cloud Storage có thể cần cập nhật quyền.
Di chuyển một dự án sang Firestore Service Agent
Hoàn tất các bước sau để di chuyển từ tài khoản dịch vụ App Engine sang nhân viên hỗ trợ dịch vụ Cloud Firestore. Sau khi hoàn tất, bạn sẽ không thể huỷ quá trình di chuyển.
-
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
- Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
-
Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
-
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 của nhóm. Bước tiếp theo sẽ giúp bạn xác định và khắc phục các lỗi có thể xảy ra về quyền.
Nhấp vào Kiểm tra trạng thái của nhóm.
Một trình đơn sẽ xuất hiện với lựa chọn hoàn tất quá trình di chuyển và danh sách các vùng 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 những nhóm gần đây được dùng trong các thao tác nhập và xuất, nhưng hiện không cấp quyền đọc và ghi cho tác nhân dịch vụ Cloud Firestore.
- Ghi lại tên chính của tác nhân dịch vụ Cloud Firestore của dự án. Tên nhân viên hỗ trợ dịch vụ xuất hiện trong nhãn Nhân viên hỗ trợ dịch vụ được cấp quyền truy cập.
-
Đối với mọi nhóm trong danh sách mà bạn sẽ sử dụng cho các thao tác nhập hoặc xuất sau này, hãy hoàn tất các bước sau:
-
Trong hàng của bảng này, hãy nhấp vào Khắc phục. Thao tác này sẽ mở trang cấp quyền của nhóm đó trong một thẻ mới.
- Nhấp vào Thêm.
- Trong trường Bên giao đại diện mới, hãy nhập tên của tác nhân dịch vụ Cloud Firestore.
- 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.
- Nhấp vào Lưu.
- Quay lại thẻ có trang Cloud Firestore Nhập/Xuất.
- Lặp lại các bước này cho những nhóm khác trong danh sách. Nhớ xem tất cả các trang của danh sách.
-
-
Nhấp vào Di chuyển sang Firestore Service Agent. Nếu vẫn còn các nhóm không kiểm tra được 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 một cảnh 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 sau khi bắt đầu.
Xem trạng thái di chuyển
Cách xác minh trạng thái di chuyển của dự án:
-
Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.
- Chọn cơ sở dữ liệu cần thiết trong danh sách cơ sở dữ liệu.
-
Trong trình đơn điều hướng, hãy nhấp vào Nhập/Xuất.
-
Tìm thực thể chính bên cạnh nhãn Import/Export jobs run as (Chạy các tác vụ Nhập/Xuất dưới dạng).
Nếu 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 sau khi bắt đầu.Nếu dự án chưa được di chuyển, một biểu ngữ sẽ xuất hiện ở đầu trang cùng với nút Kiểm tra trạng thái của nhóm tài nguyên. Xem phần Di chuyển sang tác nhân dịch vụ Firestore để hoàn tất quá trình di chuyển.
Thêm một điều kiện ràng buộc chính sách trên toàn tổ chức
-
Đặt quy tắc ràng buộc sau trong chính sách của tổ chức:
Yêu cầu Nhân viên hỗ trợ dịch vụ Firestore để nhập/xuất (
firestore.requireP4SAforImportExport
).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. Để thiết lập hạn chế này, hãy xem phần Tạo và quản lý chính sách của tổ chức .
Việc áp dụng chế buộc chính sách của tổ chức này không tự động cấp quyền thích hợp cho nhóm Cloud Storage đối với 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 Cloud Storagequyền đối với vùng lưu trữ, bạn có thể bật lại quy tắc hạn chế.