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

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

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

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

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

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

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

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

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

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

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

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

  • การนำเข้าไปยังCloud Firestoreฐานข้อมูลจากการส่งออกที่มีคอลเล็กชันย่อยจะล้มเหลวเนื่องจากCloud Firestoreไม่รองรับคอลเล็กชันย่อย

  • การนำเข้าไปยังฐานข้อมูลรุ่นมาตรฐานของ Cloud Firestore จากการส่งออกที่มี ประเภท BSON จะล้มเหลวเนื่องจากรุ่นมาตรฐานของ Cloud Firestore ไม่รองรับประเภท BSON

  • การนำเข้าไปยังCloud Firestoreฐานข้อมูลจะนำเข้าข้อมูลจากเนมสเปซที่ไม่ใช่ค่าเริ่มต้น (Datastore API) ไม่ได้

    การนำเข้าไปยังCloud Firestoreฐานข้อมูลจากไฟล์ข้อมูลที่มีเนมสเปซที่ไม่ใช่ค่าเริ่มต้น จะได้รับอนุญาตก็ต่อเมื่อการดำเนินการส่งออกมีตัวกรอง--namespace-ids ที่มีเนมสเปซเริ่มต้น ระบบจะนำเข้าเฉพาะข้อมูลจากเนมสเปซเริ่มต้น

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

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: ชื่อของฐานข้อมูล

เช่น

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

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

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

นำเข้าจากการส่งออกที่มีข้อมูล PITR

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

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

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

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

Google Cloud Console

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

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

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

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

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

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

  6. เลือกส่งออกสถานะปัจจุบันของฐานข้อมูลเพื่อส่งออกข้อมูลปัจจุบัน

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

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

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

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: ชื่อของฐานข้อมูลที่คุณต้องการส่งออก เอกสาร

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

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

Google Cloud Console

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

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

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

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

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

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

  6. เลือกส่งออกสถานะปัจจุบันของฐานข้อมูลเพื่อส่งออกข้อมูลปัจจุบัน

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

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

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

gcloud

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

gcloud firestore export gs://[BUCKET_NAME] \
--collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2] \
--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 เช่น 2020-09-01T23:59:30.234233Z
  • ตรวจสอบว่าการประทับเวลาที่คุณระบุเป็นการประทับเวลาแบบเต็มนาที ภายใน 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 Firestore จะกำหนดชื่อที่ไม่ซ้ำกันให้กับการดำเนินการ คุณใช้ชื่อการดำเนินการเพื่อลบ ยกเลิก หรือตรวจสอบสถานะการดำเนินการได้

ชื่อการดำเนินการจะมีคำนำหน้าเป็น projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/ เช่น

projects/my-project/databases/my-database/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ราคา

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

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

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

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

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

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

คุณโหลดข้อมูลจากการส่งออก Cloud Firestore ไปยัง BigQuery ได้ แต่จะทำได้ก็ต่อเมื่อคุณระบุตัวกรอง collection-ids เท่านั้น ดูการโหลดข้อมูลจากการส่งออกของ Cloud Firestore

เมื่อโหลดข้อมูล Cloud Firestore ลงใน BigQuery ระบบจะแสดงประเภทข้อมูล BSON ด้วยประเภทข้อมูล STRING

ขีดจำกัดของคอลัมน์ 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