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 xóa 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ỉ các 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 bản 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 cơ sở dữ liệu Cloud Firestore khác. Bạn cũng có thể tải các bản xuất của 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ý của 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

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 thành các tác 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 nhóm Lưu trữ đám mây cho dự án của bạn ở 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 nhóm Người yêu cầu thanh toán cho các hoạt động 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 có các quyền cần thiết. Mặt khác, các vai trò sau sẽ cấp các 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 đại lý dịch vụ

Các hoạt động xuất và nhập sử dụng đại lý dịch vụ Cloud Firestore để ủy quyền cho 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:

Đại lý dịch vụ Cloud Firestore
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com

Để tìm hiểu thêm về đại lý dịch vụ, hãy xem Đại lý dịch vụ .

Tác nhân dịch vụ Cloud Firestore yêu cầu quyền truy cập vào nhóm Cloud Storage được sử dụng trong hoạt động xuất hoặc nhập. Nếu nhóm Cloud Storage của bạn nằm trong cùng 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 nhóm theo mặc định .

Nếu nhóm 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 nhóm Cloud Storage.

Gán vai trò cho đại lý dịch vụ

Bạn có thể sử dụng công cụ dòng lệnh gsutil để gán một trong các vai trò bên dưới. Ví dụ: để gán vai trò Quản trị viên lưu trữ cho tác nhân dịch vụ Cloud Firestore, hãy chạy 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 sử dụng để đặt tên cho đại lý dịch vụ Cloud Firestore của bạn. Để xem tên đại lý dịch vụ, hãy xem Xem tên đại lý dịch vụ .

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

Xem tên đại lý dịch vụ

Bạn có thể xem tài khoản mà hoạt động nhập và xuất của bạn sử dụng để ủy quyền các yêu cầu 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 mình sử dụng tác nhân dịch vụ Cloud Firestore hay tài khoản dịch vụ App Engine cũ.

  1. Xem tài khoản ủy quyền bên cạnh nhãn Nhập/Xuất công việc 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 nhóm Cloud Storage để sử dụng cho hoạt động 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 hoạt động nhập và xuất thông qua Google Cloud Platform 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 các 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 bộ chứa Cloud Storage. Lưu ý rằng việc xuất không phải là ảnh chụp nhanh cơ sở dữ liệu chính xác được thực hiện tại thời điểm bắt đầu xuất. Việ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 đám mây của Google

  1. Trong Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

  3. Trong menu điều hướng, nhấp vào Nhập/Xuất .

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

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

  6. Bên dưới Choose Destination , nhập tên của nhóm Cloud Storage hoặc sử dụng nút Duyệt để chọn nhóm.

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

Bảng điều khiển 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 nhập vào trang nhập và xuất gần đây. Khi thất bại, 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 bộ chứa Cloud Storage của bạn. 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ế như sau:

  • BUCKET_NAME : sắp xếp quá trình xuất của bạn 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ơ 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)' .

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

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

Bảng điều khiển đám mây của Google

  1. Trong Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

  3. Trong menu điều hướng, nhấp vào Nhập/Xuất .

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

  5. Nhấp vào tùy chọn Xuất một hoặc nhiều nhóm bộ sưu tập . Sử dụng menu thả xuống để chọn một hoặc nhiều nhóm bộ sưu tập.

  6. Bên dưới Choose Destination , nhập tên của nhóm Cloud Storage hoặc sử dụng nút Duyệt để chọn nhóm.

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

Bảng điều khiển 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 nhập vào trang nhập và xuất gần đây. Khi thất bại, 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 . Hoạt động chỉ xuất các nhóm bộ sưu tập có ID 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 (tại bất kỳ đường dẫn nào) có ID 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ế bộ sưu tập restaurants trong cơ sở dữ liệu foo để bao gồm nhiều bộ sưu tập con, chẳng hạn như ratings , reviews hoặc outlets . Để xuất bộ sưu tập cụ thể restaurantsreviews , lệnh của bạn trô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à dấu thời gian nguyên một phút trong vòng 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 ở dấu thời gian đã chỉ định thì thao tác xuất không thành công.

Hoạt động xuất PITR hỗ trợ tất cả các bộ lọc, bao gồm 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 theo 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 vùng lưu trữ 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 ở mức độ chi tiết từng phút, ví dụ: 2023-05-26T10:20:00.00Z .

    Lưu ý các điểm sau trước khi xuất dữ liệu PITR:

    • Chỉ định dấu thời gian ở đị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 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 ở dấu thời gian đã chỉ định thì sẽ xảy ra lỗi.
    • Bạn không bị tính phí cho lần xuất 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 lại tài liệu trong các tệp đó vào dự án của mình hoặc sang dự án khác. Lưu ý các đ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 trong cơ sở dữ liệu của bạn. Việc xuất không chứa định nghĩa chỉ mục.

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

  • Nếu 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 của bạn sau khi nhập.

  • Hoạt động nhập không kích hoạt Chức năng đám mây. 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.

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

    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 bản xuất, hãy giữ nguyên tên tệp PARENT_FOLDER_NAME.overall_export_metadata .

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

Bảng điều khiển đám mây của Google

  1. Trong Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

  3. Trong menu điều hướng, nhấp vào Nhập/Xuất .

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

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

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

Bảng điều khiển 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 nhập vào trang nhập và xuất gần đây. Khi thất bại, 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ừ hoạt động xuất trước đó.

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

Thay thế như sau:

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

  • 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í tệp xuất của mình trong trình duyệt Cloud Storage trong Bảng điều khiển Google Cloud Platform:

Mở trình duyệt Lưu trữ đám mây

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

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

Bảng điều khiển đám mây của Google

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 tập hợp tệp xuất, hãy sử dụng cờ --collection-ids . Hoạt động chỉ nhập các nhóm bộ sưu tập có ID 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 (tại bất kỳ đường dẫn nào) có ID 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ỉ xuất các nhóm bộ sưu tập cụ thể mới hỗ trợ 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ừ việc 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 xuất PITR

Sử dụng các bước trong Nhập tất cả tài liệu để nhập cơ sở dữ liệu đã xuất của bạn. Nếu bất kỳ tài liệu nào đã tồn tại trong cơ sở dữ liệu của bạn, nó sẽ bị ghi đè.

Quản lý hoạt động xuất nhập khẩu

Sau khi bạn bắt đầu thao tác xuất hoặc nhập, Cloud Firestore sẽ gán cho thao tác một tên duy nhất. Bạn có thể sử dụng tên thao tác để xóa, hủy hoặc kiểm tra trạng thái thao tác.

Tên hoạt động 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ố khi chỉ định tên thao tác cho các lệnh describe , canceldelete .

Liệt kê tất cả các hoạt động xuất nhập khẩu

Bảng điều khiển đám mây của Google

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

  1. Trong Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

  3. Trong menu điều hướng, nhấp vào Nhập/Xuất .

gcloud

Sử dụng lệnh operations list để xem tất cả các hoạt động xuất và nhập đang chạy và đã 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 đám mây của Google

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

  1. Trong Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

  3. Trong menu điều hướng, 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 hoạt động 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 chạy dài sẽ trả về các chỉ số workEstimatedworkCompleted . Mỗi số liệu này được trả về cả về số byte và số lượng thực thể:

  • workEstimated hiển thị 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 số liệu này nếu không thể ước tính.

  • workCompleted hiển thị số byte và tài liệu được xử lý cho đến nay. Sau khi thao tác hoàn tất, giá trị này hiển thị tổng số 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 theo workEstimated để ước tính tiến độ sơ bộ. Ướ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ì hoãn.

Hủy một thao tác

Bảng điều khiển đám mây của Google

Bạn có thể hủy 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 Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

  3. Trong menu điều hướng, nhấp vào Nhập/Xuất .

Trong bảng xuất và nhập gần đây , các hoạt động hiện đang chạy bao gồm nút Hủy trong cột Đã hoàn thành . Bấm vào nút Hủy để dừng thao tác. Nút này sẽ chuyển thành thông báo Đang hủy rồi chuyển sang Đã hủy 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 hủy bỏ một thao tác đang chạy sẽ không hoàn tác thao tác đó. Thao tác xuất bị hủy sẽ giữ nguyên các tài liệu đã được xuất trong Cloud Storage và thao tác nhập bị hủy 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 bản xuất đã hoàn thành một phần.

Xóa một thao tác

Sử dụng lệnh gcloud firestore operations delete để xóa một hoạt động khỏi danh sách các hoạt động gần đây. Lệnh này sẽ không xóa 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 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 được tính phí cho việc đọc và ghi tài liệu theo mức giá được liệt kê trong giá của Cloud Firestore . Hoạt động xuất phát sinh một thao tác đọc cho mỗi tài liệu được xuất. Hoạt động nhập 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 của bạn.

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

Xem chi phí xuất, nhập

Các hoạt động xuất và nhập áp dụng nhãn goog-firestoremanaged:exportimport cho các hoạt động thanh toán. Trong trang báo cáo Thanh toán trên nền tảng đám mây , bạn có thể sử dụng nhãn này để xem chi phí liên quan đến hoạt động xuất nhập khẩu:

Truy cập nhãn được quản lý bởi goog-firestore từ menu bộ lọc.

Xuất sang BigQuery

Bạn có thể tải dữ liệu từ bản 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ừ xuất khẩu của Cloud Firestore .

Giới hạn cột BigQuery

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

Nếu lược đồ BigQuery của nhóm tập hợp vượt quá 10.000 cột thì hoạt động xuất Cloud Firestore sẽ cố gắng duy trì dưới giới hạn cột bằng cách xử lý các trường bản đồ dưới dạng byte. Nếu chuyển đổi này mang lại số lượng cột 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 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 không tạo ra lược đồ BigQuery cho nhóm bộ sưu tập và bạn không thể tải dữ liệu của nhóm đó vào BigQuery.

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

Đầu ra của quá trình 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 tệp siêu dữ liệu cho từng nhóm bộ sưu tập mà bạn chỉ định. Các tệp siêu dữ liệu thường được đặt 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ã 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 đại lý dịch vụ

Cloud Firestore sử dụng đại lý dịch vụ Cloud Firestore để ủy quyền các hoạt động 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:

Đại lý 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 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, chúng tôi khuyên 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

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

Xem tài khoản ủy quyền

Bạn có thể xem hoạt động nhập và xuất của mình sử dụng tài khoản nào để ủy quyền các yêu cầu 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 mình đã sử dụng tác nhân dịch vụ Cloud Firestore hay chưa.

  1. Trong Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

  4. Xem tài khoản ủy quyền bên cạnh nhãn Nhập/Xuất công việc 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 các kỹ thuật sau:

Kỹ thuật đầu tiên trong số này được ưu tiên hơn vì nó bản địa hóa phạm vi hiệu ứng cho một dự án Cloud Firestore duy nhất. Kỹ thuật thứ hai không được ưa thích vì nó không di chuyển các quyền hiện có của nhóm Cloud Storage. Tuy nhiên, nó cung cấp sự 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 của nhóm Cloud Storage

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

  1. Cập nhật quyền của nhóm Cloud Storage. Xem phần sau để biết chi tiết.
  2. Xác nhận di chuyển đến đại lý dịch vụ Cloud Firestore.

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

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

Nhập và xuất các quy trình làm việc 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 các nhóm trong cùng một dự án.

Cập nhật quyền cho nhóm 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 đại lý dịch vụ. Cấp cho đại lý 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 cần cấp quyền chỉ đọc hoặc chỉ ghi, hãy sử dụng vai trò tùy chỉnh .

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

Di chuyển dự án sang Đại lý 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 đại lý dịch vụ Cloud Firestore. Sau khi hoàn tất, quá trình di chuyển không thể hoàn tác được.

  1. Trong Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

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

    Nhấp vào Kiểm tra trạng thái nhóm .

    Một menu xuất hiện với tùy chọn hoàn tất quá trình di chuyển của bạn và danh sách các nhóm Lưu trữ đám mây. Có thể mất vài phút để tải xong danh sách.

    Danh sách này bao gồm các nhóm gần đây được sử dụng trong hoạt động 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. Hãy lưu ý tên chính của đại lý dịch vụ Cloud Firestore trong dự án của bạn. Tên tác nhân dịch vụ xuất hiện bên dưới Tác nhân 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ẽ sử dụng cho các hoạt động nhập hoặc xuất trong tương lai, hãy hoàn thành các bước sau:

    1. Trong hàng bảng của nhóm này, hãy nhấp vào Sửa . Thao tác này sẽ mở trang quyền của nhóm đó trong tab mới.

    2. Nhấp vào Thêm .
    3. Trong trường Nguyên tắc mới , nhập tên đại lý dịch vụ Cloud Firestore của bạn.
    4. Trong trường Chọn vai trò , chọn Đại lý dịch vụ > Đại lý dịch vụ Firestore .
    5. Nhấp vào để lưu .
    6. Quay lại tab có trang Nhập/Xuất Cloud Firestore.
    7. Lặp lại các bước này cho các nhóm khác trong danh sách. Hãy chắc chắn để xem tất cả các trang của danh sách.
  7. Nhấp chuột Di chuyển sang Đại lý dịch vụ Firestore . Nếu bạn vẫn còn các nhóm không kiểm tra được quyền, bạn cần xác nhận quá trình di chuyển của mình bằng cách nhấp vào Di chuyển .

    Một cảnh báo sẽ thông báo cho bạn khi quá trình di chuyển của bạn hoàn tất. Không thể hoàn tác quá trình di chuyển.

Xem trạng thái di chuyển

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

  1. Trong Google Cloud Platform Console, hãy truy cập trang Cơ sở dữ liệu .

    Đi tới cơ sở dữ liệu

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

  4. Tìm giá trị gốc 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 đã được di chuyển sang đại lý dịch vụ Cloud Firestore. Việc di chuyển không thể hoàn tác được.

    Nếu dự án chưa được di chuyển, một biểu ngữ sẽ xuất hiện ở đầu trang với nút Kiểm tra trạng thái nhóm . Xem Di chuyển sang đại lý dịch vụ Firestore để hoàn tất quá trình di chuyển.

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

  • Đặt ràng buộc sau trong chính sách của tổ chức bạn:

    Yêu cầu Đại lý dịch vụ Firestore để nhập/xuất ( firestore.requireP4SAforImportExport ).

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

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

Nếu ràng buộc tạo ra lỗi về quyền đối với bất kỳ quy trình nhập hoặc xuất nào, bạn có thể vô hiệu hóa quy trình đó để 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 các quyền của nhóm Cloud Storage , bạn có thể bật lại ràng buộc.