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