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

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

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

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

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

Agent บริการ Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Google Cloud Console

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

    ไปที่ Databases

  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 Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

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

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

เมื่อส่งออกไฟล์ใน 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 Platform ให้ไปที่หน้าฐานข้อมูล

    ไปที่ Databases

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

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

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

  5. ในช่อง Filename ให้ป้อนชื่อไฟล์ของไฟล์ .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 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 Platform

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

    ไปที่ Databases

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

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

gcloud

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

gcloud firestore operations list

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

Google Cloud Console

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

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

    ไปที่ Databases

  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 Platform

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

    ไปที่ Databases

  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 ครั้งต่อเอกสารที่นำเข้า 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

การย้ายข้อมูล Agent บริการ

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

Agent บริการ Cloud Firestore
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com

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

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

Agent บริการ Cloud Firestore เป็นตัวเลือกที่ดีกว่าเนื่องจากมีความเฉพาะเจาะจงกับ Cloud Firestore มีการแชร์บัญชีบริการ App Engine มากกว่า 1 บริการ

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

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

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

    ไปที่ Databases

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

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

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

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

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

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

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

สิทธิ์ที่เก็บข้อมูลของ Agent บริการ

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

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

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

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

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

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

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

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

    ไปที่ Databases

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

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

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

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

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

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

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

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

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

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

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

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

    ไปที่ Databases

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

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

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

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

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

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

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

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

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

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