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ừ tệp xuất hoặc chỉ các bộ sưu tập cụ thể. Dữ liệu được xuất từ một cơ sở dữ liệu Cloud Firestore có thể được nhập vào một cơ sở dữ liệu khác Cơ sở dữ liệu Cloud Firestore. Bạn cũng có thể tải Dữ liệu xuất trên Cloud Firestore sang BigQuery.

Trang này mô tả cách xuất và nhập tài liệu trên Cloud Firestore bằng dịch vụ xuất và nhập được quản lý cùng 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 đượ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 của bạn trên Google Cloud. 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 dành 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 để Cloud Firestore và Cloud Storage. Nếu bạn là chủ sở hữu dự án, tài khoản của bạn 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ụ của Cloud Firestore để uỷ quyền cho các hoạt động của Cloud Storage. Nhân viên hỗ trợ dịch vụ của 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ụ của Cloud Firestore yêu cầu quyền truy cập vào Bộ chứa trong Cloud Storage 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ụ của 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 thông qua Bảng điều khiển GCP.

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 Platform. Bạn cũng có thể xem liệu cơ sở dữ liệu của bạn có sử dụng Cloud Firestore hay không 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 Các công việc Nhập/Xuất chạy dưới dạng nhãn.

Tác nhân dịch vụ cần có 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 Platform 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 Bộ chứa Cloud Storage. Lưu ý rằng dữ liệu xuất không phải là toàn bộ ảnh chụp nhanh của cơ sở dữ liệu 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 Platform, 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 trong 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ở về 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

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 các tệp 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 báo cáo 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ừ đó các 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 Platform, 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 trong 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ở về 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

Để 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 bộ sưu tập restaurantsreviews 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 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 sang 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 tiêu chuẩn RFC 3339 định dạng. 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 tài liệu trong các tệp trở lại dự án của bạn 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. Dữ liệu 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 tài liệu đang được nhập, ID 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 Bảng điều khiển Google Cloud Platform, 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 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ẽ trở về 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 Platform:

Mở trình duyệt Cloud Storage

Khi bạn bắt đầu một thao tác nhập, việc đóng cửa sổ dòng lệnh sẽ không huỷ hãy xem 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 dùng --database='(default)'.

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

  1. Trong Bảng điều khiển Google Cloud Platform, 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 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 thao tác xuất hoặc nhập gần đây trong Trang Nhập/Xuất của Bảng điều khiển Google Cloud Platform.

  1. Trong Bảng điều khiển Google Cloud Platform, 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

Dùng lệnh operations describe để hiện trạng thái 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 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 độ. Chiến dịch này ước tính có thể không chính xác vì phụ thuộc vào các thống kê bị trễ bộ sưu tập.

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 Platform.

  1. Trong Bảng điều khiển Google Cloud Platform, 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.

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 Cancel (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

Dùng lệnh operations cancel để dừng một thao tác đang thực hiện:

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 một tệp dữ liệu xuất đã hoàn tất một phần.

Xoá thao tác

Dùng lệnh gcloud firestore operations delete để xoá một thao tác từ danh sách các hoạt động 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 của mình trên Google Cloud 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á của 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. Thao tác nhập phải chịu một thao tác ghi mỗi đã nhập tài liệu.

Các tệp đầu ra được lưu trữ trên Cloud Storage sẽ được tính vào Chi phí lưu trữ dữ liệu trong 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 về 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 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 xuất nhập khẩu:

Truy cập vào nhãn goog-firestoremanage trên trình đơn bộ lọc.

Xuất sang BigQuery

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

Giới hạn cột BigQuery

BigQuery yêu cầu giới hạn 10.000 cột cho mỗi bảng. Hoạt động xuất dữ liệu trên Cloud Firestore 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, Thao tác xuất dữ liệu trên Cloud Firestore cố gắng không vượt quá giới hạn về 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 mình vào BigQuery.

Xuất các tệp siêu dữ liệu và định dạng

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 tên 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 một tác nhân dịch vụ Cloud Firestore để cho phép 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ì nhân viên hỗ trợ 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, chúng tôi 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.

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

Tác nhân dịch vụ của Cloud Firestore được ưu tiên hơn vì có tính cụ thể lên Cloud Firestore. Tài khoản dịch vụ App Engine đã được chia sẻ thông qua nhiều dịch vụ.

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 Platform. 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 Platform, 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ụ của Cloud Firestore, bạn có thể di chuyển sang tác nhân dịch vụ của 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 đơn lẻ. Kỹ thuật thứ hai không được ưu tiên vì chế độ này 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 bộ chứa trong Cloud Storage

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

  1. Cập nhật các quyền của bộ chứa trong Cloud Storage. Hãy xem phần sau để biết chi tiết.
  2. Xác nhận việc di chuyển sang tác nhân dịch vụ của 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ụ của 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 vận hành được sau khi di chuyển sang dịch vụ Cloud Firestore nhân viên hỗ trợ.

Quy trình làm việc nhập và xuất nằm trong cùng một dự án không cần các thay đổi về 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 các bộ chứa trong Cloud Storage từ 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 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 bộ chứa có thể yêu cầu cập nhật quyền.

Di chuyển dự án sang Firestore Service Agent

Hoàn thành 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ụ của 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 Bảng điều khiển Google Cloud Platform, 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. Nếu dự án của bạn chưa di chuyển sang 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 có thể xảy ra 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 trong Cloud Storage. Quá trình này có thể mất vài phút để hoàn tất việc tải danh sách.

    Danh sách này bao gồm những nhóm gần đây được sử dụng trong thao tác nhập và xuất, nhưng hiện không cung cấp tính năng đọ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 Cloud Firestore trong dự án của bạn nhân viên hỗ trợ dịch vụ. Tên nhân viên hỗ trợ dịch vụ sẽ xuất hiện trong Nhân viên hỗ trợ dịch vụ cấp quyền truy cập vào nhãn.
  6. Đối với bất kỳ nhóm nào trong danh sách mà bạn để sử dụng cho các thao tác nhập hoặc xuất trong tương lai, hãy hoàn thành các bước sau các bước:

    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 Nhân viên hỗ trợ dịch vụ > Nhân viên hỗ trợ dịch vụ của Firestore.
    5. Nhấp vào Lưu.
    6. Quay lại thẻ có trang Nhập/Xuất trong Cloud Firestore.
    7. Lặp lại các bước này cho những 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 Nhân viên hỗ trợ dịch vụ của Firestore. Nếu bạn vẫn còn một số nhóm không được kiểm tra quyền, bạn cần xác nhận quá trình 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. Không thể di chuyển chưa hoàn tác.

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 Platform, 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 sẽ không thể huỷ quá trình di chuyển sau khi thực hiện.

    Nếu dự án chưa được di chuyển, thì một biểu ngữ sẽ xuất hiện ở đầu trang bằng nút Kiểm tra trạng thái bộ chứa. Xem Di chuyển sang nhân viên hỗ trợ dịch vụ của 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 đây 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 Nhân viên hỗ trợ 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 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 đó.