วันนี้มีโอกาสไปแบ่งปันความรู้เรื่อง 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 ไม่สามารถรองรับได้ดีเพียงพอ
ถามว่ารองรับได้ไหม
ตอบว่าได้
แต่ต้องใช้แรงเยอะ
แต่ต้องใช้ค่าใช้จ่ายเยอะ
ดังนั้นยักษ์ใหญ่แห่งวงการ 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
จากนั้นอธิบายเรื่อง Consistency ของ NoSQL
NoSQL จะใช้ BASE consistency model
ซึ่งย่อมาจาก
- Basic Availability คือ database ต้องทำงานอยู่ตลอดเวลา
- Soft state คือการเขียนข้อมูลจะไม่บันทึกไปยังทุก ๆ เครื่องพร้อมกัน
- Eventual consistency คือเมื่อผ่านไปสักระยะหนึ่งข้อมูลจะถูกต้องในทุก ๆ เครื่อง delay จะมีหน่วยเป็น milisecond
ยังไม่พอนะ NoSQL จะถูกสร้างมาจากแนวคิดของ CAP Thorem
ประกอบไปด้วย
- Consistency
- Availability
- Partition tolerance
ซึ่งให้เลือกมาเพียง 2 ตัวเท่านั้น
แสดงดังรูป
โดยที่ CA คือ RDBMS
ดังนั้นจึงเหลือเพียง 2 ทางเลือกคือ CP และ AP
ซึ่งเป็นทางเลือกของการสร้าง NoSQL ชนิดต่าง ๆ นั่นเอง
จะเลือก CP หรือ AP นั่นคือ สิ่งที่คุณต้องตัดสินใจ
ว่าระบบของคุณจะเลือกอะไรระหว่า Consistency กับ Availability
ส่วน Partition tolerance มันเป็นความสามารถที่ NoSQL ทุกตัวต้องทำได้
คำถามที่น่าสนใจคือ
RDBMS จะตายไปหรือไม่ ?
NoSQL จะเข้ามาแทนที่ RDBMS หรือไม่ ?
คำตอบคือ ไม่
เนื่องจากเราสามารถนำเอา RDBMS และ NoSQL มาใช้งานร่วมกัน
ดังนั้นในหนึ่งระบบสามารถมี database ที่หลากหลาย
ตามความต้องการของการทำงานต่าง ๆ ได้
นั่นจึงเป็นที่มาของคำว่า Polyglot Persistence
สุดท้ายให้เลือกเครื่องมือที่เหมาะสมกับงานนั้น ๆ
แสดงว่าเราต้องเข้าใจทั้งระบบงาน และ เครื่องมือ
โดย Slide อยู่ที่นี่
ขอขอบคุณสำหรับพื้นที่ในการแบ่งปันครับ