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 sau khi vô tình xoá dữ liệu và để xuất dữ liệu để xem khi không có mạng đang xử lý. Bạn có thể xuất tất cả tài liệu hoặc chỉ 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 một số 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 Xuất Cloud Firestore sang BigQuery.

Trang này mô tả cách xuất và nhập Cloud Firestore tài liệu bằng dịch vụ xuất và nhập được quản lý và Cloud Storage. Chiến lược phát hành đĩa đơn Dịch vụ xuất và nhập được quản lý của Cloud Firestore hiện được cung cấp qua gcloud công cụ dòng lệnh và Cloud Firestore API (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 nhiệm vụ sau:

  1. Bật cho dự án Google Cloud của bạn. Chỉ có Google Cloud các dự án đã bật tính năng thanh toán 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 của bạn vị trí cơ sở dữ liệu Cloud Firestore. Bạn không thể sử dụng Người yêu cầu thanh toán vào bộ chứa cho hoạt động xuất và nhập.
  3. Đảm bảo rằng tài khoản của bạn có các quyền cần thiết cho Cloud FirestoreCloud 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, như sau vai trò cấp các quyền cần thiết để thực hiện hoạt động xuất và nhập khẩu và để truy cập vào Cloud Storage:

Quyền của tác nhân dịch vụ

Các hoạt động xuất và nhập sử dụng tác nhân dịch vụ Cloud Firestore để uỷ quyền các thao tác Cloud Storage. Nhân viên hỗ trợ 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ề nhân viên hỗ trợ dịch vụ, hãy xem Nhân viên hỗ trợ dịch vụ.

Tác nhân dịch vụ Cloud Firestore yêu cầu quyền truy cập vào Cloud Storage bộ chứa đượ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 dự án với Cloud Firestore của bạn cơ sở dữ liệu 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ụ của Cloud Firestore quyền truy cập vào Cloud Storage bộ chứa.

Chỉ định vai trò cho nhân viên hỗ trợ dịch vụ

Bạn có thể sử dụng công cụ dòng lệnh YT để hãy 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ớ đối với 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. được dùng để đặt tên cho nhân viên hỗ trợ 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 hoạt động nhập và xuất của bạn sử dụng để cấp phép từ 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 bạn có sử dụng Cloud Firestore tác nhân dịch vụ hoặc tài khoản dịch vụ App Engine cũ.

  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 vai trò Storage Admin đối với Cloud Storage bộ chứa đượ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 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:

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 sang một tập hợp các tệp trong một Cloud Storage bộ chứa. 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. Dữ liệu xuất có thể bao gồm những thay đổi được thực hiện trong khi hoạt động đang chạy.

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

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

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

    Chuyển đến trang 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 Export entire database (Xuất toàn bộ cơ sở dữ liệu).

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

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

Bảng điều khiển sẽ trở lại trang Nhập/Xuất. Nếu thao tác bắt đầu thành công, trang này sẽ thêm một mục nhập 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

Hãy dùng lệnh firestore export để xuất tất cả cá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ế đoạn mã 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 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 dùng --database='(default)'.

Khi bạn bắt đầu thao tác xuất, việc đóng cửa sổ dòng lệnh sẽ không huỷ hãy xem huỷ thao tác.

Xuất bộ sưu tập cụ thể

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

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

    Chuyển đến trang 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 thả xuống để chọn một hoặc nhiều nhóm bộ sưu tập.

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

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

Bảng điều khiển sẽ trở lại trang Nhập/Xuất. Nếu thao tác bắt đầu thành công, trang này sẽ thêm một mục nhập 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 sử dụng Cờ --collection-ids. Chỉ xuất thao tác các nhóm bộ sưu tập có mã 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à tập hợp con (tại bất kỳ đường dẫn nào) có các giá trị được chỉ định mã bộ sưu tập.

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 để đưa vào nhiều tập hợp con, chẳng hạn như ratings, reviews hoặc outlets. Để xuất một bộ sưu tập cụ thể restaurantsreviews, 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 của mình sang Cloud Storage từ dữ liệu PITR bằng lệnh gcloud firestore export. Bạn có thể xuất dữ liệu PITR, trong đó dấu thời gian là cả một phút bên trong 7 ngày qua, nhưng không sớm hơn earliestVersionTime. Nếu dữ liệu không còn nữa tồn tại tại dấu thời gian đã chỉ định, thì thao tác xuất 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ể.

  1. Xuất cơ sở dữ liệu, chỉ định tham số snapshot-time cho dấu thời gian khôi phục mong muốn.

    gcloud

    Chạy lệnh sau để xuất cơ sở dữ liệu vào bộ chứa của bạn.

    gcloud firestore export gs://[BUCKET_NAME_PATH] \
        --snapshot-time=[PITR_TIMESTAMP] \
        --collection-ids=[COLLECTION_IDS] \
        --namespace-ids=[NAMESPACE_IDS]
    

    Ở đâu,

    • PITR_TIMESTAMP – dấu thời gian PITR ở độ chi tiết tính bằng phút, ví dụ: 2023-05-26T10:20:00.00Z.

    Vui lòng 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ụ: 2020-09-01T23:59:30.234233Z.
    • Đảm bảo rằng dấu thời gian bạn chỉ định là dấu thời gian nguyên phút 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 thời điểm dấu thời gian thì sẽ có một lỗi được tạo.
    • Bạn không bị tính phí cho yêu cầu xuất tệp PITR không thành công.

Nhập dữ liệu

Sau khi xuất tệp trong Cloud Storage, bạn có thể nhập các 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 về thao tác nhập:

  • Khi bạn nhập dữ liệu, chỉ mục bắt buộc được cập nhật bằng cách sử dụng định nghĩa chỉ mục hiện tại. 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. Các lệnh nhập sử dụng mã nhận dạng được thu thập tại thời điểm xuất. Khi một tài liệu đang được nhập, mã của tài liệu đó sẽ được giữ lại để ngăn chặn xung đột mã nhận dạng. Nếu tài liệu có cùng ID đã tồn tại, 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 việc nhập, tài liệu đó sẽ vẫn trong cơ sở dữ liệu của mình sau khi nhập.

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

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

    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ữ lại Tên tệp PARENT_FOLDER_NAME.overall_export_metadata là .

Nhập tất cả tài liệu 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 trang 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 .overall_export_metadata trong một thao tác xuất đã hoàn tất. Bạn có thể hãy 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 bắt đầu thành công, trang này sẽ thêm một mục nhập vào trang nhập và xuất gần đây. Khi không thành công, thì trang hiển thị một thông báo lỗi.

gcloud

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

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

Thay thế đoạn mã 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 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:

Mở trình duyệt Cloud Storage

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 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 tập hợp các tệp xuất, hãy sử dụng Cờ --collection-ids. Thao tác nhập chỉ những nhóm bộ sưu tập có mã bộ sưu tập đã cho. Bộ sưu tập nhóm bao gồm tất cả các bộ sưu tập và tập hợp con (tại bất kỳ đường dẫn nào) có các giá trị mã bộ sưu tập được chỉ định. Chỉ định tên cơ sở dữ liệu bằng --database cờ. Đối với cơ sở dữ liệu mặc định, hãy sử dụng --database='(default)'.

Chỉ việc xuất các nhóm bộ sưu tập cụ thể mới hỗ trợ việc 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 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

Làm theo các bước trong bài viết Nhập tất cả các tài liệu để nhập những tài liệu mà bạn đã xuất cơ sở dữ liệu. Nếu đã có bất kỳ tài liệu nào trong cơ sở dữ liệu của bạn, 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ẽ gán tên riêng 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 hoạt động.

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ỏ tiền tố này khi chỉ định tên thao tác cho lệnh describe, canceldelete.

Liệt kê tất 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 hoạt động xuất và nhập gần đây trong Trang Nhập/Xuất của 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 trang 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 mục đang chạy và các thao tác xuất và nhập đã hoàn thành gần đây:

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 trong trang Nhập/Xuất của Google Cloud Console.

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

    Chuyển đến trang 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 thị 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 hoạt động lâu dài sẽ trả về các chỉ số workEstimatedworkCompleted. Mỗi chỉ số này được trả về trong cả số byte và số lượng thực thể:

  • workEstimated hiển thị tổng số byte ước tính và số tài liệu sẽ xử lý. Cloud Firestore có thể bỏ qua chỉ số này nếu chỉ số này không thể ước tính.

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

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

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 trong trang Nhập/Xuất của bảng điều khiển Google Cloud.

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

    Chuyển đế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 Nhập và xuất gần đây, hiện đang chạy các thao tác bao gồm nút Cancel (Huỷ) trong cột Finish (Đã 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 Huỷ rồi thành Đã huỷ khi thao tác ngừ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 đó. Một lệnh xuất dữ liệu đã bị huỷ thao tác này sẽ khiến tài liệu đã được xuất trong Cloud Storage và tài liệu bị huỷ thao tác nhập sẽ giữ lại các nội dung cập nhật đã được thực hiện đối với cơ sở dữ liệu của bạn. Bạn không thể nhập tệp xuất chưa hoàn tất.

Xoá thao tác

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

gcloud firestore operations delete [OPERATION_NAME]

Lập hoá đơn và định giá cho hoạt động xuất và nhập khẩu

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

Hoạt động xuất và nhập khẩu có tính phí đối với số lượt đọc và ghi tài liệu ở mức giá nêu trong Giá Cloud Firestore. Thao tác xuất phải chịu một lần đọc thao tác trên mỗi tài liệu được xuất. Mỗi thao tác nhập sẽ thực hiện 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.

Các chi phí cho hoạt động xuất và nhập không được tính vào chi tiêu của bạn tối đa. Thao tác xuất hoặc nhập sẽ không kích hoạt Thông báo ngân sách Google Cloud cho đến khi hoàn tất. Tương tự, các lượt đọc và ghi được thực hiện trong thao tác xuất hoặc nhập sẽ được áp dụng cho hạn mức hằng ngày của bạn sau 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 được trình bày trong phần sử dụng trên bảng điều khiển.

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

Thao tác xuất và nhập sẽ áp dụng goog-firestoremanaged:exportimport cho các hoạt động đã lập hoá đơn. Trên trang Báo cáo của 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 vào nhãn goog-firestoremanaged từ 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 Đang tải dữ liệu từ Cloud Firestore tệp xuất.

Giới hạn cột BigQuery

BigQuery áp dụng giới hạn 10.000 cột cho mỗi bảng. Cloud Firestore hoạt động xuất sẽ tạo một bảng BigQuery giản đồ cho mỗi nhóm bộ sưu tập. Trong giản đồ này, mỗi tên trường duy nhất trong nhóm bộ sưu tập sẽ trở thành cột giản đồ.

Nếu giản đồ BigQuery của nhóm bộ sưu tập vượt quá 10.000 cột, thì giá trị Cloud Firestore thao tác xuất cố gắng không vượt quá 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 mang lại dưới 10.000 cột, bạn có thể tải dữ liệu BigQuery, nhưng bạn không thể truy vấn các trường phụ trong các trường liên kết. 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 một giản đồ BigQuery cho nhóm bộ sưu tập và bạn không thể tải dữ liệu của trình duyệt đó vào BigQuery.

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

Dữ liệu đầu ra của dữ liệu 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 từng nhóm bộ sưu tậ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.

Tệp siêu dữ liệu là vùng đệ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 các 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 để 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 đây:

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

Cloud Firestore từng sử dụng dịch vụ mặc định của 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.

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

Tác nhân dịch vụ Cloud Firestore được ưu tiên hơn vì tác nhân này cụ thể thành Cloud Firestore. Tài khoản dịch vụ App Engine được nhiều dịch vụ chia sẻ.

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

Bạn có thể xem hoạt động nhập và xuất của bạn sử dụng tài khoản nào để cấp phép từ trang Nhập/Xuất trong bảng điều khiển Google Cloud. Bạn cũng có thể khung hiển thị nếu cơ sở dữ liệu của bạn đã sử dụng Cloud Firestore nhân viên hỗ trợ dịch vụ.

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

    Chuyển đến trang 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 Các công việc Nhập/Xuất chạy dưới dạng nhãn.

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:

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

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

Quá trình di chuyển có hai bước:

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

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

Đối với mọi thao tác 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 cho tác nhân dịch vụ Cloud Firestore quyền cho nhóm đó. Ví dụ: những thao tác di chuyển dữ liệu sang một thao tác khác dự án cần truy cập vào một bộ chứa trong dự án khác đó. Nếu không, đây là không thực hiện được hoạt động sau khi di chuyển sang dịch vụ Cloud Firestore nhân viên hỗ trợ.

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. Nhân viên hỗ trợ dịch vụ của Cloud Firestore có thể truy cập trong cùng một dự án theo mặc định.

Cập nhật quyền cho Cloud Storage bộ chứa trong các dự án khác để cấp quyền truy cập vào service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com nhân viên hỗ trợ dịch vụ. 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 một bộ chứa Cloud Storage. Nếu bạn chỉ cần cấp quyền đọc hoặc chỉ ghi hãy sử dụng vai trò tuỳ chỉnh.

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

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

Hoàn tất các bước sau để di chuyển từ tài khoản dịch vụ App Engine sang trình cung cấp dịch vụ Cloud Firestore. Sau khi hoàn tất, bạn sẽ không thể di chuyển chưa hoàn tác.

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

    Chuyển đến trang 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à một nút Check Bucket Status (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 Kiểm tra trạng thái bộ chứa.

    Một trình đơn sẽ xuất hiện với tuỳ chọn để hoàn tất quá trình di chuyển của bạn và danh sách 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 gần đây được sử 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.

  5. 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ấ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 trong bảng củ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 New principals (Người dùng chính mới), hãy nhập tên của Nhân viên hỗ trợ dịch vụ của Cloud Firestore.
    4. Trong trường Chọn vai trò, hãy chọn Trình tác nhân dịch vụ > Trình 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. Đảm bảo bạn xem tất cả các trang trong danh sách.
  7. Nhấp vào Di chuyển sang Trình đại diện dịch vụ Firestore. Nếu vẫn còn các bộ chứa 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.

    Một thông báo sẽ cho bạn biết khi nào quá trình di chuyển hoàn tất. Bạn không thể huỷ quá 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 bảng điều khiển Google Cloud, hãy chuyển đến trang Cơ sở dữ liệu.

    Chuyển đến trang 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 hiệu ứng chính bên cạnh nhãn Công việc nhập/xuất chạy dưới dạng.

    Nếu hiệu trưởng là service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com, thì dự án của bạn đã di chuyển sang Cloud Firestore nhân viên hỗ trợ dịch vụ. Bạn không thể huỷ quá 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 cùng với nút Check Bucket Status (Kiểm tra trạng thái bộ chứa). Hãy 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 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 trong chính sách của tổ chức:

    Cần có 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 để sử dụng Tác nhân dịch vụ của Cloud Firestore để cho phép các yêu cầu. Để đặt hạn chế này, hãy xem Tạo và quản lý các chính sách của tổ chức .

Việc áp dụng quy tắc ràng buộc trong chính sách tổ chức này sẽ không tự động cấp quyền quyền truy cập thích hợp vào bộ chứa Cloud Storage cho Nhân viên hỗ trợ dịch vụ của Cloud Firestore.

Nếu quy tắc ràng buộc tạo 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 tính năng đó để quay lại sử dụng tài khoản dịch vụ mặc định. Sau khi bạn kiểm tra và cập nhật bộ chứa Cloud Storage , bạn có thể bật lại quy tắc ràng buộc đó.