nosql-01
วันนี้มีโอกาสไปแบ่งปันความรู้เรื่อง NoSQL
ให้กับนักศึกษาคณะไอทีลาดกระบัง
โดยเนื้อหาจะเป็นความรู้พื้นฐานต่าง ๆ ที่ควรรู้และเข้าใจ
ก่อนนำ NoSQL ไปใช้งาน มาเริ่มกันเลย

เริ่มด้วยการทำความเข้าใจกับ RDBMS (Relational DataBase Management System)

ว่า RDBMS นั้นเป็น data model หนึ่งเท่านั้น
ดังนั้น Database != RDBMS นะ
ต้องเข้าใจว่า ACID consistency model คืออะไร มีความสำคัญอย่างไร ?

  • Atomicity
  • Consistency
  • Isolation
  • Durability

การจัดการข้อมูลที่จัดเก็บใน RDBMS คือ SQL (Structured Query Language)
โดยที่ RDBMS มันสามารถทำงานได้ดีเป็นปกติ
และได้รับความนิยมนำไปใช้งานกันมากมาย

แต่เมื่อการมาถึงของยุคที่มีข้อมูลเกิดขึ้นมาจำนวนมาก และ รวดเร็ว

นั่นคือโลกที่คนนิยมใช้ internet
นั่นคือโลกที่มีการใช้งาน Social network จำนวนมาก
นั่นคือโลกที่มีข้อมูลเกิดขึ้นมาจำนวนมาก
บางคนบอกว่ามันคือยุคของ Big Data

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

nosql-02

ดังนั้นยักษ์ใหญ่แห่งวงการ internet คือ Google และ Amazon
จึงสร้างระบบจัดการข้อมูลของตัวเองขึ้นมา
Google สร้าง Bigtable
Amazon สร้าง Dynano

และนี่คือจุดเริ่มต้นของเครื่องมือจัดการข้อมูล หรือ database ชนิดใหม่ ๆ
ที่นอกเหนือจาก RDBMS

เมื่อเกิด Database ชนิดใหม่ ๆ ที่ไม่ใช่ Non-relational database ขึ้นมาเยอะ ๆ

จึงได้เกิด meetup หนึ่งขึ้นมา มีเป้าหมายเพื่อพูดคุยสิ่งต่าง ๆ

  • คุยเรื่อง Non-relational database
  • Open-source
  • Distributed database

โดยชื่อของ meetup เกิดมาเพื่อต้องการสร้าง hashtag ของ meetup ครั้งนี้
ซึ่งได้ชื่อว่า #nosql ขึ้นมา
สุดท้ายจึงได้ชื่อ meetup ว่า NoSQL meetup

ผู้ที่เข้าร่วมงานครั้งนี้ ประกอบไปด้วย

  • ผู้พัฒนา Voldemort
  • ผู้พัฒนา Cassandra
  • ผู้พัฒนา Dynamite
  • ผู้พัฒนา HBase
  • ผู้พัฒนา Hypertable
  • ผู้พัฒนา CouchDB

ผลจาก meetup ครั้งนี้ได้ข้อสรุปที่น่าสนใจดังต่อไปนี้

1. คุณลักษณะของ NoSQL
ประกอบไปด้วย

  • Non-relational database
  • ส่วนใหญ่เป็น Open-source
  • Cluster-friendly นั่นคือโดยปกติจะรองรับการทำงานแบบ distributed
  • Schema-less
  • ใช้สำหรับการพัฒนาระบบ web ใหม่ ๆ

2. Data model ต่าง ๆ ของ NoSQL
ประกอบไปด้วย

  • Key-value
  • Document
  • Column-family
  • Graph

nosql-04

จากนั้นอธิบายเรื่อง Consistency ของ NoSQL

NoSQL จะใช้ BASE consistency model
ซึ่งย่อมาจาก

  • Basic Availability คือ database ต้องทำงานอยู่ตลอดเวลา
  • Soft state คือการเขียนข้อมูลจะไม่บันทึกไปยังทุก ๆ เครื่องพร้อมกัน
  • Eventual consistency คือเมื่อผ่านไปสักระยะหนึ่งข้อมูลจะถูกต้องในทุก ๆ เครื่อง delay จะมีหน่วยเป็น milisecond

ยังไม่พอนะ NoSQL จะถูกสร้างมาจากแนวคิดของ CAP Thorem

ประกอบไปด้วย

  • Consistency
  • Availability
  • Partition tolerance

ซึ่งให้เลือกมาเพียง 2 ตัวเท่านั้น
แสดงดังรูป

nosql-03

โดยที่ CA คือ RDBMS
ดังนั้นจึงเหลือเพียง 2 ทางเลือกคือ CP และ AP
ซึ่งเป็นทางเลือกของการสร้าง NoSQL ชนิดต่าง ๆ นั่นเอง
จะเลือก CP หรือ AP นั่นคือ สิ่งที่คุณต้องตัดสินใจ
ว่าระบบของคุณจะเลือกอะไรระหว่า Consistency กับ Availability
ส่วน Partition tolerance มันเป็นความสามารถที่ NoSQL ทุกตัวต้องทำได้

คำถามที่น่าสนใจคือ

RDBMS จะตายไปหรือไม่ ?
NoSQL จะเข้ามาแทนที่ RDBMS หรือไม่ ?

คำตอบคือ ไม่
เนื่องจากเราสามารถนำเอา RDBMS และ NoSQL มาใช้งานร่วมกัน
ดังนั้นในหนึ่งระบบสามารถมี database ที่หลากหลาย
ตามความต้องการของการทำงานต่าง ๆ ได้
นั่นจึงเป็นที่มาของคำว่า Polyglot Persistence

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

โดย Slide อยู่ที่นี่

ขอขอบคุณสำหรับพื้นที่ในการแบ่งปันครับ