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

คุณสามารถใช้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

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

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

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

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

คุณดูบัญชีที่การดำเนินการนำเข้าและส่งออกใช้เพื่อให้สิทธิ์คำขอได้จากหน้านำเข้า/ส่งออกในคอนโซล Google Cloud นอกจากนี้ คุณยังดูได้ว่าฐานข้อมูลใช้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 เพิ่ม Flag --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

หากต้องการส่งออกกลุ่มคอลเล็กชันที่เฉพาะเจาะจง ให้ใช้ Flag --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 ให้ไปที่หน้าฐานข้อมูล

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

  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 การดำเนินการจะนําเข้าเฉพาะกลุ่มคอลเล็กชันที่มีรหัสคอลเล็กชันที่ระบุเท่านั้น กลุ่มคอลเล็กชันประกอบด้วยคอลเล็กชันและคอลเล็กชันย่อยทั้งหมด (ที่เส้นทางใดก็ได้) ที่มีรหัสคอลเล็กชันที่ระบุ ระบุชื่อฐานข้อมูลโดยใช้ Flag --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

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

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

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

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

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

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