คุณสามารถใช้Cloud Firestoreบริการนำเข้าและส่งออกที่มีการจัดการเพื่อกู้คืนข้อมูลจากการลบโดยไม่ตั้งใจและส่งออกข้อมูลสำหรับการประมวลผลแบบออฟไลน์ คุณสามารถส่งออกเอกสารทั้งหมดหรือเฉพาะคอลเล็กชันที่ต้องการ ในทำนองเดียวกัน คุณสามารถนำเข้าข้อมูลทั้งหมดจากการส่งออกหรือเฉพาะคอลเล็กชันที่ต้องการก็ได้ คุณสามารถนําเข้าข้อมูลที่ส่งออกจากฐานข้อมูล Cloud Firestore หนึ่งไปยังฐานข้อมูล Cloud Firestore อื่นได้ นอกจากนี้ คุณยังโหลดCloud Firestoreการส่งออกไปยัง BigQuery ได้ด้วย
หน้านี้อธิบายวิธีส่งออกและนำเข้าเอกสาร Cloud Firestore โดยใช้บริการส่งออกและนำเข้าที่มีการจัดการและ Cloud Storage Cloud Firestoreบริการส่งออกและนำเข้าที่มีการจัดการพร้อมใช้งานผ่านเครื่องมือบรรทัดคำสั่ง gcloud
และ Cloud Firestore API (REST, RPC)
ก่อนเริ่มต้น
คุณต้องทํางานต่อไปนี้ให้เสร็จสิ้นก่อนจึงจะใช้บริการส่งออกและนําเข้าที่มีการจัดการได้
- เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Google Cloud เฉพาะโปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงินเท่านั้นที่จะใช้ฟังก์ชันการส่งออกและนำเข้าได้
- สร้างที่เก็บข้อมูล Cloud Storage สำหรับโปรเจ็กต์ในตำแหน่งที่อยู่ใกล้กับตำแหน่งฐานข้อมูล Cloud Firestore คุณใช้ที่เก็บข้อมูลแบบผู้ขอชำระเงินสําหรับการดำเนินการส่งออกและนําเข้าไม่ได้
-
ตรวจสอบว่าบัญชีของคุณมีสิทธิ์ที่จําเป็นสําหรับ 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 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 แบบเดิมหรือไม่
- ดูบัญชีการให้สิทธิ์ข้างป้ายกำกับเรียกใช้งานนำเข้า/ส่งออกในชื่อ
ตัวแทนฝ่ายบริการต้องมีบทบาท Storage Admin
สำหรับที่เก็บข้อมูล Cloud Storage เพื่อใช้ดำเนินการส่งออกหรือนำเข้า
ตั้งค่า gcloud
สําหรับโปรเจ็กต์
คุณเริ่มการนําเข้าและส่งออกได้ผ่านคอนโซล Google Cloud หรือgcloud
เครื่องมือบรรทัดคําสั่ง หากต้องการใช้ gcloud
ให้ตั้งค่าเครื่องมือบรรทัดคำสั่งและเชื่อมต่อกับโปรเจ็กต์ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
เข้าถึง
gcloud
จากคอนโซล Google Cloud Platform โดยใช้ Cloud Shellตรวจสอบว่าได้กําหนดค่า
gcloud
สําหรับโปรเจ็กต์ที่ถูกต้องแล้ว โดยทำดังนี้gcloud config set project [PROJECT_ID]
ส่งออกข้อมูล
การดำเนินการส่งออกจะคัดลอกเอกสารในฐานข้อมูลไปยังชุดไฟล์ในที่เก็บข้อมูล Cloud Storage โปรดทราบว่าการส่งออกไม่ใช่สแนปชอตฐานข้อมูลที่แน่นอนซึ่งถ่ายไว้ ณ เวลาเริ่มต้นการส่งออก การส่งออกอาจรวมการเปลี่ยนแปลงที่เกิดขึ้นขณะที่การดำเนินการดำเนินอยู่
ส่งออกเอกสารทั้งหมด
Google Cloud Console
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
คลิกส่งออก
คลิกตัวเลือกส่งออกทั้งฐานข้อมูล
ใต้เลือกปลายทาง ให้ป้อนชื่อที่เก็บข้อมูล Cloud Storage หรือใช้ปุ่มเรียกดูเพื่อเลือกที่เก็บข้อมูล
คลิกส่งออก
คอนโซลจะกลับไปที่หน้านําเข้า/ส่งออก หากการดําเนินการเริ่มต้นสําเร็จ หน้าเว็บจะเพิ่มรายการลงในหน้าการนําเข้าและส่งออกล่าสุด หากดำเนินการไม่สำเร็จ หน้าเว็บจะแสดงข้อความแสดงข้อผิดพลาด
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
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
คลิกส่งออก
คลิกตัวเลือกส่งออกกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม ใช้เมนูแบบเลื่อนลงเพื่อเลือกกลุ่มคอลเล็กชันอย่างน้อย 1 กลุ่ม
ใต้เลือกปลายทาง ให้ป้อนชื่อที่เก็บข้อมูล Cloud Storage หรือใช้ปุ่มเรียกดูเพื่อเลือกที่เก็บข้อมูล
คลิกส่งออก
คอนโซลจะกลับไปที่หน้านําเข้า/ส่งออก หากการดําเนินการเริ่มต้นสําเร็จ หน้าเว็บจะเพิ่มรายการลงในหน้าการนําเข้าและส่งออกล่าสุด หากดำเนินการไม่สำเร็จ หน้าเว็บจะแสดงข้อความแสดงข้อผิดพลาด
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 รองรับตัวกรองทั้งหมด ซึ่งรวมถึงการส่งออกเอกสารทั้งหมดและการส่งออกคอลเล็กชันที่เฉพาะเจาะจง
ส่งออกฐานข้อมูลโดยระบุพารามิเตอร์
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
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
คลิกนำเข้า
ในช่องชื่อไฟล์ ให้ป้อนชื่อไฟล์
.overall_export_metadata
จากการดำเนินการส่งออกที่เสร็จสมบูรณ์ คุณใช้ปุ่มเรียกดูเพื่อช่วยเลือกไฟล์ได้คลิกนำเข้า
คอนโซลจะกลับไปที่หน้านําเข้า/ส่งออก หากการดําเนินการเริ่มต้นสําเร็จ หน้าเว็บจะเพิ่มรายการลงในหน้าการนําเข้าและส่งออกล่าสุด หากดำเนินการไม่สำเร็จ หน้าเว็บจะแสดงข้อความแสดงข้อผิดพลาด
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 ได้โดยทำดังนี้
เมื่อเริ่มการนําเข้าแล้ว การปิดเทอร์มินัลจะไม่ยกเลิกการดำเนินการ โปรดดูยกเลิกการดำเนินการ
นำเข้าคอลเล็กชันที่เฉพาะเจาะจง
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
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
gcloud
ใช้คำสั่ง operations list
เพื่อดูการดำเนินการส่งออกและนำเข้าทั้งหมดที่ดำเนินการอยู่และดำเนินการเสร็จสิ้นล่าสุด
gcloud firestore operations list
ตรวจสอบสถานะการดำเนินการ
Google Cloud Console
คุณดูสถานะของการดําเนินการนําเข้าหรือส่งออกล่าสุดได้ในหน้านําเข้า/ส่งออกของคอนโซล Google Cloud
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
gcloud
ใช้คำสั่ง operations describe
เพื่อแสดงสถานะของการดำเนินการส่งออกหรือนําเข้า
gcloud firestore operations describe [OPERATION_NAME]
ประมาณเวลาในการดำเนินการ
คำขอสถานะของการดำเนินการที่ใช้เวลานานจะแสดงเมตริก workEstimated
และ workCompleted
ระบบจะแสดงเมตริกแต่ละรายการเหล่านี้ทั้งในรูปแบบจำนวนไบต์และจํานวนเอนทิตี
workEstimated
แสดงจํานวนไบต์และเอกสารทั้งหมดโดยประมาณที่การดำเนินการจะประมวลผล Cloud Firestore อาจละเว้นเมตริกนี้หากไม่สามารถประมาณได้workCompleted
แสดงจำนวนไบต์และเอกสารที่ประมวลผลจนถึงตอนนี้ หลังจากการดำเนินการเสร็จสมบูรณ์ ค่าจะแสดงจำนวนไบต์และเอกสารทั้งหมดที่ประมวลผลจริง ซึ่งอาจมากกว่าค่าของworkEstimated
หาร workCompleted
ด้วย workEstimated
เพื่อดูความคืบหน้าโดยประมาณ ค่าประมาณนี้อาจไม่ถูกต้องเนื่องจากขึ้นอยู่กับการเก็บรวบรวมสถิติที่ล่าช้า
ยกเลิกการดำเนินการ
Google Cloud Console
คุณยกเลิกการดำเนินการส่งออกหรือนำเข้าที่ดำเนินอยู่ได้ในหน้านำเข้า/ส่งออกของคอนโซล Google Cloud
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
ในตารางการนําเข้าและส่งออกล่าสุด การดำเนินการที่กำลังดำเนินอยู่จะมีปุ่มยกเลิกในคอลัมน์เสร็จสมบูรณ์ คลิกปุ่มยกเลิกเพื่อหยุดการดำเนินการ ปุ่มจะเปลี่ยนเป็นข้อความยกเลิก แล้วเปลี่ยนเป็นยกเลิกเมื่อการดำเนินการหยุดลงโดยสมบูรณ์
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
กับการดำเนินการที่มีการเรียกเก็บเงิน ในหน้ารายงานการเรียกเก็บเงินในระบบคลาวด์ คุณสามารถใช้ป้ายกำกับนี้เพื่อดูค่าใช้จ่ายที่เกี่ยวข้องกับการดำเนินการนำเข้าและส่งออก
ส่งออกไปยัง 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 อยู่แล้วหรือไม่
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
- ดูบัญชีการให้สิทธิ์ข้างป้ายกำกับเรียกใช้งานนำเข้า/ส่งออกในชื่อ
หากโปรเจ็กต์ไม่ได้ใช้ตัวแทนบริการ Cloud Firestore คุณสามารถย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore โดยใช้เทคนิคใดเทคนิคหนึ่งต่อไปนี้
- ย้ายข้อมูลโปรเจ็กต์โดยตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage (แนะนำ)
- เพิ่มข้อจำกัดของนโยบายทั่วทั้งองค์กรที่ส่งผลต่อโปรเจ็กต์ทั้งหมดภายในองค์กร
เราขอแนะนำให้ใช้เทคนิคแรกเนื่องจากจะจำกัดขอบเขตผลลัพธ์ให้อยู่ภายในโปรเจ็กต์ Cloud Firestore โปรเจ็กต์เดียว ไม่แนะนำให้ใช้เทคนิคที่ 2 เนื่องจากจะไม่ย้ายข้อมูลสิทธิ์ของที่เก็บข้อมูล Cloud Storage ที่มีอยู่ แต่ก็มีการรักษาความปลอดภัยในระดับองค์กร
ย้ายข้อมูลโดยตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage
กระบวนการย้ายข้อมูลมี 2 ขั้นตอนดังนี้
- อัปเดตสิทธิ์ที่เก็บข้อมูล Cloud Storage ดูรายละเอียดได้ในส่วนต่อไปนี้
- ยืนยันการย้ายข้อมูลกับตัวแทนฝ่ายบริการของ 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 เมื่อดำเนินการเสร็จแล้ว คุณจะเลิกทำไม่ได้
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
-
หากโปรเจ็กต์ของคุณยังไม่ได้ย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore คุณจะเห็นแบนเนอร์ที่อธิบายการย้ายข้อมูลและปุ่มตรวจสอบสถานะที่เก็บข้อมูล ขั้นตอนถัดไปจะช่วยคุณระบุและแก้ไขข้อผิดพลาดเกี่ยวกับสิทธิ์ที่อาจเกิดขึ้น
คลิกตรวจสอบสถานะที่เก็บข้อมูล
เมนูจะปรากฏขึ้นพร้อมตัวเลือกในการย้ายข้อมูลให้เสร็จสมบูรณ์และรายการที่เก็บข้อมูล Cloud Storage การโหลดรายการอาจใช้เวลา 2-3 นาที
รายการนี้รวมถึงที่เก็บข้อมูลซึ่งเพิ่งมีการใช้ในการนําเข้าและส่งออก แต่ปัจจุบันไม่ได้ให้สิทธิ์อ่านและเขียนแก่ตัวแทนบริการ Cloud Firestore
- จดชื่อหลักของCloud Firestoreตัวแทนบริการของโครงการไว้ ชื่อตัวแทนบริการจะปรากฏใต้ป้ายกำกับตัวแทนบริการที่จะให้สิทธิ์เข้าถึง
-
สำหรับที่เก็บข้อมูลในรายการที่คุณจะใช้สําหรับการนําเข้าหรือส่งออกในอนาคต ให้ทําตามขั้นตอนต่อไปนี้
-
คลิกแก้ไขในแถวตารางของที่เก็บข้อมูลนี้ ซึ่งจะเปิดหน้าสิทธิ์ของที่เก็บข้อมูลนั้นในแท็บใหม่
- คลิกเพิ่ม
- ในช่องผู้ใช้หลักใหม่ ให้ป้อนชื่อตัวแทนบริการCloud Firestore
- ในช่องเลือกบทบาท ให้เลือกตัวแทนบริการ > ตัวแทนบริการ Firestore
- คลิกบันทึก
- กลับไปที่แท็บที่มีCloud Firestoreหน้านําเข้า/ส่งออก
- ทำขั้นตอนเหล่านี้ซ้ำสำหรับที่เก็บข้อมูลอื่นๆ ในรายการ อย่าลืมดูทุกหน้าของรายการ
-
-
คลิกย้ายข้อมูลไปยังตัวแทนบริการ Firestore หากยังมีที่เก็บข้อมูลที่มีการตรวจสอบสิทธิ์ไม่สำเร็จ คุณจะต้องยืนยันการย้ายข้อมูลโดยคลิกย้ายข้อมูล
ระบบจะแจ้งเตือนคุณเมื่อการย้ายข้อมูลเสร็จสมบูรณ์ การย้ายข้อมูลจะยกเลิกไม่ได้
ดูสถานะการย้ายข้อมูล
วิธียืนยันสถานะการย้ายข้อมูลของโปรเจ็กต์
-
ในคอนโซล Google Cloud ให้ไปที่หน้าฐานข้อมูล
- เลือกฐานข้อมูลที่จําเป็นจากรายการฐานข้อมูล
-
ในเมนูการนำทาง ให้คลิกนำเข้า/ส่งออก
-
มองหาผู้ใช้หลักข้างป้ายกำกับเรียกใช้การนำเข้า/ส่งออกงานในชื่อ
หากหลักประกันคือ
service-PROJECT_NUMBER@gcp-sa-firestore.iam.gserviceaccount.com
แสดงว่าโปรเจ็กต์ของคุณได้ย้ายข้อมูลไปยังตัวแทนบริการ Cloud Firestore แล้ว การย้ายข้อมูลจะยกเลิกไม่ได้หากยังไม่ได้ย้ายข้อมูลโปรเจ็กต์ แบนเนอร์จะปรากฏที่ด้านบนของหน้าพร้อมปุ่มตรวจสอบสถานะที่เก็บข้อมูล โปรดดูหัวข้อย้ายข้อมูลไปยังตัวแทนบริการ Firestore เพื่อย้ายข้อมูลให้เสร็จสมบูรณ์
เพิ่มข้อจำกัดของนโยบายทั่วทั้งองค์กร
-
กำหนดข้อจำกัดต่อไปนี้ในนโยบายขององค์กร
ต้องใช้ตัวแทนบริการ Firestore เพื่อนําเข้า/ส่งออก (
firestore.requireP4SAforImportExport
)ข้อจำกัดนี้กำหนดให้การดำเนินการนำเข้าและส่งออกต้องใช้ตัวแทนบริการ Cloud Firestore เพื่อให้สิทธิ์คำขอ หากต้องการตั้งข้อจำกัดนี้ โปรดดูหัวข้อ การสร้างและจัดการนโยบายขององค์กร
การใช้ข้อจำกัดของนโยบายองค์กรนี้ไม่ได้ให้สิทธิ์เข้าถึงที่เก็บข้อมูล Cloud Storage ที่เหมาะสมแก่ตัวแทนบริการ Cloud Firestore โดยอัตโนมัติ
หากข้อจำกัดสร้างข้อผิดพลาดเกี่ยวกับสิทธิ์สำหรับเวิร์กโฟลว์การนำเข้าหรือส่งออก คุณสามารถปิดใช้ข้อจำกัดเพื่อกลับไปใช้บัญชีบริการเริ่มต้นได้ หลังจากตรวจสอบและอัปเดตสิทธิ์ของที่เก็บข้อมูล Cloud Storage แล้ว คุณจะเปิดใช้ข้อจำกัดอีกครั้งได้