รู้จักกับ SQL, NoSQL และ NewSQL สามทางเลือกในเทคโนโลยี Database ปัจจุบัน

ปัจจุบันนี้เทคโนโลยี Database นั้นถือว่าเติบโตเร็วและมีความหลากหลายมากกว่าแต่ก่อนเป็นอย่างมาก ดังนั้นในบทความนี้จึงได้ทำการสรุปเทคโนโลยีของทั้ง SQL, NoSQL และ NewSQL เพื่อให้ผู้อ่านพอมีความเข้าใจในระดับพื้นฐานสำหรับใช้ประกอบการตัดสินใจ หรือศึกษาต่อยอดต่อไปในอนาคตได้ด้วยตัวเอง พร้อมข้อดีข้อเสียของแต่ละเทคโนโลยี ดังต่อไปนี้ครับ

 

SQL

เทคโนโลยี Database พื้นฐานที่ทุกคนคงรู้จักกันดี แต่น้อยคนนักที่จะมีความเชี่ยวชาญ โดย SQL นี้ก็เป็นเทคโนโลยีหลักที่เราเห็นกันในแทบจะทุก Application ในปัจจุบัน ด้วยการทำงานเป็น Relational Database ที่มีการจัดเก็บไฟล์เป็นแบบตารางหรือ Strucutued Data / Schema-based เป็นหลัก ซึ่งถึงแม้ปัจจุบันจะมีความพยายามที่จะทำให้ SQL สามารถบันทึกข้อมูล Unstructured Data ได้ แต่ในหลายๆ ความสามารถสำหรับการจัดการ Unstructured Data นั้นก็ยังไม่เทียบเท่า NoSQL จริงๆ อยู่ดี

mysql_architecture_diagram

ข้อดี

  • เป็นเทคโนโลยีที่มีการพัฒนาต่อเนื่องมานาน ทำให้มีความสามารถรอบด้าน โดยถูกออกแบบมาให้เป็น 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 โดยเฉพาะ

mongodb_architecture

ข้อดี

  • โดยมาก 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 แต่แรก

sap_hana_platform_diagram

ข้อดี

  • สามารถใช้ทดแทน 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


About techtalkthai

ทีมงาน TechTalkThai เป็นกลุ่มบุคคลที่ทำงานในสาย Enterprise IT ที่มีความเชี่ยวชาญทางด้าน Network, Security, Server, Storage, Operating System และ Virtualization มารวมตัวกันเพื่ออัพเดตข่าวสารทางด้าน Enterprise IT ให้แก่ชาว IT ในไทยโดยเฉพาะ

Check Also

Gmail เปิดให้ส่งต่ออีเมลในรูปไฟล์แนบแล้ว

Google ประกาศอัปเดตฟีเจอร์ใหม่บน Gmail ช่วยให้ผู้ใช้งานสามารถส่งต่ออีเมลที่กำลังอ่าน หรืออีเมลฉบับอื่นๆ รวมกันในรูปของไฟล์แนบ ช่วยให้ผู้รับสามารถเปิดดูอีเมลต้นฉบับทั้งหมด รวมไปถึง Headers ต่างๆ ที่มาพร้อมกับอีเมลเหล่านั้นได้ในทีเดียว

[Guest Post] บริษัท พาโล อัลโต เน็ตเวิร์ค เผยคาดการณ์ความมั่งคงปลอดภัย ปี 2563

เควิน โอ แลรีย์ (Kevin O’Leary) ประธานเจ้าหน้าที่ฝ่ายความปลอดภัยระบบสารสนเทศ (Chief Security Officer) และ ที่ปรึกษาด้านความปลอดภัยระบบสารสนเทศ ประจำเอเชียแปซิฟิก และคงศักดิ์ ก่อตระกูล ผู้จัดการวิศวกรระบบ …