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

เกี่ยวข้องกับ Cloud Firestore Enterprise Edition เท่านั้น

หน้านี้อธิบายแนวทางปฏิบัติแนะนำเมื่อโหลดข้อมูลจำนวนมากไปยัง Cloud Firestore ที่เข้ากันได้กับ MongoDB ด้วยเครื่องมือต่างๆ เช่น mongoimport

Cloud Firestore เป็นระบบที่มีการกระจายสูงซึ่งมีการปรับขนาดอัตโนมัติ เพื่อตอบสนองความต้องการของธุรกิจ Cloud Firestore แยกและรวมข้อมูลแบบไดนามิก ตามภาระงานที่ระบบได้รับ

การแยกตามภาระงานจะเกิดขึ้นโดยอัตโนมัติโดยไม่ต้องมีการกำหนดค่าล่วงหน้า Cloud Firestoreระบบการแยกตามภาระงานมีลักษณะเฉพาะที่สำคัญบางอย่างเมื่อเทียบกับฐานข้อมูลเอกสารอื่นๆ ซึ่งคุณควรคำนึงถึงขณะสร้างโมเดลข้อมูล

Cloud Firestoreลักษณะการทำงานแบบกระจายอาจต้องมีการเปลี่ยนแปลงตัวเลือกการออกแบบบางอย่าง โดยเฉพาะอย่างยิ่งสำหรับภาระงานที่ได้รับการเพิ่มประสิทธิภาพสำหรับ ฐานข้อมูลที่สำเนาข้อมูลหลักเป็นคอขวดสำหรับปริมาณการเขียน

แนวทางปฏิบัติแนะนำ

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

mongoimport

เมื่อใช้เครื่องมือ mongoimport ระบบจะส่งคำขอตามลำดับโดยค่าเริ่มต้น หากต้องการปรับปรุงเวลาในการโหลดลงใน Cloud Firestore ให้ตั้งค่าจำนวนผู้ปฏิบัติงานด้วยแฟล็ก --numInsertionWorkers การตั้งค่าที่ถูกต้องอาจต้องมีการปรับตามขนาดของไคลเอ็นต์ แต่โดยทั่วไปเราขอแนะนำให้เริ่มต้นด้วย 32 เป็นอย่างน้อย

การเขียนโปรแกรมแบบไม่พร้อมกัน

เมื่อพัฒนาซอฟต์แวร์ของคุณเองโดยใช้ API ที่เข้ากันได้กับ MongoDB คุณจะปรับปรุง การทำงานแบบคู่ขนานได้ด้วยวิธีต่อไปนี้

  • เฟรมเวิร์กแบบอะซิงโครนัส: การใช้เฟรมเวิร์กแบบอะซิงโครนัสช่วยให้คุณประมวลผลและตอบกลับคำขอได้แบบขนาน คุณไม่จำเป็นต้อง พัฒนาการจัดกลุ่มหรือการจัดคิวที่ซับซ้อนเมื่อทำการเรียกไปยังฐานข้อมูล โฟลว์คำขอแต่ละรายการสามารถใช้การเชื่อมต่ออิสระและทำการเรียกฐานข้อมูลแบบขนานได้
  • ใช้ข้อเสนอการประมวลผลแบบคู่ขนาน: การใช้บริการอย่าง Cloud Run ระบบจะปรับขนาดจำนวนผู้ปฏิบัติงานด้านการคำนวณที่จำเป็นต่อการประมวลผลข้อมูลได้

การทำงานล้มเหลวชั่วคราว

เมื่อทำงานกับระบบแบบกระจายขนาดใหญ่ เช่น Cloud Firestore คุณอาจพบ ความล้มเหลวชั่วคราว เช่น เครือข่ายขัดข้องหรือการแย่งกันเข้าถึง เอกสาร

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