ประสบการณ์ของฉันกับ Postgres และ Mongo หลังจากทำงานกับทั้งฐานข้อมูลในโครงการของฉัน
Postgres (RDBMS)
ขอแนะนำให้ใช้ Postgres หากแอปพลิเคชันในอนาคตของคุณมีสคีมาที่ซับซ้อนซึ่งต้องการการรวมจำนวนมากหรือข้อมูลทั้งหมดมีความสัมพันธ์หรือหากเรามีการเขียนจำนวนมาก Postgres เป็นโอเพ่นซอร์สที่เร็วกว่าสอดคล้องกับ ACID และใช้หน่วยความจำบนดิสก์น้อยลงและมีประสิทธิภาพที่ดีสำหรับการจัดเก็บ JSON และรวมถึงความสามารถในการทำธุรกรรมแบบอนุกรมเต็มรูปแบบด้วยการแยกธุรกรรม 3 ระดับ
ข้อดีที่สุดของการอยู่กับ Postgres คือเรามีสิ่งที่ดีที่สุดจากทั้งสองโลก เราสามารถจัดเก็บข้อมูลลงใน JSONB โดยมีข้อ จำกัด ความสอดคล้องและความเร็ว ในทางกลับกันเราสามารถใช้คุณสมบัติ SQL ทั้งหมดสำหรับข้อมูลประเภทอื่น ๆ เอ็นจิ้นพื้นฐานมีความเสถียรมากและทำงานได้ดีกับปริมาณข้อมูลที่หลากหลาย นอกจากนี้ยังทำงานบนฮาร์ดแวร์และระบบปฏิบัติการที่คุณเลือก Postgres ให้ความสามารถ NoSQL พร้อมกับการรองรับธุรกรรมเต็มรูปแบบการจัดเก็บเอกสาร JSON โดยมีข้อ จำกัด เกี่ยวกับข้อมูลฟิลด์
ข้อ จำกัด ทั่วไปสำหรับ Postgres
การปรับขนาด Postgres ในแนวนอนนั้นยากกว่ามาก แต่ทำได้
การดำเนินการอ่านอย่างรวดเร็วไม่สามารถทำได้อย่างสมบูรณ์กับ Postgres
ไม่มีฐานข้อมูล SQL
Mongo DB (เสือมีสาย)
MongoDB อาจเอาชนะ Postgres ในมิติของ "สเกลแนวนอน" การจัดเก็บ JSON เป็นสิ่งที่ Mongo ได้รับการปรับให้เหมาะสม Mongo จัดเก็บข้อมูลในรูปแบบไบนารีที่เรียกว่า BSONb ซึ่ง (โดยประมาณ) เป็นเพียงการแทนค่าไบนารีของส่วนเหนือของ JSON MongoDB จัดเก็บวัตถุตรงตามที่ออกแบบไว้ จากข้อมูลของ MongoDB สำหรับแอปพลิเคชันที่เน้นการเขียน Mongo กล่าวว่าเอ็นจิ้นใหม่ (Wired Tiger) ช่วยให้ผู้ใช้มีประสิทธิภาพในการเขียนเพิ่มขึ้นถึง 10 เท่า (ฉันควรลองสิ่งนี้) โดยลดการใช้พื้นที่จัดเก็บลง 80 เปอร์เซ็นต์ช่วยลดต้นทุนในการจัดเก็บ บรรลุการใช้ประโยชน์จากฮาร์ดแวร์มากขึ้น
ข้อ จำกัด ทั่วไปของ MongoDb
การใช้เครื่องมือจัดเก็บสคีมาน้อยนำไปสู่ปัญหาของสคีมาโดยนัย สคีมาเหล่านี้ไม่ได้กำหนดโดยเครื่องมือจัดเก็บข้อมูลของเรา แต่ถูกกำหนดตามพฤติกรรมและความคาดหวังของแอปพลิเคชัน
เทคโนโลยี NoSQL แบบสแตนด์อะโลนไม่เป็นไปตามมาตรฐาน ACID เนื่องจากพวกเขาเสียสละการปกป้องข้อมูลที่สำคัญเพื่อสนับสนุนประสิทธิภาพปริมาณงานสูงสำหรับแอปพลิเคชันที่ไม่มีโครงสร้าง การใช้ ACID กับฐานข้อมูล NoSQL ไม่ใช่เรื่องยาก แต่จะทำให้ฐานข้อมูลช้าและไม่ยืดหยุ่นในระดับหนึ่ง “ ข้อ จำกัด NoSQL ส่วนใหญ่ได้รับการปรับให้เหมาะสมในเวอร์ชันที่ใหม่กว่าและเวอร์ชันที่ออกใหม่ซึ่งเอาชนะข้อ จำกัด ก่อนหน้านี้ไปได้มาก”