ในการออกแบบ หรือทำพวก data modeling เราจะนำเอา relational database มาใช้ในการแก้ปัญหาเมื่อ
- เราต้องการโมเดลตัวข้อมูล ไม่ใช่โมเดลการ query ข้อมูล ตรงนี้สำคัญมาก เพราะว่าการนำข้อมูลไปใช้จะแตกต่างกัน ซึ่ง relational database เหมาะกับการโมเดลตัวข้อมูล
- เมื่อต้องมีการ JOIN กันของข้อมูล
- เมื่อมีเรื่องของ aggregations กับ analytics เข้ามาเกี่ยวข้อง
- ข้อมูลไม่เยอะมากขนาด big data
- ต้องการความ ACID
และเมื่อไหร่ที่เรา “ไม่” ควรใช้
- เรามีข้อมูลเยอะมากมหาศาล เพราะว่าการ scale ตัว relational database ส่วนใหญ่เราจะต้อง scale แบบ vertically ซึ่งจะมีค่าใช้จ่ายที่แพงมาก
- เมื่อข้อมูลออกแนว unstructured ซึ่งตรงนี้ relational database ไม่ได้ถูกออกแบบมาเพื่อเก็บข้อมูลประเภทนี้
- Schema ของข้อมูลมีหลากหลาย
- ต้องการ high availability (HA)
- ต้องการ scale แบบ horizontally
จริงๆ ถึงแม้ว่าในปัจจุบัน relational database บน cloud อย่าง AWS ก็สามารถ scale แบบ horizontally ได้แล้ว เช่น เพิ่มจำนวน read replica เข้าไป แต่ก็อาจจะไม่ได้ตอบโจทย์ในเรื่องของ big data มากนัก
คิดว่าไงกันบ้าง?