เมื่อไหร่เราควรใช้ Relational Database กันนะ?

ในการออกแบบ หรือทำพวก 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 มากนัก

คิดว่าไงกันบ้าง? :grinning_face_with_smiling_eyes:

คำถามนี้สร้าง civil war ได้เลยนะเนี่ย 5555

เราว่าต้องมองก่อน ว่า จะใช้ database เป็น application backend หรือ analytics databasee
ส่วนใหญ่จะติดเรื่องของ scaling กับ schema constraint
เอาแบบกว้างๆ ก็แบบที่พี่กานพูด

ที่จะเจอส่วนใหญ่คือ ขนาดข้อมูลเข้าใกล้แดน big data แต่ยังไม่ยอมย้าย stack เพราะกลัวการเปลี่ยนแปลง อันนี้ก็ยากหน่อย แหะๆ อันนี้ค่อนข้างน่ากลัว เพราะเป็น tech debt ที่อันตรายตัวนึง

บางทีตอนเริ่มทำ data platform ก็อาจจะต้องดูด้วย ว่า data volume trajectory เป็นยังไง ถ้ามีแนวเข้าใกล้ big data แต่ยังคิดว่า อาจจะไปเปลี่ยนเป็น big data solution ตอนหลัง อาจจะไม่ทันการ

1 Like