ทำไมต้อง NoSQL ?
ถ้าพูดถึงฐานข้อมูลหรือ Database เทคโนโลยีที่จะได้รู้จักกันเป็นอย่างแรกๆก็คงจะเป็น SQL (Structured Query Language) ที่ใช้ในโปรแกรมจำพวก RDBMS (Relational Database Management System) ซึ่งใช้จัดการกับฐานข้อแบบแบบตาราง โดย RDBMS หลายยี่ห้อก็มีการพัฒนาอย่างต่อเนื่อง ให้รองรับรับกับการใช้งานที่หลากหลายกับยุคปัจจุบัน แต่เทคโนโลยีใหม่ๆก็มีเกิดขึ้นอยู่ตลอดทำให้ความต้องการในด้านเทคโนโลยีฐานข้อมูลแบบเดิมไม่สามารถตอบโจทย์ได้ทั้งหมด จึงมี NoSQL เกิดขึ้นมาเพื่อใช้แทนฐานข้อมูลแบบเก่าๆ
NoSQL นั้นจริงๆเป็นคำที่ใช้เรียกรวมเทคโนโลยีฐานข้อมูลที่ไม่ใช่ SQL ทั้งหมด นั่นจึงทำให้ NoSQL มีความหลากหลาย ไม่ได้ยึดตัวไหนเป็นมาตรฐานกลาง NoSQL โดยจะเก็บข้อมูลอยู่ในรูปแบบอื่นๆที่ไม่ใช่ตาราง แต่นั่นไม่ได้หมายความว่า NoSQL จะเก็บข้อมูลที่มีความสัมพันธ์กันไม่ได้ แต่ NoSQL จะเก็บต่างจาก RDB เพราะข้อมูลที่สัมพันธ์กันจะไม่ถูกเก็บแยกคนละตาราง ทำให้ในบางกรณี NoSQL ก็จัดการกับข้อมูลที่มีความสัมพันธ์กันได้ง่ายกว่า RDB ซะอีก
ถ้าจะสรุปว่าทำไมถึงต้องใช้ NoSQL ก็ต้องไปดูจากข้อดีกันว่า อะไรที่เป็นจุดเเด่นเมื่อเทียบกับ RDB บ้าง
- NoSQL ถูกออกแบบมาให้รองรับกับการอ่านข้อมูลจำนวนมากๆ ได้เร็วกว่า RDB
- รองรับข้อมูลที่เป็น unstructured หรือ semi-structured data อย่างพวก json และ XML
- รองรับการขยายขนาดเพื่อรับการใช้ใช้งานที่เพิ่มขึ้นได้ง่ายกว่า RDB
NoSQL มีกี่ประเภท ?
จากความหลากหลายของ NoSQL เราสามารถจัดประเภทใหญ่ๆได้เป็น 4 ประเภท
- Document เป็นประเภทที่เก็บข้อมูลจาก object ในโปรแกรม อย่างตอนที่เราเขียนโค้ดแล้วมีการสร้าง object ข้อมูลต่างๆ เช่น json ทำให้ NoSQL ประเภทนี้เป็นมิตรต่อ developer อย่างมากจากการที่เก็บและใช้งายได้ง่าย เพราะไม่ต้องแปลงข้อมูลไปมานั่นเอง โดยประเภทข้อมูลที่เหมาะสมเช่น ข้อมูลโปรไฟล์ผู้ใช้งานและข้อมูลแคตตาล็อก เนื่องจากข้อมูลจะมีการเพิ่มขึ้นอย่างต่อเนื่องนั่นเอง
- Key-value จะเก็บข้อมูลด้วย key และ value ทำให้มีความง่ายในการใช้งาน ส่งผลให้เกิดข้อดีคือความเร็วในการดึงข้อมุลมาใช้งานที่เพียงเรียกใช้จาก key ก็ได้ค่าต้องการ ข้อมูลที่จะเก็บใน NoSQL ประเภทนี้ก็คือข้อมูลที่ต้องการความเร็วและง่ายแม้มีเป็นจำนวนมาก เช่นข้อมูลเกม เป็นต้น
- Wide-column stores สำหรับประเภทนี้จะเป็นฐานข้อมูลที่เก็บข้อูลในรูปแบบตารางแต่ว่าจะยืดหยึ่นกว่า RBD ตรงที่แต่ละ row นั้นไม่จำเป็นจำต้องมี column ที่เท่ากันก็ได้ โดยเหมาะกับการเก็บข้อมูลข้อมูลขนาดใหญ่อย่างเช่นจาก IoT ต่างๆ
- Graph ประเภทนี้จะเก็บข้อมูลในรูปแบบของ node และ edge โดย node จะเก็บข้อมูลต่างๆเช่นข้อมูลบุคคล ข้อมูลสถานที่ ในขณะที่ edge จะเก็บความสัมพันธ์ระหว่าง node ต่างๆ ประเภทนี้จะเหมาะกับข้อมูลที่มีความสัมพันธ์เกี่ยวเนื่องกันจำนวนมากๆ เช่นข้อมูลจาก social network
ตัวอย่างการใช้งาน NoSQL ?
เรามาลองดูการใช้งาน NoSQL กันดีกว่า โดยจะยกตัวอย่างประเภท Key-value มาให้ดูกันในการใช้งานจริงนั้นเป็นอย่างไร โดยจะยกตัวอย่างผ่าน redis ที่เป็น in-memory data store ที่จะทำการเก็บข้อมูลไว้ใน memmory นั่นเอง โดย redis นั้นมีเมื่อติดตั้งเรียบร้อยแล้ว คำสั่งที่ใช้ในการเก็บและเรียกข้อมูลก็คือ SET กับ GET ลองเข้าไปเล่นได้ที่ http://try.redis.io/
คำสั่งเก็บข้อมูล “HELLO WORLD” ไว้ใน key ที่ขื่อว่า say
SET say “HELLO WORLD”
OK
คำสั่งเรียกข้อมูลจาก key ชื่อ say
GET say
"hello world"
จะเห็นว่าการเก็บข้อมูลและเรียกข้อมูลพื้นฐานนั้นทำได้ง่ายมากๆ ซึ่งก็ถือเป็นจุดเด่นหนึ่งของ Key-value database ซึ่ง NoSQL ประเภทอื่นๆก็มีวิธีการใช้งานและจุดเด่นต่างกันไปอย่างที่เขียนไว้คร่าวๆในหัวข้อด้านบน ดังนั้นแล้วการจะเลือกใช้ database อะไรก็ต้องดูประเภทของงานและความต้องการให้เหมาะสม จะได้เกิดประโยชน์จากเทคโนโลยีที่เอามาใช้อย่างสูงสุดนั่นเอง