Screen Shot 2558-08-11 at 12.30.16 PM
ในปัจจุบัน Database หรือ ฐานข้อมูล
มันมีรูปแบบการจัดเก็บให้เลือกเยอะมาก ๆ
ไม่ว่าจะเป็น Relational หรือ เชิงความสัมพันธ์
หรือที่เราเรียกว่า RDBMS (Relational Database Management System)
เช่น Oracle, MySQL และ PostgreSQL เป็นต้น
รวมทั้งยังมีพวก

  • Document-Oriented
  • Columnar
  • Key-Value
  • XML
  • Graph

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

  • Indexing
  • Schema
  • รูปแบบการดึงข้อมูล
  • Data sharding
  • Replication
  • Scalability

เนื่องจากมันมีตัวเลือกเยอะเหลือเกิน !!
คำถามที่น่าสนใจ คือ เราจะเลือกใช้แบบไหนดีล่ะ ?
ตอบง่าย ๆ แต่ทำยากคือ เอาที่เหมาะสมกับงานก็แล้วกัน

ตัวอย่างของ Database ชนิดต่าง ๆ

  • Document oriented หรือ จัดเก็บในรูปแบบเอกสาร เช่น MongoDB, CouchDB และ SimpleDB เป็นต้น
  • Columnar เช่น BigTable และ HBase เป็นต้น
  • Key-Value เช่น MemcachedDB, Redis และ Riak เป็นต้น
  • XML เช่น MarkLogic, BaseX และ eXist เป็นต้น
  • Graph เช่น Neo4j, GraphDB และ Giraph เป็นต้น

เป็นเวลายาวนานมากที่ระบบส่วนใหญ่

ใช้งาน RDBMS และ SQL สำหรับการจัดเก็บข้อมูล
แน่นอนว่า ไม่มีใครมาแข่งกับมันได้เลย

แต่เมื่อวันเวลาผ่านไป เทคโนโลยีเปลี่ยนไป
ทั้งเรื่องจำนวนข้อมูลที่มากขึ้นจาก Social network และ IoT (Internet of Things)
ปัญหาเรื่องของ Scalability และ Flexibility จึงเกิดขึ้น
ซึ่ง RDBMS อาจจะไม่สามารถรองรับความต้องการเหล่านั้นได้ดีนัก
จึงมีคนคิดค้นวิธีการใหม่ ๆ ขึ้นมา เช่น

  • รูปแบบการจัดเก็บข้อมูล
  • วิธีการประมวลผลข้อมูลขนาดใหญ่ แบบ real-time
  • วิธีการวิเคราะห์ข้อมูลขนาดใหญ่

ถามว่า RDBMS ไม่สนับสนุนหรือไง ?
ตอบได้เลยว่ามันรองรับได้นะ
แต่มันไม่ได้ออกแบบมาในรูปแบบใหม่ ๆ เท่านั้นเอง
ดังจะเห็นได้ว่า RDBMS ต่าง ๆ ได้ออกความสามารถมาเพื่อรองรับเช่นกัน

เมื่อมีวิธีการที่หลากหลาย จึงมีคนช่วยจัดกลุ่มมันซะ

ไว้ในชื่อที่ฟังคุ้นหู นั่นก็คือ NoSQL นั่นเอง
โดยคนแรกที่พูดขึ้นมาคือ คุณ Carlo Strozzi ในปี 1998

มาดู RDBMS กันก่อน
ข้อมูลอยู่ในรูปแบบเชิงความสัมพันธ์ ซึ่งฟังดูวิชาการไปหน่อย
เอาใหม่ อยู่ในรูปแบบของตารางซึ่งมี 2 มิติ คือ row และ column
มันแจ่มมากสำหรับการจัดเก็บข้อมูลที่มีโครงสร้างที่ชัดเจน
ทำให้ข้อมูลมันมีรูปแบบมาตรฐานเหมือนกัน

ตัวอย่างเช่น
ข้อมูล transaction ลูกค้าของธนาคาร เป็นต้น

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

มีอะไรที่เอามาเป็นทางเลือกของ RDBMS ได้บ้างล่ะ ?
หนึ่งในนั้นคือ NoSQL
แน่นอนว่า มันไม่ได้ใช้ SQL
แต่ได้ทำการเสนอวิธีการใหม่ ๆ ที่ RDBMS ทำไม่ได้ หรือ ยากขึ้นมา
โดยมีเป้าหมายหลัก ๆ เพื่อ

  • High scalability
  • Administration
  • ดูแลรักษาได้ง่าย
  • ค่าใช้จ่ายที่ถูกลง
  • Flexible data model
  • ลดเวลาในการพัฒนา นั่นคือพัฒนาระบบงานได้รวดเร็วขึ้น
  • ความเร็วของการทำงานที่สูงขึ้น

ในปัจจุบันนั้นมี NoSQL ไม่กี่ตัวเท่านั้นที่ได้รับความนิยม
แต่ก็มีแนวโน้มการใช้งานที่สูงขึ้น เช่น

  • MongoDB
  • CouchDB
  • Cassandra

Screen Shot 2558-08-11 at 12.59.30 PM

โดยสรุปแล้ว

RDBMS นั้นก็ยังคงเป็นรูปแบบการจัดเก็บข้อมูลที่ได้รับความนิยมสูงสุด
แต่แนวโน้มการใช้งานไม่สูงขึ้นแบบในอดีตเท่านั้นเอง
ดังนั้นสิ่งที่ RDBMS ต้องปรับตัวคือ
การนำความสามารถจาก NoSQL เข้ามาใส่ตัวเอง

ส่วน NoSQL แต่ละตัวล้วนมีข้อดี และ ข้อเสีย
เนื่องจากมันถูกสร้างขึ้นมาเพื่อแก้ไขปัญหาเฉพาะอย่าง
ดังนั้น ผู้นำไปใช้งานต้องศึกษา และ ทำความเข้าใจให้ดี
เพื่อนำไปใช้งานได้อย่างเหมาะสม

โดยระบบส่วนใหญ่
มักจะใช้งานทั้ง RDBMS และ NoSQL เพื่อช่วยเหลืองานซึ่งกันและกัน
บางคนเรียกว่า Polyglot Database นั่นเอง

Reference Websites
The Future is for NoSQL Data Storage model!
Database expert on why NoSQL mattered — and SQL still matters
NoSQL databases eat into the relational database market