การโหลดข้อมูลจำนวนมากไปยัง Cloud Firestore ด้วยเครื่องมืออย่าง mongoimport และ mongorestore
Cloud Firestore เป็นระบบที่มีการกระจายสูงซึ่งมีการปรับขนาดอัตโนมัติเพื่อตอบสนองความต้องการของธุรกิจ Cloud Firestore จะแยกและรวมข้อมูลของคุณแบบไดนามิกตามโหลดที่ระบบได้รับ
การแยกตามโหลดจะเกิดขึ้นโดยอัตโนมัติโดยไม่ต้องมีการกำหนดค่าล่วงหน้า ระบบการแยกตามโหลดของ Cloud Firestore มีลักษณะเฉพาะที่สำคัญบางประการเมื่อเทียบกับฐานข้อมูลเอกสารอื่นๆ ซึ่งคุณควรคำนึงถึงเมื่อสร้างโมเดลข้อมูล
ลักษณะการกระจายของ Cloud Firestore อาจต้องมีการเปลี่ยนแปลงตัวเลือกการออกแบบบางอย่างเพื่อทำการเปลี่ยนแปลง โดยเฉพาะอย่างยิ่งสำหรับเวิร์กโหลดที่ได้รับการเพิ่มประสิทธิภาพสำหรับฐานข้อมูลที่ตัวจำลองหลักเป็นจุดคอขวดสำหรับอัตราการส่งข้อมูลการเขียน
แนวทางปฏิบัติแนะนำ
ภาระงานที่ประมวลผลข้อมูลจำนวนมากในไคลเอ็นต์แบบชุดข้อความเดียวอาจทำให้เกิดคอขวดได้ ไคลเอ็นต์อาจใช้เทรดเดียวเพื่อโหลดข้อมูลจำนวนมากได้ เนื่องจากอัตราการส่งข้อมูลของไคลเอ็นต์และเซิร์ฟเวอร์ตรงกันในลักษณะเดียวกัน ฐานข้อมูล Cloud Firestore สามารถจัดการการทำงานพร้อมกันได้มากขึ้นอย่างมาก แต่คุณต้องกำหนดค่าไคลเอ็นต์ให้ส่งคำขอพร้อมกัน
mongoimport
เมื่อใช้เครื่องมือ mongoimport ระบบจะส่งคำขอตามลำดับโดยค่าเริ่มต้น หากต้องการปรับปรุงเวลาในการโหลดไปยัง Cloud Firestore ให้ตั้งค่าจำนวนผู้ปฏิบัติงานด้วยแฟล็ก --numInsertionWorkers การตั้งค่าที่ถูกต้องอาจต้องมีการปรับแต่งตามขนาดของไคลเอ็นต์
mongorestore
เมื่อใช้เครื่องมือ mongorestore ให้นำพารามิเตอร์ retryWrites=false ออกจากสตริงการเชื่อมต่อเพื่อปรับปรุงความยืดหยุ่นต่อความล้มเหลวชั่วคราว
หากต้องการปรับปรุงเวลาในการโหลดลงใน Cloud Firestore คุณยังสามารถเพิ่มจำนวนตัวแทรกต่อคอลเล็กชันด้วยแฟล็ก --numInsertionWorkersPerCollection และจำนวนคอลเล็กชันที่ทำงานพร้อมกันด้วยแฟล็ก --numParallelCollections ได้ด้วย การตั้งค่าที่ถูกต้องอาจต้องมีการปรับแต่งตามขนาดของไคลเอ็นต์
การเขียนโปรแกรมแบบไม่พร้อมกัน
เมื่อพัฒนาซอฟต์แวร์ของคุณเองโดยใช้การดำเนินการที่เข้ากันได้กับ MongoDB คุณสามารถปรับปรุงการทำงานพร้อมกันได้ด้วยวิธีต่อไปนี้
- เฟรมเวิร์กแบบไม่พร้อมกัน: การใช้เฟรมเวิร์กแบบไม่พร้อมกันช่วยให้คุณประมวลผลและตอบสนองต่อคำขอพร้อมกันได้ คุณไม่จำเป็นต้องพัฒนาการรวมหรือการจัดคิวที่ซับซ้อนเมื่อทำการเรียกไปยังฐานข้อมูล แต่ละขั้นตอนของคำขอสามารถใช้การเชื่อมต่อแบบอิสระและทำการเรียกใช้ฐานข้อมูลแบบคู่ขนานได้
- ใช้ข้อเสนอการประมวลผลแบบขนาน: การใช้บริการอย่าง Cloud Run จะช่วยให้ระบบปรับขนาดจำนวนผู้ปฏิบัติงานด้านการประมวลผลที่จำเป็นต่อการประมวลผลข้อมูลได้
ข้อผิดพลาดชั่วคราว
เมื่อทำงานกับระบบแบบกระจายขนาดใหญ่อย่าง Cloud Firestore คุณอาจพบความล้มเหลวชั่วคราว เช่น ความผิดพลาดของเครือข่ายหรือการแย่งชิงทรัพยากรในเอกสาร
เมื่อโหลดข้อมูลจำนวนมากพร้อมกัน คุณต้องรักษากลยุทธ์การลองใหม่สำหรับการเขียนที่ล้มเหลวโดยไม่ทำให้การดำเนินการโหลดข้อมูลจำนวนมากที่ใหญ่กว่าล้มเหลว