ฐานข้อมูลเช่น MongoDB นั้นยอดเยี่ยมเมื่อคุณมักจะรู้ว่าข้อมูลของคุณอยู่ที่ไหน (ตรงข้ามกับที่จำเป็นต้องเขียนแบบสอบถามที่ซับซ้อนหลายรายการ) ด้วย Mongo ข้อมูล "ที่เกี่ยวข้อง" จะซ้อนกันในข้อมูลหลักหรือมีคีย์หลัก / ต่างประเทศ นี่เป็นสิ่งที่ดีหากคุณมีโพสต์และความคิดเห็น โดยทั่วไปคุณจะไม่แสดงความคิดเห็นนอกบริบทของโพสต์ดังนั้นจึงเหมาะสมที่ความคิดเห็นนั้นมีอยู่ในโพสต์ (วิธีที่คุณได้รับความคิดเห็นทั้งหมดสำหรับโพสต์โดยไม่จำเป็นต้องค้นหาตารางแยกต่างหาก)
MongoDB เป็น schemaless ซึ่งหมายความว่าจะใช้โครงสร้างข้อมูลใด ๆ ก็ตามที่คุณนำมาใช้เป็นส่วนใหญ่
ในทางกลับกันถ้าคุณจำเป็นต้องใช้ฟังก์ชั่นรวมและรู้สึกว่าจำเป็นต้องค้นหาข้อมูลในรูปแบบที่ซับซ้อนซึ่งไม่สามารถทำได้ผ่านการฝังหรือความสัมพันธ์ง่ายๆใน Mongo นั่นคือเมื่อคุณรู้ว่าถึงเวลาที่จะใช้ RDBMS เช่น MySQL หรือ PostgreSQL
MongoDB ไม่ได้หมายถึงการแทนที่ SQL มันตอบสนองความต้องการที่แตกต่างกันและ MongoDB และ RDBMS สามารถใช้ร่วมกันได้ ในความคิดของฉัน MongoDB ไม่ใช่สิ่งที่จำเป็นถ้าคุณไม่ต้องการให้ข้อมูลของคุณมีความยืดหยุ่นหรือฝังอยู่ในเอกสารหลัก การพัฒนาด้วย MongoDB นั้นสนุกมากเพราะมีขั้นตอนที่เกี่ยวข้องน้อยกว่าในการทำให้โครงการ (พูดใน Rails) ทำงานได้ ต้องการเปลี่ยนแปลงหรือไม่? ไม่มีปัญหา. เพียงเพิ่มแอตทริบิวต์ให้กับโมเดลของคุณ เสร็จสิ้น
ฉันไม่สามารถพูดคุยกับฐานข้อมูล NoSQL อื่น ๆ ได้มากมาย แต่ฉันรู้ว่าพวกเขามักจะได้รับการออกแบบคล้ายกันเพื่อตอบสนองความต้องการเฉพาะที่ไม่สามารถพบได้โดย RDBMS บางคนอาศัยอยู่ในหน่วยความจำทั้งหมดหรือสามารถหักหรือปรับขนาดได้ง่ายมาก ฉันค่อนข้างแน่ใจว่า Cassandra ได้รับการออกแบบมาเพื่อดำเนินการต่อโดยไม่สูญเสียข้อมูลหากโหนดหยุดทำงาน โดยทั่วไป Redis จะเป็นที่เก็บค่าคีย์ที่อยู่ในหน่วยความจำ (โดยมีการเขียนดิสก์เป็นระยะเพื่อคงอยู่) แต่ก็มีความสามารถในการจัดเก็บชนิดข้อมูลเช่นชุดข้อมูลและเรียงลำดับ