ความเป็นมา
ฉันกำลังสร้างต้นแบบการแปลงจากฐานข้อมูล RDBMS ของเราเป็น MongoDB ในขณะที่การทำให้เป็นปกติดูเหมือนว่าฉันมีสองทางเลือกทางเลือกหนึ่งซึ่งนำไปสู่เอกสารขนาดเล็กจำนวนมาก (หลายล้าน) หรืออีกทางหนึ่งซึ่งนำไปสู่เอกสารขนาดใหญ่น้อยลง (หลายแสน)
ถ้าฉันสามารถกลั่นมันให้เป็นอะนาล็อกธรรมดาได้ก็จะมีความแตกต่างระหว่างคอลเล็กชันที่มีเอกสารของลูกค้าน้อยกว่าเช่นนี้ (ใน Java):
คลาสลูกค้า { ชื่อสตริงส่วนตัว ที่อยู่ส่วนตัว // CreditCard แต่ละรายการมีอินสแตนซ์การชำระเงินหลายร้อยรายการ ชุดส่วนตัว <CreditCard> creditCards; }
หรือคอลเลกชันที่มีเอกสารการชำระเงินจำนวนมากเช่นนี้:
class Payment { ลูกค้าลูกค้าส่วนตัว CreditCard ส่วนตัว creditCard; วันที่ส่วนตัว payDate; ส่วนตัวลอย payAmount; }
คำถาม
MongoDB ออกแบบมาเพื่อรองรับเอกสารขนาดเล็กจำนวนมากหรือเอกสารขนาดใหญ่น้อยกว่าหรือไม่? คำตอบส่วนใหญ่ขึ้นอยู่กับคำถามที่ฉันวางแผนจะเรียกใช้หรือไม่? (เช่นลูกค้า X มีบัตรเครดิตกี่ใบเทียบกับจำนวนเงินเฉลี่ยที่ลูกค้าจ่ายทั้งหมดในเดือนที่แล้ว?)
ฉันมองไปรอบ ๆ มากมาย แต่ฉันไม่ได้สะดุดกับแนวทางปฏิบัติที่ดีที่สุดของ MongoDB schema ที่จะช่วยฉันตอบคำถามของฉัน