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