เมื่อไหร่ควรใช้ SQL และเมื่อไหร่ควรใช้ NoSQL

Sakul Montha
2 min readJun 3, 2022

ในการพัฒนาซอฟต์แวร์ซักชิ้นนึง เมื่อมีความจำเป็นต้องเชื่อมต่อระบบฐานข้อมูล สิ่งนึงที่ถือเป็นสิ่งสำคัญเลยก็คือ การเลือกใช้ Database ที่เหมาะสมกับงาน

ปัจจุบัน Database มีให้เราเลือกใช้มากมาย แต่ละเจ้าก็มีทั้งข้อดี และข้อสังเกตุที่แตกต่างกันออกไป ซึ่งเราแบ่งระบบ Database ได้ออกเป็น 2 หมวดใหญ่ ๆ นั่นก็คือ SQL และ NoSQL

อย่างที่ได้กล่าวไปข้างต้นว่า ระบบฐานข้อมูลในปัจจุบันมีให้เลือกใช้มากมายขึ้นอยู่กับงานนั้น ๆ ว่าเหมาะสมที่จะใช้ระบบฐานข้อมูลแบบไหน วันนี้เราจะมาดูกันว่า แล้วเมื่อไหร่ ที่เราควรใช้ SQL เมื่อไหร่ใช้ NoSQL

เนื้อหาไม่เกี่ยวกับภาพ คนเขียนเป็นแฟนแมนยูเฉย ๆ

SQL and No-SQL

ก่อนอื่นเลย เราต้องรู้ก่อนว่า SQL และ NoSQL คืออะไร

  1. SQL หรือ Structured Query Language เป็นระบบฐานข้อมูลที่ใช้กันมาอย่างยาวนาน ตั้งแต่ยุค 1970 มีการเก็บข้อมูลเป็น RDBMS (Relational Database Management System) ในขณะที่ NoSQL นั้นเป็นแบบ Non-relational
  2. SQL กำหนดการสร้าง Schema เอาไว้ล่วงหน้าแบบ Structured ในขณะที่ NoSQL จะเป็นการใช้ Dynamic schema สำหรับข้อมูลที่เป็น Unstructured
  3. SQL สามารถ Scale ได้แบบ Vertically (แนวตั้ง) ส่วน NoSQL สามารถ Scale ได้แบบ Horizontal (แนวนอน) อะไรคือ แนวตั้งแนวนอน (จริง ๆ ทั้ง SQL และ NoSQL ต่างก็สามารถ Scale ได้ทั้งสองแบบทั้งคู่ แต่มันมีคำว่า แต่ ซึ่งมันจะยาว อันนี้สั้น ๆ นะครับ เอาเป็นว่ามันทำได้เหมือนกัน) ส่วนอะไรคือ Vertically และ Horizantal คืออะไรสามารถอ่านได้จาก Link references
  4. SQL เก็บข้อมูลแบบ Table-base มี Row-Column ถ้าให้ง่ายก็นึกถึง Excel ในขณะที่ NoSQL สามารถเก็บข้อมูลได้หลายรูปแบบ เช่น Documents, Key-value, wide-column
  5. SQL มีข้อดีที่สามารถเก็บข้อมูลได้แบบ Multi-row ในขณะที่ NoSQL ดีตรงที่สามารถเก็บข้อมูลได้แบบ Unstructured เช่น Documents หรือ JSON

ตัวอย่างของ SQL databases MySQL, PostgreSQL, Microsoft SQL Server, Oracle เป็นต้น

ตัวอย่างของ NoSQL MongoDB, Redis, RavenDB, Cassandra, HBase, CouchDB, Neo4j เป็นต้น

ใช้อะไร ตอนไหน

ใช้ SQL เมื่อข้อมูลมีรูปแบบโครงสร้างที่ชัดเจน ข้อมูลที่มี Relation ถึงกัน และเป็นไปตาม Condition ที่ต้องการ ข้อมูลที่มีการ Query และออก Report

ใช้ No-SQL เมื่อข้อมูลเป็นแบบ Dynamic ข้อมูลที่ ไม่ค่อยมี Relation กัน (ไม่ใช่ว่ามีไม่ได้นะ) ต้องการให้ Write ไว ๆ หรือ Read ไว ๆ ในบางกรณี ขึ้นอยู่กับว่าใช้ No-SQL แบบไหน

อันที่จริง Database แต่ละตัว ไม่ว่าจะ SQL หรือ No-SQL ต่างก็มีความแตกต่างกันด้วยกันทั้งนั้น ควรศึกษาให้ดีก่อนเลือกใช้ด้วยนะครับ

Conclusion

เราควรเข้าใจการทำงาน หรือนิสัยของ Database แต่ละชนิดก่อนเลือกใช้ ไม่ใช่ใช้เพราะมันใหม่ หรือมันเท่ การเลือกใช้ Database ให้ถูกกับงานจะทำให้เราได้รีดประสิทธิภาพของ Database แต่ละชนิดได้อย่างเต็มที่

สวัสดีครับ

--

--

Sakul Montha

Chief Product Officer, a man who’s falling in love with the galaxy.