แนวทางปฏิบัติแนะนำสำหรับการโหลดข้อมูลจำนวนมาก

การโหลดข้อมูลจำนวนมากไปยัง 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 คุณอาจพบความล้มเหลวชั่วคราว เช่น ความผิดพลาดของเครือข่ายหรือการแย่งชิงทรัพยากรในเอกสาร

เมื่อโหลดข้อมูลจำนวนมากพร้อมกัน คุณต้องรักษากลยุทธ์การลองใหม่สำหรับการเขียนที่ล้มเหลวโดยไม่ทำให้การดำเนินการโหลดข้อมูลจำนวนมากที่ใหญ่กว่าล้มเหลว