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

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

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

ก่อนเริ่มต้น

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

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

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

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

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแทนบริการได้ที่ ตัวแทนบริการ

ไม่ได้

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

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

มอบหมายบทบาทให้กับตัวแทนบริการ

คุณใช้เครื่องมือบรรทัดคำสั่ง 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 หากต้องการดูชื่อตัวแทนบริการ โปรดดูดูชื่อตัวแทนบริการ

หรือจะมอบหมายบทบาทนี้โดยใช้คอนโซล Google Cloud ก็ได้

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

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

  1. ดูบัญชีการให้สิทธิ์ข้างป้ายกำกับงานนำเข้า/ส่งออกที่เรียกใช้เป็น

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

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

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

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

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

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

Google Cloud Console

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

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

  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 Cloud Console

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

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

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

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

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

  5. คลิกตัวเลือกส่งออกกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม ใช้เมนูแบบเลื่อนลง เพื่อเลือกกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม

  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 ได้ คุณสามารถส่งออกข้อมูล PITR ที่การประทับเวลาเป็นเวลาเต็มนาทีภายใน 7 วันที่ผ่านมา แต่ไม่เร็วกว่าวันที่ earliestVersionTime หากข้อมูลไม่มีอยู่อีกต่อไปที่การประทับเวลาที่ระบุ การดำเนินการส่งออกจะล้มเหลว

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

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

  • ระบุการประทับเวลาในรูปแบบ RFC 3339 เช่น 2023-05-26T10:20:00.00Z
  • ตรวจสอบว่าการประทับเวลาที่คุณระบุเป็นการประทับเวลาแบบเต็มนาที ภายใน 7 วันที่ผ่านมา แต่ไม่เร็วกว่า earliestVersionTime หากไม่มีข้อมูลที่การประทับเวลาที่ระบุอีกต่อไป ระบบจะสร้างข้อผิดพลาด
  • ระบบจะไม่เรียกเก็บเงินจากคุณสำหรับการส่งออก PITR ที่ไม่สำเร็จ

คอนโซล

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

    ไปที่ฐานข้อมูล
  2. เลือกฐานข้อมูลจากรายการฐานข้อมูล
  3. ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
  4. คลิกส่งออก
  5. กำหนดค่าแหล่งที่มาของการส่งออกเพื่อส่งออกทั้งฐานข้อมูลหรือเฉพาะคอลเล็กชันที่ต้องการ
  6. ในส่วนเลือกสถานะของฐานข้อมูลที่จะส่งออก ให้เลือกส่งออกจากช่วงเวลาที่ผ่านมา

    เลือกเวลาสแนปชอตที่จะใช้สำหรับการส่งออก

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

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

gcloud

คุณสามารถส่งออกฐานข้อมูลไปยัง Cloud Storage จากข้อมูล PITR ได้โดยใช้คำสั่ง gcloud firestore export

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

gcloud firestore export gs://[BUCKET_NAME_PATH] \
    --snapshot-time=[PITR_TIMESTAMP]

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

เพิ่มแฟล็ก --collection-ids เพื่อส่งออกคอลเล็กชันที่เฉพาะเจาะจง

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

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

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

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

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

  • การดำเนินการนำเข้าจะไม่ทริกเกอร์ Cloud Functions Listener ของสแนปชอต จะได้รับการอัปเดตที่เกี่ยวข้องกับการดำเนินการนำเข้า

  • .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 Cloud Console

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

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

  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 โดยทำดังนี้

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

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

นำเข้าคอลเล็กชันที่เฉพาะเจาะจง

Google Cloud Console

คุณเลือกคอลเล็กชันที่เฉพาะเจาะจงในคอนโซลไม่ได้ โปรดใช้ 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 Cloud Console

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

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

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

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

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

gcloud

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

gcloud firestore operations list

ตรวจสอบสถานะการดำเนินการ

Google Cloud Console

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

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

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

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

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

gcloud

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

gcloud firestore operations describe [OPERATION_NAME]

ประเมินเวลาที่ใช้ดำเนินการ

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

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

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

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

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

Google Cloud Console

คุณยกเลิกการดำเนินการส่งออกหรือนำเข้าที่กำลังทำงานได้ในหน้านำเข้า/ส่งออกของ Google Cloud Console

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

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

  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ราคา การดำเนินการส่งออกจะทำให้เกิดการดำเนินการอ่าน 1 รายการต่อเอกสารที่ส่งออก การดำเนินการนำเข้าจะทำให้เกิดการดำเนินการเขียน 1 ครั้งต่อเอกสารที่นำเข้า

ไฟล์เอาต์พุตที่จัดเก็บไว้ใน 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 มีการแชร์ โดยบริการมากกว่า 1 รายการ

ดูบัญชีการให้สิทธิ์

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

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

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

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

  4. ดูบัญชีการให้สิทธิ์ข้างป้ายกำกับงานนำเข้า/ส่งออกที่เรียกใช้เป็น

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

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

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

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

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

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

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

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

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

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

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

ย้ายข้อมูลโปรเจ็กต์ไปยังตัวแทนบริการ Firestore

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

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

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

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

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

    คลิกตรวจสอบสถานะที่เก็บข้อมูล

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

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

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

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

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

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

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

วิธีตรวจสอบสถานะการย้ายข้อมูลของโปรเจ็กต์

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

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

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

  4. มองหาผู้ดูแลระบบข้างป้ายกำกับงานนำเข้า/ส่งออกที่เรียกใช้เป็น

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

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

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

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

    กำหนดให้มีตัวแทนบริการ Firestore สำหรับการนำเข้า/ส่งออก (firestore.requireP4SAforImportExport)

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

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

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