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

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

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