Screen Shot 2557-08-09 at 10.05.55 PM

เมื่อวานเห็นมีถามมาว่า NewSQL มันคืออะไร ดังนั้นก็ขอมาเขียนสรุป
มันเริ่มจากจาก RDBMS ( Relational DataBase Management System ) ที่ใช้คำสั่ง SQL ในการทำงาน
มาสู่ NoSQL ( Not Only SQL )
จนปัจจุบันเริ่มมีคนพูดถึง NewSQL ( Back to SQL with NoSQL )
มาดูกันว่า NewSQL มันคืออะไร และเป็นมาอย่างไร

NewSQL คืออะไร

จริงๆ แล้วมันคือวิธีการแก้ไขปัญหาการเก็บข้อมูลขนาดใหญ่ของระบบแบบ OLTP ( Online Transaction Processing )
โดยระบบการจัดการแบบเดิมก็ไม่สามารถจัดการได้
หรือแม้แต่ NoSQL ก็ไม่สามารถตอบโจทย์ได้เช่นกัน

เนื่องจากระบบพวกนี้ มักจะเป็นระบบที่เรียกว่า Enterprise
ซึ่งทำงานอยู่บน RDBMS มานาน ดังนั้น การเปลี่ยนไปใช้ NoSQL เป็นเรื่องที่ยากมาก
ยิ่ง NoSQL ไม่สนับสนุนชุดคำสั่ง SQL
ยิ่ง NoSQL ไม่สนับสนุน ACID ( Atomicity, Consistency, Isolation และ Durability ) ครบด้วยแล้ว
ยิ่งไม่น่าเชื่อถือเข้าไปกันใหญ่ !!!
แต่จะใช้ RDBMS ก็จะรองรับไม่ได้ หรือได้ก็ต้องลงทุนและลงแรงสูง

ดังนั้นจึงเกิดแนวคิดใหม่ เพื่อสร้างระบบฐานข้อมูลทางเลือก เพื่อแก้ไขปัญหาดังกล่าว  นั่นก็คือ NewSQL
คิดโดยกลุ่มที่ชื่อว่า  451 Group

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

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

ตัวอย่างเช่น dbShard

Screen Shot 2557-08-09 at 3.47.18 PM

คุณสมบัติเชิงเทคนิคของ NewSQL ประกอบไปด้วย

  • ตัวหลักคือ รองรับการใช้ชุดคำสั่ง SQL
  • สนับสนุน ACID ครบ
  • Non-locking concurrency control mechanism ดังนั้นในการทำงานแบบ realtime จะต้องไม่เกิดปัญหาระหว่างการอ่านและเขียนข้อมูลในเวลาเดียวกัน
  • สถาปัตยกรรมของ NewSQL นั้น ในแต่ละ node จะต้องมีประสิทธิภาพการทำงานที่สูงกว่าปัจจุบันที่เป็นอยู่
  • การ Scale-out เช่นเพิ่มจำนวน node จะต้องไม่มีปัญหาคอขวด โดยไม่มีการ share อะไรกันเลย เพื่อลด overhead ต่างๆ

ความคาดหวังของ NewSQL นั้น จะต้องทำงานเร็วกว่า SQL หรือ RDBMS ปกติ 50 เท่า

การจัดกลุ่มของ NewSQL

NoSQL ยังมีการจัดกลุ่ม แล้วทำไม NewSQL จะไม่มีบ้างล่ะ
แต่การจัดกลุ่มของ NewSQL นั้นแบ่งตามรูปแบบการนำไปใช้งานของผู้สร้าง ดังนี้

1. New database
ทำการออกแบบและสร้างขึ้นมาใหม่ทั้งหมด  เพื่อทำให้สามารถรองรับการขายตัวของระบบ และ ประสิทธิภาพการทำงาน
โดยหัวใจหลักก็คือ  จะไม่เก็บข้อมูลลง disk แต่จะเก็บลง memory
หรืออาจจะเก็บลง disk แบบ SSD ไปเลย
ตัวอย่างเช่น

  • Clustrix
  • NuoDB
  • Translattice
  • VoltDB
  • Drizzle

2. New MySQL Storage Engine
เป็นกลุ่มที่ใช้ MySQL เป็นส่วนหลักในการพัฒนา เพื่อแก้ไขข้อจำกัดของ MySQL ลงไป
ตัวอย่างเช่น

  • Xeround
  • GenieDB
  • TokuTek
  • Akiban
  • MySQL NDB Cluster

3. Transparent clustering
กลุ่มนี้ยังคงโครงสร้างเดิมของระบบไว้ เพียงแต่สร้าง plug-in เข้าไปเพิ่มเติม
เพื่อให้สามารถรองรับการขยายตัวของระบบได้ เช่นการทำ clustering, sharding
ตัวอย่างเช่น

  • ScalArc
  • Schooner MySQL
  • dbShards
  • ScaleBase
  • Continuent Tungsten

สุดท้าย

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

Screen Shot 2557-08-08 at 9.42.30 PM

เท่านี้น่าจะพอทำให้เห็นภาพว่า NewSQL นั้นคืออะไร เป็นมาอย่างไร
แต่เรื่อง community ต่างๆ ยังน้อย เพราะว่า ระบบที่ใช้มักเป็นระบบปิด
แต่เราในฐานนะคน IT ก็คงพลาดเรื่องเหล่านี้ไปไม่ได้เช่นกัน

รวมทั้งจะต้องวางแผน เพื่อรองรับการขยายตัวของข้อมูล ด้วย เช่น

  • การ migrate จากระบบปัจจุบันไปยังระบบใหม่ เพื่อสนับสนุนจำนนวนข้อมูลที่สูงขึ้น
  • พัฒนาระบบใหม่ เพื่อให้รองรับจำนวนการใช้งานที่สูงขึ้น
  • โดยระบบยังเป็นแบบ OLTP อยู่นะ นั่นคือคุณต้องรู้และเข้าใจ NewSQL แล้วล่ะนะ

Reference Website

Tags: