ส่งออกและนำเข้าข้อมูล

คุณสามารถใช้บริการส่งออกและนำเข้าที่มีการจัดการของ Cloud Firestore เพื่อกู้คืนจากการลบข้อมูลโดยไม่ตั้งใจ และส่งออกข้อมูลสำหรับการประมวลผลออฟไลน์ คุณสามารถส่งออกเอกสารทั้งหมดหรือเฉพาะคอลเลกชันที่เฉพาะเจาะจงได้ ในทำนองเดียวกัน คุณสามารถนำเข้าข้อมูลทั้งหมดจากการส่งออกหรือเฉพาะคอลเลกชันที่เฉพาะเจาะจงได้ ข้อมูลที่ส่งออกจากฐานข้อมูล Cloud Firestore หนึ่งสามารถนำเข้าไปยังฐานข้อมูล Cloud Firestore อื่นได้ คุณยัง โหลดการส่งออก Cloud Firestore ลงใน BigQuery ได้อีกด้วย

หน้านี้อธิบายวิธีการส่งออกและนำเข้าเอกสาร Cloud Firestore โดยใช้บริการส่งออกและนำเข้าที่มีการจัดการและ Cloud Storage บริการส่งออกและนำเข้าที่มีการจัดการของ Cloud Firestore พร้อมใช้งานผ่านเครื่องมือบรรทัดคำสั่ง gcloud และ Cloud Firestore API ( REST , RPC )

ก่อนที่คุณจะเริ่ม

ก่อนที่คุณจะสามารถใช้บริการส่งออกและนำเข้าที่มีการจัดการ คุณต้องทำงานต่อไปนี้:

  1. เปิดใช้การเรียกเก็บเงินสำหรับโครงการ Google Cloud ของคุณ เฉพาะโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินเท่านั้นที่ใช้ฟังก์ชันการส่งออกและนำเข้าได้
  2. สร้างที่เก็บข้อมูล Cloud Storage สำหรับโปรเจ็กต์ของคุณ ในตำแหน่งใกล้กับ ตำแหน่งฐานข้อมูล Cloud Firestore ของคุณ คุณไม่สามารถใช้ที่เก็บข้อมูล Requester Pays สำหรับการดำเนินการส่งออกและนำเข้า
  3. ตรวจสอบให้แน่ใจว่าบัญชีของคุณมีสิทธิ์ที่จำเป็นสำหรับ Cloud Firestore และ Cloud Storage หากคุณเป็นเจ้าของโครงการ บัญชีของคุณมีสิทธิ์ที่จำเป็น มิฉะนั้น บทบาทต่อไปนี้จะให้สิทธิ์ที่จำเป็นสำหรับการดำเนินการส่งออกและนำเข้า และสำหรับการเข้าถึง Cloud Storage:

    • บทบาท Cloud Firestore: Owner , Cloud Datastore Owner หรือ Cloud Datastore Import Export Admin
    • บทบาท Cloud Storage: Owner หรือ Storage Admin

สิทธิ์ตัวแทนบริการ

การดำเนินการส่งออกและนำเข้าใช้ตัวแทนบริการ Cloud Firestore เพื่อให้สิทธิ์การดำเนินการ Cloud Storage Agent บริการ Cloud Firestore ใช้หลักการตั้งชื่อต่อไปนี้:

ตัวแทนบริการ Cloud Firestore
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตัวแทนบริการ โปรดดูที่ ตัวแทนบริการ

Agent บริการ Cloud Firestore จำเป็นต้องเข้าถึงที่เก็บข้อมูล Cloud Storage ที่ใช้ในการส่งออกหรือนำเข้า หากที่เก็บข้อมูล Cloud Storage ของคุณอยู่ในโปรเจ็กต์เดียวกับฐานข้อมูล Cloud Firestore ตัวแทนบริการ Cloud Firestore จะสามารถเข้าถึงที่เก็บข้อมูลตามค่าเริ่มต้น

หากที่เก็บข้อมูล Cloud Storage อยู่ในโปรเจ็กต์อื่น คุณต้องให้สิทธิ์ตัวแทนบริการ Cloud Firestore เข้าถึงที่เก็บข้อมูล Cloud Storage

กำหนดบทบาทให้กับตัวแทนบริการ

คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง gsutil เพื่อกำหนดบทบาทใดบทบาทหนึ่งด้านล่างนี้ได้ ตัวอย่างเช่น หากต้องการกำหนดบทบาทผู้ดูแลระบบพื้นที่เก็บข้อมูลให้กับตัวแทนบริการ Cloud Firestore ให้รันสิ่งต่อไปนี้:

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

แทนที่ PROJECT_NUMBER ด้วยหมายเลขโปรเจ็กต์ของคุณ ซึ่งใช้เพื่อตั้งชื่อตัวแทนบริการ Cloud Firestore ของคุณ หากต้องการดูชื่อตัวแทนบริการ โปรดดู ดูชื่อตัวแทนบริการ

หรือคุณสามารถ มอบหมายบทบาทนี้โดยใช้คอนโซล GCP

ดูชื่อตัวแทนบริการ

คุณสามารถดูบัญชีที่การดำเนินการนำเข้าและส่งออกของคุณใช้ในการอนุญาตคำขอได้จากหน้า นำเข้า/ส่งออก ในคอนโซล Google Cloud Platform คุณยังดูได้ว่าฐานข้อมูลของคุณใช้ตัวแทนบริการ Cloud Firestore หรือบัญชีบริการ App Engine เดิมหรือไม่

  1. ดูบัญชีการอนุญาตถัดจาก งานนำเข้า/ส่งออกที่ทำงานเป็น ป้ายกำกับ

ตัวแทนบริการต้องการบทบาท Storage Admin สำหรับที่เก็บข้อมูล Cloud Storage เพื่อใช้สำหรับการดำเนินการส่งออกหรือนำเข้า

ตั้งค่า gcloud สำหรับโปรเจ็กต์ของคุณ

คุณสามารถเริ่มต้นการดำเนินการนำเข้าและส่งออกผ่านคอนโซล Google Cloud Platform หรือเครื่องมือบรรทัดคำสั่ง gcloud หากต้องการใช้ gcloud ให้ตั้งค่าเครื่องมือบรรทัดคำสั่งและเชื่อมต่อกับโปรเจ็กต์ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

ส่งออกข้อมูล

การดำเนินการส่งออกจะคัดลอกเอกสารในฐานข้อมูลของคุณไปยังชุดไฟล์ในที่เก็บข้อมูล Cloud Storage โปรดทราบว่าการส่งออกไม่ใช่สแนปชอตฐานข้อมูลที่แน่นอนที่ถ่าย ณ เวลาเริ่มต้นการส่งออก การส่งออกอาจรวมถึงการเปลี่ยนแปลงที่ทำในขณะที่การดำเนินการกำลังทำงานอยู่

ส่งออกเอกสารทั้งหมด

Google คลาวด์คอนโซล

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

  4. คลิก ส่งออก

  5. คลิกตัวเลือก ส่งออกฐานข้อมูลทั้งหมด

  6. ด้านล่าง เลือกปลายทาง ป้อนชื่อที่เก็บข้อมูล Cloud Storage หรือใช้ปุ่ม เรียกดู เพื่อเลือกที่เก็บข้อมูล

  7. คลิก ส่งออก

คอนโซลจะกลับไปที่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นได้สำเร็จ เพจจะเพิ่มรายการลงในเพจการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว เพจจะแสดงข้อความแสดงข้อผิดพลาด

gcloud

ใช้คำสั่ง firestore export เพื่อส่งออกเอกสารทั้งหมดในฐานข้อมูลของคุณ โดยแทนที่ [BUCKET_NAME] ด้วยชื่อของที่เก็บข้อมูล Cloud Storage ของคุณ เพิ่มแฟล็ก --async เพื่อป้องกันไม่ให้เครื่องมือ gcloud รอให้การดำเนินการเสร็จสิ้น

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

แทนที่สิ่งต่อไปนี้:

  • BUCKET_NAME : จัดระเบียบการส่งออกของคุณโดยเพิ่มคำนำหน้าไฟล์หลังชื่อที่เก็บข้อมูล เช่น BUCKET_NAME/my-exports-folder/export-name หากคุณไม่ได้ระบุคำนำหน้าไฟล์ บริการส่งออกที่มีการจัดการจะสร้างคำนำหน้าตามการประทับเวลาปัจจุบัน

  • DATABASE : ชื่อของฐานข้อมูลที่คุณต้องการส่งออกเอกสาร สำหรับฐานข้อมูลดีฟอลต์ ให้ใช้ --database='(default)'

เมื่อคุณเริ่มดำเนินการส่งออก การปิดเทอร์มินัลจะไม่ยกเลิกการดำเนินการ โปรดดู ที่ ยกเลิกการดำเนินการ

ส่งออกคอลเลกชันเฉพาะ

Google คลาวด์คอนโซล

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

  4. คลิก ส่งออก

  5. คลิกตัวเลือก ส่งออกกลุ่มคอลเลกชันตั้งแต่หนึ่งกลุ่มขึ้นไป ใช้เมนูแบบเลื่อนลงเพื่อเลือกกลุ่มคอลเลกชันตั้งแต่หนึ่งกลุ่มขึ้นไป

  6. ด้านล่าง เลือกปลายทาง ป้อนชื่อที่เก็บข้อมูล Cloud Storage หรือใช้ปุ่ม เรียกดู เพื่อเลือกที่เก็บข้อมูล

  7. คลิก ส่งออก

คอนโซลจะกลับไปที่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นได้สำเร็จ เพจจะเพิ่มรายการลงในเพจการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว เพจจะแสดงข้อความแสดงข้อผิดพลาด

gcloud

หากต้องการส่งออกกลุ่มคอลเลกชันเฉพาะ ให้ใช้แฟล็ก --collection-ids การดำเนินการส่งออกเฉพาะกลุ่มคอลเลกชันที่มีรหัสคอลเลกชันที่กำหนด กลุ่มคอลเลกชันประกอบด้วยคอลเลกชันและคอลเลกชันย่อยทั้งหมด (ในเส้นทางใดก็ได้) พร้อมด้วยรหัสคอลเลกชันที่ระบุ

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
--database=[DATABASE]

ตัวอย่างเช่น คุณสามารถออกแบบคอลเลกชัน restaurants ในฐานข้อมูล foo เพื่อรวมคอลเลกชันย่อยหลายรายการ เช่น ratings reviews หรือ outlets หากต้องการส่ง restaurants และ reviews คอลเลกชันที่เฉพาะเจาะจง คำสั่งของคุณจะเป็นดังนี้:

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

ส่งออกจากการประทับเวลา PITR

คุณส่งออกฐานข้อมูลไปยัง Cloud Storage จาก ข้อมูล PITR ได้โดยใช้คำสั่ง gcloud firestore export คุณสามารถส่งออกข้อมูล PITR โดยที่การประทับเวลาเป็นการประทับเวลาแบบนาทีทั้งหมดภายในเจ็ดวันที่ผ่านมา แต่ไม่เร็วกว่า earliestVersionTime หากไม่มีข้อมูลในเวลาประทับที่ระบุ การดำเนินการส่งออกจะล้มเหลว

การดำเนินการส่งออก PITR รองรับตัวกรองทั้งหมด รวมถึงการส่งออกเอกสารทั้งหมดและการส่งออกคอลเลกชันเฉพาะ

  1. ส่งออกฐานข้อมูล โดยระบุพารามิเตอร์ snapshot-time ไปยังการประทับเวลาการกู้คืนที่ต้องการ

    gcloud

    เรียกใช้คำสั่งต่อไปนี้เพื่อส่งออกฐานข้อมูลไปยังบัคเก็ตของคุณ

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

    ที่ไหน,

    • PITR_TIMESTAMP - การประทับเวลา PITR ที่รายละเอียดเป็นนาที เช่น 2023-05-26T10:20:00.00Z

    โปรดสังเกตประเด็นต่อไปนี้ก่อนที่จะส่งออกข้อมูล PITR:

    • ระบุการประทับเวลาใน รูปแบบ RFC 3339 เช่น 2020-09-01T23:59:30.234233Z
    • ตรวจสอบให้แน่ใจว่าการประทับเวลาที่คุณระบุเป็นการประทับเวลาทั้งนาทีภายในเจ็ดวันที่ผ่านมา แต่ไม่เร็วกว่า earliestVersionTime หากไม่มีข้อมูลในเวลาประทับที่ระบุอีกต่อไป จะเกิดข้อผิดพลาดขึ้น
    • คุณจะไม่ถูกเรียกเก็บเงินสำหรับการส่งออก PITR ที่ล้มเหลว

นำเข้าข้อมูล

เมื่อคุณส่งออกไฟล์ใน Cloud Storage แล้ว คุณจะนำเข้าเอกสารในไฟล์เหล่านั้นกลับเข้าสู่โปรเจ็กต์ของคุณหรือไปยังโปรเจ็กต์อื่นได้ โปรดสังเกตประเด็นต่อไปนี้เกี่ยวกับการดำเนินการนำเข้า:

  • เมื่อคุณนำเข้าข้อมูล ดัชนีที่จำเป็นจะได้รับการอัปเดตโดยใช้คำจำกัดความดัชนีปัจจุบันของฐานข้อมูลของคุณ การส่งออกไม่มีคำจำกัดความของดัชนี

  • การนำเข้าไม่ได้กำหนดรหัสเอกสารใหม่ การนำเข้าจะใช้รหัสที่บันทึกไว้ ณ เวลาที่ส่งออก ในขณะที่เอกสารกำลังถูกนำเข้า ID ของเอกสารจะถูกสงวนไว้เพื่อป้องกันการชนกันของ ID หากมีเอกสารที่มี ID เดียวกันอยู่แล้ว การนำเข้าจะเขียนทับเอกสารที่มีอยู่

  • หากเอกสารในฐานข้อมูลของคุณไม่ได้รับผลกระทบจากการนำเข้า เอกสารนั้นจะยังคงอยู่ในฐานข้อมูลของคุณหลังจากการนำเข้า

  • การดำเนินการนำเข้าไม่ทริกเกอร์ฟังก์ชันคลาวด์ ผู้ฟังสแนปชอต จะได้รับการอัปเดตที่เกี่ยวข้องกับการดำเนินการนำเข้า

  • ชื่อไฟล์ .overall_export_metadata ต้องตรงกับชื่อของโฟลเดอร์หลัก:

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

    หากคุณย้ายหรือคัดลอกไฟล์เอาต์พุตของการส่งออก ให้คงชื่อไฟล์ PARENT_FOLDER_NAME และ .overall_export_metadata ไว้เหมือนเดิม

นำเข้าเอกสารทั้งหมดจากการส่งออก

Google คลาวด์คอนโซล

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

  4. คลิก นำเข้า

  5. ในฟิลด์ชื่อ ไฟล์ ให้ป้อนชื่อไฟล์ของไฟล์ .overall_export_metadata จากการดำเนินการส่งออกที่เสร็จสมบูรณ์ คุณสามารถใช้ปุ่ม เรียกดู เพื่อช่วยคุณเลือกไฟล์

  6. คลิก นำเข้า

คอนโซลจะกลับไปที่หน้า นำเข้า/ส่งออก หากการดำเนินการเริ่มต้นได้สำเร็จ เพจจะเพิ่มรายการลงในเพจการนำเข้าและส่งออกล่าสุด เมื่อล้มเหลว เพจจะแสดงข้อความแสดงข้อผิดพลาด

gcloud

ใช้คำสั่ง firestore import เพื่ออิมพอร์ตเอกสารจากการดำเนินการเอ็กซ์พอร์ตครั้งก่อน

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

แทนที่สิ่งต่อไปนี้:

  • BUCKET_NAME/EXPORT_PREFIX : ตำแหน่งของไฟล์ส่งออกของคุณ

  • DATABASE : ชื่อของฐานข้อมูล สำหรับฐานข้อมูลดีฟอลต์ ให้ใช้ --database='(default)'

ตัวอย่างเช่น:

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

คุณยืนยันตำแหน่งของไฟล์ส่งออกได้ในเบราว์เซอร์ Cloud Storage ในคอนโซล Google Cloud Platform ดังนี้

เปิดเบราว์เซอร์ Cloud Storage

เมื่อคุณเริ่มการดำเนินการนำเข้า การปิดเทอร์มินัลจะไม่ยกเลิกการดำเนินการ โปรดดู ที่ ยกเลิกการดำเนินการ

นำเข้าคอลเลกชันเฉพาะ

Google คลาวด์คอนโซล

คุณไม่สามารถเลือกคอลเลกชันเฉพาะในคอนโซลได้ ใช้ gcloud แทน

gcloud

หากต้องการนำเข้ากลุ่มคอลเลกชันเฉพาะจากชุดของไฟล์ส่งออก ให้ใช้แฟล็ก --collection-ids การดำเนินการนำเข้าเฉพาะกลุ่มคอลเลกชันที่มีรหัสคอลเลกชันที่กำหนด กลุ่มคอลเลกชันประกอบด้วยคอลเลกชันและคอลเลกชันย่อยทั้งหมด (ในเส้นทางใดก็ได้) พร้อมด้วยรหัสคอลเลกชันที่ระบุ ระบุชื่อฐานข้อมูลโดยใช้แฟล็ก --database สำหรับฐานข้อมูลดีฟอลต์ ให้ใช้ --database='(default)'

เฉพาะการส่งออกกลุ่มคอลเลกชันเฉพาะเท่านั้นที่รองรับการนำเข้ากลุ่มคอลเลกชันเฉพาะ คุณไม่สามารถนำเข้าคอลเลกชันเฉพาะจากการส่งออกเอกสารทั้งหมดได้

  gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/ \
  --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2],[SUBCOLLECTION_ID_1] \
  --database=[DATABASE]

นำเข้าการส่งออก PITR

ใช้ขั้นตอนใน นำเข้าเอกสารทั้งหมด เพื่อนำเข้าฐานข้อมูลที่ส่งออกของคุณ หากมีเอกสารใดอยู่แล้วในฐานข้อมูลของคุณ เอกสารนั้นจะถูกเขียนทับ

การจัดการการดำเนินการส่งออกและนำเข้า

หลังจากที่คุณเริ่มการดำเนินการส่งออกหรือนำเข้าแล้ว Cloud Firestore จะกำหนดชื่อที่ไม่ซ้ำกันให้กับการดำเนินการ คุณสามารถใช้ชื่อการดำเนินการเพื่อลบ ยกเลิก หรือตรวจสอบสถานะการดำเนินการได้

ชื่อการดำเนินการขึ้นต้นด้วย projects/[PROJECT_ID]/databases/(default)/operations/ ตัวอย่างเช่น:

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

อย่างไรก็ตาม คุณสามารถละคำนำหน้าไว้ได้เมื่อระบุชื่อการดำเนินการสำหรับคำสั่ง describe cancel และ delete

แสดงรายการการดำเนินการส่งออกและนำเข้าทั้งหมด

Google คลาวด์คอนโซล

คุณสามารถดูรายการการดำเนินการส่งออกและนำเข้าล่าสุดได้ในหน้า นำเข้า/ส่งออก ของคอนโซล Google Cloud Platform

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

gcloud

ใช้คำสั่ง operations list เพื่อดูการดำเนินการส่งออกและนำเข้าที่ดำเนินการอยู่และเพิ่งเสร็จสิ้นทั้งหมด:

gcloud firestore operations list

ตรวจสอบสถานะการทำงาน

Google คลาวด์คอนโซล

คุณสามารถดูสถานะของการดำเนินการส่งออกหรือนำเข้าล่าสุดได้ในหน้า นำเข้า/ส่งออก ของคอนโซล Google Cloud Platform

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

gcloud

ใช้คำสั่ง operations describe เพื่อแสดงสถานะของการดำเนินการส่งออกหรือนำเข้า

gcloud firestore operations describe [OPERATION_NAME]

ประมาณการเวลาที่เสร็จสมบูรณ์

คำร้องขอสถานะของการดำเนินการที่ใช้เวลานานจะส่งคืนเมทริก workEstimated และ workCompleted แต่ละเมตริกเหล่านี้จะถูกส่งกลับทั้งจำนวนไบต์และจำนวนเอนทิตี:

  • workEstimated แสดงจำนวนไบต์และเอกสารทั้งหมดโดยประมาณที่การดำเนินการจะประมวลผล Cloud Firestore อาจละเว้นเมตริกนี้หากไม่สามารถประมาณค่าได้

  • workCompleted แสดงจำนวนไบต์และเอกสารที่ประมวลผลจนถึงตอนนี้ หลังจากการดำเนินการเสร็จสิ้น ค่าจะแสดงจำนวนไบต์และเอกสารทั้งหมดที่ถูกประมวลผลจริง ซึ่งอาจมากกว่าค่าของ workEstimated

แบ่ง workCompleted ตาม workEstimated ประมาณการความคืบหน้าคร่าวๆ การประมาณการนี้อาจไม่ถูกต้อง เนื่องจากขึ้นอยู่กับการรวบรวมสถิติที่ล่าช้า

ยกเลิกการดำเนินการ

Google คลาวด์คอนโซล

คุณสามารถยกเลิกการดำเนินการส่งออกหรือนำเข้าที่กำลังดำเนินการอยู่ในหน้า นำเข้า/ส่งออก ของคอนโซล Google Cloud Platform

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล

  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

ในตาราง การนำเข้าและส่งออกล่าสุด การดำเนินการที่กำลังทำงานอยู่ในปัจจุบันจะมีปุ่ม ยกเลิก ในคอลัมน์ เสร็จสมบูรณ์ คลิกปุ่ม ยกเลิก เพื่อหยุดการดำเนินการ ปุ่มจะเปลี่ยนเป็นข้อความ กำลังยกเลิก และจากนั้นเป็น ยกเลิก เมื่อการดำเนินการหยุดลงอย่างสมบูรณ์

gcloud

ใช้คำสั่ง operations cancel เพื่อหยุดการดำเนินการที่กำลังดำเนินอยู่:

gcloud firestore operations cancel [OPERATION_NAME]

การยกเลิกการดำเนินการที่กำลังทำงานอยู่ไม่ได้เป็นการยกเลิกการดำเนินการ การดำเนินการส่งออกที่ยกเลิกจะทำให้เอกสารที่ส่งออกไปแล้วใน Cloud Storage และการดำเนินการนำเข้าที่ยกเลิกจะคงไว้ซึ่งการอัปเดตที่ทำไว้แล้วในฐานข้อมูลของคุณ คุณไม่สามารถนำเข้าการส่งออกที่เสร็จสมบูรณ์บางส่วนได้

ลบการดำเนินการ

ใช้คำสั่ง gcloud firestore operations delete เพื่อลบการดำเนินการออกจากรายการการดำเนินการล่าสุด คำสั่งนี้จะไม่ลบไฟล์ส่งออกออกจาก Cloud Storage

gcloud firestore operations delete [OPERATION_NAME]

การเรียกเก็บเงินและราคาสำหรับการดำเนินการส่งออกและนำเข้า

คุณต้องเปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud ก่อนที่จะใช้บริการส่งออกและนำเข้าที่มีการจัดการ

การดำเนินการส่งออกและนำเข้าจะเรียกเก็บเงินสำหรับการอ่านและเขียนเอกสารในอัตราที่ระบุไว้ใน ราคา Cloud Firestore การดำเนินการส่งออกจะต้องมีการดำเนินการอ่านหนึ่งครั้งต่อเอกสารที่ส่งออก การดำเนินการนำเข้าจะต้องมีการดำเนินการเขียนหนึ่งครั้งต่อเอกสารที่นำเข้า

ไฟล์เอาท์พุตที่จัดเก็บไว้ใน Cloud Storage จะนับรวมอยู่ใน ต้นทุนการจัดเก็บข้อมูล Cloud Storage ของคุณ

ต้นทุนการดำเนินการส่งออกและนำเข้าจะไม่นับรวมใน วงเงินการใช้จ่าย ของคุณ การดำเนินการส่งออกหรือนำเข้าจะไม่ทริกเกอร์การแจ้งเตือน งบประมาณ Google Cloud ของคุณจนกว่าจะเสร็จสิ้น ในทำนองเดียวกัน การอ่านและเขียนที่ดำเนินการระหว่างการดำเนินการส่งออกหรือนำเข้าจะถูกนำไปใช้กับ โควต้ารายวัน ของคุณหลังจากการดำเนินการเสร็จสิ้น การดำเนินการส่งออกและนำเข้าจะไม่ส่งผลต่อการใช้งานที่แสดงในส่วนการใช้งานของคอนโซล

การดูต้นทุนการส่งออกและนำเข้า

การดำเนินการส่งออกและนำเข้าจะใช้ป้ายกำกับ goog-firestoremanaged:exportimport กับการดำเนินการที่เรียกเก็บเงิน ใน หน้ารายงานการเรียกเก็บเงินใน Cloud คุณสามารถใช้ป้ายกำกับนี้เพื่อดูต้นทุนที่เกี่ยวข้องกับการดำเนินการนำเข้าและส่งออก:

เข้าถึงป้ายกำกับ goog-firestoremanaged จากเมนูตัวกรอง

ส่งออกไปยัง BigQuery

คุณสามารถโหลดข้อมูลจาก Cloud Firestore ที่ส่งออกไปยัง BigQuery ได้เฉพาะในกรณีที่คุณระบุตัวกรอง collection-ids ชันเท่านั้น ดู การโหลดข้อมูลจากการส่งออก Cloud Firestore

ขีดจำกัดคอลัมน์ BigQuery

BigQuery กำหนดขีดจำกัดไว้ที่ 10,000 คอลัมน์ต่อตาราง การดำเนินการส่งออกของ Cloud Firestore จะสร้างสคีมาตาราง BigQuery สำหรับแต่ละกลุ่มคอลเลกชัน ในสคีมานี้ แต่ละชื่อฟิลด์ที่ไม่ซ้ำกันภายในกลุ่มคอลเลกชันจะกลายเป็นคอลัมน์สคีมา

หากสคีมา BigQuery ของกลุ่มคอลเลกชันมีเกิน 10,000 คอลัมน์ การดำเนินการส่งออก Cloud Firestore จะพยายามอยู่ภายใต้ขีดจำกัดของคอลัมน์โดยถือว่าช่องแผนที่เป็นไบต์ หากการแปลงนี้ทำให้มีจำนวนคอลัมน์ต่ำกว่า 10,000 คอลัมน์ คุณจะโหลดข้อมูลลงใน BigQuery ได้ แต่จะค้นหาช่องย่อยภายในช่องแผนที่ไม่ได้ หากจำนวนคอลัมน์ยังคงเกิน 10,000 คอลัมน์ การดำเนินการส่งออกจะไม่สร้างสคีมา BigQuery สำหรับกลุ่มคอลเลกชัน และคุณจะโหลดข้อมูลลงใน BigQuery ไม่ได้

ส่งออกไฟล์รูปแบบและข้อมูลเมตา

ผลลัพธ์ของการส่งออกที่มีการจัดการจะใช้ รูปแบบบันทึก LevelDB

ไฟล์ข้อมูลเมตา

การดำเนินการส่งออกจะสร้างไฟล์ข้อมูลเมตาสำหรับแต่ละกลุ่มคอลเลกชันที่คุณระบุ โดยทั่วไปไฟล์ข้อมูลเมตาจะมีชื่อว่า ALL_NAMESPACES_KIND_[COLLECTION_GROUP_ID].export_metadata

ไฟล์ข้อมูลเมตาเป็นบัฟเฟอร์โปรโตคอล และคุณสามารถถอดรหัสได้ด้วย คอมไพเลอร์โปรโตคอล protoc ตัวอย่างเช่น คุณสามารถถอดรหัสไฟล์ข้อมูลเมตาเพื่อกำหนดกลุ่มคอลเลกชันที่ไฟล์ส่งออกประกอบด้วย:

protoc --decode_raw < export0.export_metadata

การโยกย้ายตัวแทนบริการ

Cloud Firestore ใช้ตัวแทนบริการ Cloud Firestore เพื่อให้สิทธิ์การดำเนินการนำเข้าและส่งออกแทนการใช้บัญชีบริการ App Engine ตัวแทนบริการและบัญชีบริการใช้หลักการตั้งชื่อต่อไปนี้:

ตัวแทนบริการ Cloud Firestore
service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com

ก่อนหน้านี้ Cloud Firestore ใช้บัญชีบริการเริ่มต้นของ App Engine แทนตัวแทนบริการ Cloud Firestore หากฐานข้อมูลของคุณยังคงใช้บัญชีบริการ App Engine เพื่อนำเข้าหรือส่งออกข้อมูล เราขอแนะนำให้คุณทำตามคำแนะนำในส่วนนี้เพื่อย้ายข้อมูลไปใช้ตัวแทนบริการ Cloud Firestore

บัญชีบริการ App Engine
PROJECT_ID @appspot.gserviceaccount.com

ควรใช้ตัวแทนบริการ Cloud Firestore เนื่องจากมีเฉพาะกับ Cloud Firestore บัญชีบริการ App Engine ได้รับการแชร์โดยบริการมากกว่าหนึ่งรายการ

ดูบัญชีอนุญาต

คุณสามารถดูว่าบัญชีใดที่การดำเนินการนำเข้าและส่งออกของคุณใช้ในการให้สิทธิ์คำขอได้จากหน้า นำเข้า/ส่งออก ในคอนโซล Google Cloud Platform คุณยังดูได้ว่าฐานข้อมูลของคุณใช้ตัวแทนบริการ Cloud Firestore อยู่แล้วหรือไม่

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

  4. ดูบัญชีการอนุญาตถัดจาก งานนำเข้า/ส่งออกที่ทำงานเป็น ป้ายกำกับ

หากโปรเจ็กต์ของคุณไม่ได้ใช้ตัวแทนบริการ Cloud Firestore คุณสามารถย้ายไปยังตัวแทนบริการ Cloud Firestore ได้โดยใช้เทคนิคอย่างใดอย่างหนึ่งต่อไปนี้

เทคนิคแรกเหล่านี้เหมาะกว่าเนื่องจากจะจำกัดขอบเขตของผลกระทบให้กับโปรเจ็กต์ Cloud Firestore เดียว ไม่แนะนำให้ใช้เทคนิคที่ 2 เนื่องจากไม่ได้ย้ายสิทธิ์ของที่เก็บข้อมูล Cloud Storage ที่มีอยู่ อย่างไรก็ตาม มีการปฏิบัติตามข้อกำหนดด้านความปลอดภัยในระดับองค์กร

ย้ายข้อมูลโดยตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage

กระบวนการย้ายข้อมูลมีสองขั้นตอน:

  1. อัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage ดูส่วนต่อไปนี้สำหรับรายละเอียด
  2. ยืนยันการย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore

สิทธิ์ที่เก็บข้อมูลของตัวแทนบริการ

สำหรับการดำเนินการส่งออกหรือนำเข้าที่ใช้ที่เก็บข้อมูล Cloud Storage ในโปรเจ็กต์ อื่น คุณต้องให้สิทธิ์ตัวแทนบริการ Cloud Firestore สำหรับที่เก็บข้อมูลนั้น ตัวอย่างเช่น การดำเนินการที่ย้ายข้อมูลไปยังโปรเจ็กต์อื่นจำเป็นต้องเข้าถึงบัคเก็ตในโปรเจ็กต์อื่นนั้น มิฉะนั้น การดำเนินการเหล่านี้จะล้มเหลวหลังจากย้ายไปยังตัวแทนบริการ Cloud Firestore

เวิร์กโฟลว์นำเข้าและส่งออกที่อยู่ในโปรเจ็กต์เดียวกันไม่จำเป็นต้องเปลี่ยนแปลงสิทธิ์ Agent บริการ Cloud Firestore เข้าถึงที่เก็บข้อมูลในโปรเจ็กต์เดียวกันได้ตามค่าเริ่มต้น

อัปเดตสิทธิ์สำหรับที่เก็บข้อมูล Cloud Storage จากโปรเจ็กต์อื่นเพื่อให้สิทธิ์เข้าถึง service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com service agent มอบบทบาทตัวแทนบริการ Firestore Service Agent

บทบาท Firestore Service Agent ให้สิทธิ์อ่านและเขียนสำหรับที่เก็บข้อมูล Cloud Storage หากคุณต้องการให้สิทธิ์อ่านหรือเขียนเท่านั้น ให้ใช้ บทบาทที่กำหนดเอง

กระบวนการย้ายข้อมูลที่อธิบายไว้ในส่วนต่อไปนี้ช่วยคุณระบุที่เก็บข้อมูล Cloud Storage ที่อาจต้องมีการอัปเดตสิทธิ์

ย้ายโปรเจ็กต์ไปยัง Firestore Service Agent

ทำตามขั้นตอนต่อไปนี้เพื่อย้ายจากบัญชีบริการ App Engine ไปยังตัวแทนบริการ Cloud Firestore เมื่อเสร็จสิ้นแล้ว การย้ายข้อมูลจะยกเลิกไม่ได้

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

  4. หากโปรเจ็กต์ของคุณยังไม่ได้ย้ายไปยังตัวแทนบริการ Cloud Firestore คุณจะเห็นแบนเนอร์ที่อธิบายการย้ายและปุ่ม ตรวจสอบสถานะบัคเก็ต ขั้นตอนต่อไปจะช่วยคุณระบุและแก้ไขข้อผิดพลาดในการอนุญาตที่อาจเกิดขึ้น

    คลิก ตรวจสอบสถานะบัคเก็ต

    เมนูจะปรากฏขึ้นพร้อมกับตัวเลือกในการย้ายข้อมูลและรายการที่เก็บข้อมูล Cloud Storage อาจใช้เวลาสักครู่ก่อนที่รายการจะโหลดเสร็จ

    รายการนี้รวมถึงที่เก็บข้อมูลที่ใช้ในการนำเข้าและส่งออกเมื่อเร็วๆ นี้ แต่ขณะนี้ไม่ได้ให้สิทธิ์ในการอ่านและเขียนแก่ตัวแทนบริการ Cloud Firestore

  5. จดชื่อหลักของตัวแทนบริการ Cloud Firestore ของโปรเจ็กต์ของคุณ ชื่อตัวแทนบริการจะปรากฏใต้ ตัวแทนบริการเพื่อให้สิทธิ์ในการเข้าถึง ป้ายกำกับ
  6. สำหรับบัคเก็ตใดๆ ในรายการที่คุณจะใช้สำหรับการดำเนินการนำเข้าหรือส่งออกในอนาคต ให้ทำตามขั้นตอนต่อไปนี้:

    1. ในแถวตารางของที่เก็บข้อมูลนี้ ให้คลิก แก้ไข ซึ่งจะเปิดหน้าสิทธิ์ของที่เก็บข้อมูลนั้นในแท็บใหม่

    2. คลิก เพิ่ม
    3. ในช่อง หลักการใหม่ ให้ป้อนชื่อตัวแทนบริการ Cloud Firestore ของคุณ
    4. ในฟิลด์ เลือกบทบาท ให้เลือก Service Agent > Firestore Service Agent
    5. คลิก บันทึก
    6. กลับไปที่แท็บที่มีหน้านำเข้า/ส่งออก Cloud Firestore
    7. ทำซ้ำขั้นตอนเหล่านี้กับที่เก็บข้อมูลอื่นๆ ในรายการ ตรวจสอบให้แน่ใจว่าได้ดูทุกหน้าของรายการ
  7. คลิก ย้ายไปยัง Firestore Service Agent หากคุณยังคงมีที่เก็บข้อมูลที่ตรวจสอบสิทธิ์ไม่สำเร็จ คุณต้องยืนยันการย้ายข้อมูลโดยคลิก ย้าย

    การแจ้งเตือนจะแจ้งให้คุณทราบเมื่อการย้ายข้อมูลของคุณเสร็จสิ้น การย้ายข้อมูลไม่สามารถเลิกทำได้

ดูสถานะการย้ายข้อมูล

หากต้องการยืนยันสถานะการย้ายข้อมูลของโครงการ ให้ทำดังนี้

  1. ในคอนโซล Google Cloud Platform ให้ไปที่หน้า ฐานข้อมูล

    ไปที่ฐานข้อมูล

  2. เลือกฐานข้อมูลที่ต้องการจากรายการฐานข้อมูล
  3. ในเมนูการนำทาง คลิก นำเข้า/ส่งออก

  4. ค้นหาหลักที่อยู่ถัดจาก งานนำเข้า/ส่งออกที่ทำงานเป็น ป้ายกำกับ

    หากตัวการคือ service- PROJECT_NUMBER @gcp-sa-firestore.iam.gserviceaccount.com แสดงว่าโปรเจ็กต์ของคุณได้ย้ายไปยังตัวแทนบริการ Cloud Firestore แล้ว การย้ายข้อมูลไม่สามารถเลิกทำได้

    หากยังไม่ได้ย้ายโปรเจ็กต์ แบนเนอร์จะปรากฏที่ด้านบนของหน้าพร้อมปุ่ม ตรวจสอบสถานะบัคเก็ต ดู ย้ายไปยังตัวแทนบริการ Firestore เพื่อดำเนินการย้ายให้เสร็จสมบูรณ์

เพิ่มข้อจำกัดนโยบายทั่วทั้งองค์กร

  • ตั้งค่าข้อจำกัดต่อไปนี้ในนโยบายขององค์กรของคุณ:

    ต้องการ Firestore Service Agent สำหรับการนำเข้า/ส่งออก ( firestore.requireP4SAforImportExport )

    ข้อจำกัดนี้จำเป็นต้องมีการดำเนินการนำเข้าและส่งออกเพื่อใช้ตัวแทนบริการ Cloud Firestore เพื่อให้สิทธิ์คำขอ หากต้องการตั้งค่าข้อจำกัดนี้ โปรดดูที่ การสร้างและการจัดการนโยบายองค์กร

การใช้ข้อจำกัดนโยบายองค์กรนี้ไม่ได้ให้สิทธิ์ที่เก็บข้อมูล Cloud Storage ที่เหมาะสมสำหรับตัวแทนบริการ Cloud Firestore โดยอัตโนมัติ

หากข้อจำกัดสร้างข้อผิดพลาดในการอนุญาตสำหรับเวิร์กโฟลว์การนำเข้าหรือส่งออก คุณสามารถปิดใช้งานเพื่อกลับไปใช้บัญชีบริการเริ่มต้นได้ หลังจาก ตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage แล้ว คุณจะเปิดใช้ข้อจำกัดได้อีกครั้ง