ชุดจำลองหมายความว่าคุณมี MongoDB หลายอินสแตนซ์ซึ่งแต่ละมิเรอร์ข้อมูลทั้งหมดของกันและกัน ชุดแบบจำลองประกอบด้วยอาจารย์หนึ่งคน (เรียกอีกอย่างว่า "หลัก") และหนึ่งหรือมากกว่าหนึ่งทาส (aka รอง) การอ่านการดำเนินการสามารถให้บริการโดยทาสใด ๆ ดังนั้นคุณสามารถเพิ่มประสิทธิภาพการอ่านได้โดยการเพิ่มทาสมากขึ้นในชุดแบบจำลอง แต่การดำเนินการเขียนจะเกิดขึ้นกับต้นแบบของชุดจำลองและจะแพร่กระจายไปยังทาสดังนั้นการเขียนจะไม่เร็วขึ้นเมื่อคุณเพิ่มทาสมากขึ้น
ชุดแบบจำลองยังมีการยอมรับข้อผิดพลาด เมื่อหนึ่งในสมาชิกของชุดแบบจำลองลงไปคนอื่น ๆ เข้ามาแทนที่ เมื่อนายลงไปทาสจะเลือกนายใหม่ ด้วยเหตุนี้จึงแนะนำให้การปรับใช้ที่มีประสิทธิผลให้ใช้ MongoDB เป็นชุดแบบจำลองของเซิร์ฟเวอร์อย่างน้อยสามตัวโดยสองตัวจัดเก็บข้อมูลไว้ (ตัวที่สามเป็นตัว "arbiter" ที่ไม่มีข้อมูลซึ่งจำเป็นสำหรับการพิจารณาต้นแบบใหม่เมื่อ ทาสคนหนึ่งลงไป)
Sharded คลัสเตอร์หมายความว่าชิ้นส่วนของแต่ละกลุ่ม (ซึ่งอาจจะเป็นแบบจำลองชุด) ดูแลส่วนหนึ่งของข้อมูล แต่ละคำร้องขอทั้งอ่านและเขียนให้บริการโดยคลัสเตอร์ที่มีข้อมูลอยู่ ซึ่งหมายความว่าทั้งการอ่านและการเขียนสามารถเพิ่มขึ้นได้โดยการเพิ่มเศษเพิ่มเติมลงในคลัสเตอร์ เอกสารใดที่อยู่บนเศษซึ่งจะถูกกำหนดโดยคีย์ shardของแต่ละคอลเลกชัน ควรเลือกในลักษณะที่ข้อมูลสามารถกระจายอย่างเท่าเทียมกันในทุกกลุ่มและเพื่อให้มีความชัดเจนสำหรับการค้นหาที่พบบ่อยที่สุดที่มี shard-key อยู่ (ตัวอย่าง: เมื่อคุณค้นหาบ่อยๆuser_name
shard-key ของคุณควรรวม เขตข้อมูลuser_name
เพื่อให้แบบสอบถามแต่ละรายการสามารถมอบหมายให้เพียงหนึ่งเศษซึ่งมีเอกสารนั้น)
ข้อเสียเปรียบคือการยอมรับความผิดพลาดทนทุกข์ทรมาน เมื่อส่วนหนึ่งของคลัสเตอร์ล้มเหลวข้อมูลใด ๆ ในคลัสเตอร์จะไม่สามารถเข้าถึงได้ ด้วยเหตุผลนั้นสมาชิกของคลัสเตอร์แต่ละคนควรเป็นชุดเรพลิกา สิ่งนี้ไม่จำเป็น เมื่อคุณไม่สนใจเกี่ยวกับความพร้อมสูงเป็นสะเก็ดยังสามารถเป็นตัวอย่าง mongod เดียวโดยไม่มีการจำลองแบบ แต่สำหรับการใช้งานจริงคุณควรใช้การจำลองแบบเสมอ
ดังนั้นสิ่งที่มีความหมายสำหรับตัวอย่างของคุณ?
Sharded Cluster
/ | \
Shard A Shard B Shard C
/ \ / \ / \
+-------+ +---------+ +-------+ +---------+ +-------+ +---------+
|Primary| |Secondary| |Primary| |Secondary| |Primary| |Secondary|
| 25GB |=| 25GB | | 25 GB |=| 25 GB | | 25GB |=| 25GB |
+-------+ +---------+ +-------+ +---------+ +-------+ +---------+
เมื่อคุณต้องการแบ่งข้อมูลของคุณ 75GB ออกเป็น 3 ส่วนของ 25GB แต่ละตัวคุณต้องมีเซิร์ฟเวอร์ฐานข้อมูลอย่างน้อย 6 ตัวที่จัดอยู่ในชุดแบบจำลองสามชุด แต่ละชุดเรพลิกาประกอบด้วยเซิร์ฟเวอร์สองตัวที่มีข้อมูล 25GB เหมือนกัน
คุณยังต้องการเซิร์ฟเวอร์สำหรับอนุญาโตตุลาการของชุดจำลองสามชุดรวมถึงเราเตอร์ mongos และเซิร์ฟเวอร์ปรับแต่งสำหรับคลัสเตอร์ อนุญาโตตุลาการมีน้ำหนักเบามากและจำเป็นเฉพาะเมื่อสมาชิกชุดแบบจำลองลดลงดังนั้นพวกเขาจึงมักจะสามารถแบ่งปันฮาร์ดแวร์เดียวกันกับสิ่งอื่น แต่เราเตอร์ Mongos และ config-server ควรซ้ำซ้อนและบนเซิร์ฟเวอร์ของตัวเอง