ปัจจุบันนี้เทคโนโลยี Database นั้นถือว่าเติบโตเร็วและมีความหลากหลายมากกว่าแต่ก่อนเป็นอย่างมาก ดังนั้นในบทความนี้จึงได้ทำการสรุปเทคโนโลยีของทั้ง SQL, NoSQL และ NewSQL เพื่อให้ผู้อ่านพอมีความเข้าใจในระดับพื้นฐานสำหรับใช้ประกอบการตัดสินใจ หรือศึกษาต่อยอดต่อไปในอนาคตได้ด้วยตัวเอง พร้อมข้อดีข้อเสียของแต่ละเทคโนโลยี ดังต่อไปนี้ครับ
SQL
เทคโนโลยี Database พื้นฐานที่ทุกคนคงรู้จักกันดี แต่น้อยคนนักที่จะมีความเชี่ยวชาญ โดย SQL นี้ก็เป็นเทคโนโลยีหลักที่เราเห็นกันในแทบจะทุก Application ในปัจจุบัน ด้วยการทำงานเป็น Relational Database ที่มีการจัดเก็บไฟล์เป็นแบบตารางหรือ Strucutued Data / Schema-based เป็นหลัก ซึ่งถึงแม้ปัจจุบันจะมีความพยายามที่จะทำให้ SQL สามารถบันทึกข้อมูล Unstructured Data ได้ แต่ในหลายๆ ความสามารถสำหรับการจัดการ Unstructured Data นั้นก็ยังไม่เทียบเท่า NoSQL จริงๆ อยู่ดี
ข้อดี
- เป็นเทคโนโลยีที่มีการพัฒนาต่อเนื่องมานาน ทำให้มีความสามารถรอบด้าน โดยถูกออกแบบมาให้เป็น General Purpose รองรับการทำงานได้หลากหลาย
- สามารถทำงานร่วมกับ Hardware แบบเดิมๆ ได้ รวมถึงสามารถทำงานร่วมกับ Application และ Programming Language ได้หลากหลาย
- มีเครื่องมือสนับสนุนการใช้งานให้พร้อม ทั้งสำหรับการเสริมความทนทาน, การเพิ่มความปลอดภัย, การบริหารจัดการ และการดูแลรักษา
- ในระดับองค์กรก็มีผลิตภัณฑ์หลากหลายพร้อมบริการสนับสนุนให้อย่างครบครัน
ข้อเสีย
- ส่วนใหญ่จะไม่สามารถทำ Scale-out ได้อย่างยืดหยุ่นเท่ากับเทคโนโลยีฐานข้อมูลอื่นๆ ทำให้การออกแบบ SQL สำหรับรองรับผู้ใช้งานจำนวนมหาศาลในระบบใหญ่ๆ นั้นถือว่าค่อนข้างยาก
- การที่ต้องระบุ Schema ชัดเจนก็ทำให้การเพิ่มฟีลด์ของข้อมูลนั้นทำได้ลำบาก (ถึงแม้จะใช้ JSON ได้แต่ก็ไม่ยืดหยุ่นเท่าการใช้ NoSQL เต็มๆ อยู่ดี)
- การถูกออกแบบมาเป็น General Purpose นั้นก็ทำให้มีประสิทธิภาพสู้กับพวก NoSQL หรือ NewSQL ในงานเฉพาะทางบางอย่างไม่ได้
- การทำ Performance Tuning นั้นต้องอาศัยความรู้เป็นอย่างมาก
NoSQL
คำว่า NoSQL นี้อันที่จริงแล้วเป็นคำที่ใช้เรียกเทคโนโลยีที่ไม่ใช่ SQL แทบจะทั้งหมด ทำให้คำว่า NoSQL นั้นไม่มีมาตรฐานแต่อย่างใด แต่กล่าวโดยรวมก็คือ NoSQL มักจะเป็นเทคโนโลยีฐานข้อมูลที่ถูกออกแบบมาสำหรับงานเฉพาะทางบางอย่างที่ SQL ยังไม่สามารถตอบโจทย์ได้ดีเพียงพอ ตัวอย่างเช่น
- DynamoDB, Riak และ Cassandra ที่เน้นให้ฐานข้อมูลมีความทนทาน, สามารถบันทึกข้อมูลและเรียกอ่านข้อมูลได้ตลอดเวลา ถึงแม้ว่าข้อมูลที่ถูกอ่านออกไปนั้นจะไม่ใช่ข้อมูลล่าสุด
- MongoDB และ CouchDB ที่ต่อยอดจาก Key-Value ด้วยการบันทึกข้อมูลเป็น JSON ที่มีความยืดหยุ่นกว่าแทน พร้อมระบบ Sub-key และ Sub-Value ภายในกับการทำ Sharding ให้รองรับการบริการข้อมูลจำนวนมากด้วยความเร็วสูง
- Redis ที่ถูกออกแบบมาให้เป็น Key-Value ที่สามารถจัดการกับข้อมูลได้รวดเร็วและดีขึ้น โดยเป็นที่นิยมสำหรับการสร้างข้อมูลที่มีการเรียงลำดับหลายๆ ชุด สำหรับใช้ในการทำ Ranking และ Leaderboard รวมถึงยังมีความสามารถในการจัดเรียงและประมวลผลทางสถิติที่ซับซ้อน สำหรับนำไปใช้ใน Application เฉพาะทางบางอย่างได้ดี
- Neo4j เป็นฐานข้อมูลสำหรับการประมวลผลข้อมูลแบบ Graph โดยเฉพาะ
- Elasticsearch เป็นระบบฐานข้อมูลสำหรับการค้นหาข้อมูลแบบ Text โดยเฉพาะ
ข้อดี
- โดยมาก NoSQL มักถูกออกแบบมาให้มี Availability สูงมาก และ Scale ระบบเพื่อรองรับผู้ใช้งานจำนวนมากได้ง่าย ถึงแม้ระบบจะทำงานร่วมกันข้าม Data Center ก็ตาม
- NoSQL หลายๆ ระบบถูกออกแบบมาสำหรับ Unstructured Data โดยเฉพาะ เช่น ประมวลผล Log, XML, JSON และเอกสารต่างๆ ทำให้มีความยืดหยุ่นในการใช้งานเฉพาะทางแต่ละประเภทสูง
ข้อเสีย
- ส่วนใหญ่แล้ว NoSQL จะทำงานแบบ Non-transactional ดังนั้นถ้าหากข้อมูลมีความละเอียดสูงและผิดพลาดไม่ได้เลย NoSQL หลายๆ ระบบก็อาจจะไม่เหมาะในหลายๆ กรณี
- การเรียกอ่านข้อมูลขึ้นมาใช้ส่วนใหญ่มักจะมี Cost ที่สูงกว่าการใช้ SQL เพราะไม่สามารถเลือกเจาะจงได้อย่างง่ายๆ ว่าจะเรียกข้อมูลส่วนไหนขึ้นมา ยกเว้นสำหรับงานเฉพาะทางบางอย่างที่จะดีกว่า SQL แบบชัดเจนมาก (ขึ้นอยู่กับงานที่ทำและเทคโนโลยีที่เลือก) แต่การบันทีกข้อมูลลงไปส่วนใหญ่จะง่ายกว่า SQL
- เทคโนโลยีส่วนใหญ่ไม่มีความเป็นมาตรฐานกลาง ดังนั้นการเปรียบเทียบแต่ละเทคโนโลยีค่อนข้างทำได้ยาก ผู้ใช้งานต้องมีความคุ้นเคยกับการจัดการ Software เหล่านี้ให้ได้ด้วยตัวเอง
- ผู้เชี่ยวชาญที่สามารถสนับสนุนเทคโนโลยีเหล่านี้ในระดับองค์กรได้นั้นยังมีไม่มาก แต่เทคโนโลยี NoSQL นี้กลับมีความจำเป็นมากในการที่องค์กรจะสร้างความแตกต่างในเชิงเทคโนโลยีจากคู่แข่ง
NewSQL
สำหรับคำว่า NewSQL นี้อาจจะไม่ค่อยคุ้นหูกันมากนัก โดยคำว่า NewSQL นี้ถูกบัญญัติขึ้นมาโดยนักวิเคราะห์จาก 451 Group ที่ใช้เรียกเทคโนโลยี SQL แบบใหม่ที่ต่อยอดขึ้นมาจากแบบเก่าเพื่อแก้ปัญหาในเรื่องประสิทธิภาพให้มีความรวดเร็วสูงยิ่งขึ้น ด้วยการใช้เทคโนโลยีใหม่ๆ อย่าง In-memory เข้ามาช่วย และการ Scale ระบบได้ในระดับที่ใกล้เคียงกับ NoSQL โดยยังทำงานแบบ Transactional ได้ และมีความทนทานในระดับสูง เพื่อรองรับความต้องการของสถาบันการเงิน, ระบบซื้อขายสินค้าต่างๆ หรือแม้แต่ระบบ ERP ขนาดใหญ่ขององค์กร
อย่างไรก็ดี NewSQL นี้ก็เป็นเทคโนโลยีที่ไม่ได้มีมาตรฐานชัดเจนตายตัวเช่นกัน ทำให้ผู้ผลิตแต่ละรายนั้นพัฒนา NewSQL ในแนวทางของตัวเอง โดยมีข้อจำกัดที่แตกต่างกันไป เช่น
- SAP HANA สำหรับระบบ ERP ที่มีการเขียนและการอ่านข้อมูลจำนวนมหาศาล พร้อมออกรายงานได้อย่างรวดเร็วด้วย In-memory
- Microsoft Hekaton ระบบ SQL Server In-memory OLTP ที่มาช่วยให้ SQL Server ทำงานได้อย่างรวดเร็วยิ่งขึ้น
- NuoDB เป็น SQL Database ที่ถูกออกแบบมาสำหรับการทำ Cluster ได้ถึงระดับข้าม Data Center แต่แรก
ข้อดี
- สามารถใช้ทดแทน SQL ที่ใช้งานอยู่เดิมได้ง่าย
- รองรับงานประเภท Analytics ได้ดีมาก
- มีจุดเด่นบางข้อที่คล้ายคลึงกับ NoSQL
- มีเทคโนโลยีที่ถูกออกแบบมาสำหรับทำงานเฉพาะทางบางอย่างด้วยประสิทธิภาพที่ดีขึ้นได้
ข้อเสีย
- ไม่สามารถทำงานเป็น General Purpose ได้ถึงระดับเดียวกับ SQL
- การใช้ In-memory ยังมีข้อจำกัดเรื่องพื้นที่และความจุอยู่ รวมถึง Data Consistency ในกรณีที่เกิดปัญหาทางด้านไฟฟ้ากับ Data Center
- ยังไม่มีเครื่องมือช่วยจัดการเท่ากับ SQL
- โซลูชั่นโดยรวมยังมีราคาสูง แต่ก็คุ้มค่าเมื่อเทียบกับประสิทธิภาพที่ได้รับ
ไม่มีเทคโนโลยีฐานข้อมูลไหนที่รองรับงานได้ทุกรูปแบบ
จะเห็นได้ว่าแต่ละเทคโนโลยีนั้นก็มีข้อดีข้อเสียแตกต่างกันไป และทุกเทคโนโลยีนั้นก็ยังมีการพัฒนาต่อยอดต่อไปเรื่อยๆ ด้วยเช่นกัน ดังนั้นสิ่งที่ทุกคนในวงการ IT ควรทำ (และไม่จำกัดเฉพาะกับเรื่อง Database เท่านั้น) ก็คือการหมั่นศึกษาแต่ละเทคโนโลยีให้ดี มีการทดสอบการทำงานก่อนเลือกใช้งานจริง และเลือกใช้เทคโนโลยีให้เหมาะกับงาน เพราะถ้าหากเลือกเทคโนโลยีไม่เหมาะสมกับงานแล้ว สุดท้ายก็จะก่อให้เกิดหนี้ในเชิงการพัฒนาระบบไปเสียเปล่าๆ นั่นเอง
ทั้งนี้การอ่านบทความนี้ก็ยังไม่ถือว่าได้รับข้อมูลครบถ้วนนะครับ ขาดอะไรไปเยอะมากเหมือนกัน ดังนั้นถ้าใครสนใจจะศึกษาต่อยอดจริงๆ แนะนำว่าไปทดลองของจริงเปรียบเทียบกันดูเลยจะเห็นภาพเร็วกว่ามากครับ
ข้อมูลเพิ่มเติม: http://cacm.acm.org/blogs/blog-cacm/109710-new-sql-an-alternative-to-nosql-and-old-sql-for-new-oltp-apps/fulltext , http://dataconomy.com/sql-vs-nosql-vs-newsql-finding-the-right-solution/ , https://en.wikipedia.org/wiki/NewSQL , http://searchdatamanagement.techtarget.com/definition/NewSQL