คำย่อ NoSQL ถูกสร้างขึ้นในปี 1998 หลายคนเข้าใจผิดว่าเป็นคำดูถูก SQL แต่ความจริงคือหมายถึง "Not Only SQL" แนวคิดคือ ทั้งสองเทคโนโลยีสามารถร่วมอยู่ได้ และแต่ละอย่างมีบทบาทเฉพาะตัว ภาวะ NoSQL ได้รับความน่าสนใจในไม่กี่ปีที่ผ่านมา เมื่อผู้นำ Web 2.0 หลายแห่งนำเทคโนโลยีนี้ไปใช้ บริษัทใหญ่อย่าง Facebook, Twitter, Digg, Amazon, LinkedIn และ Google ใช้ NoSQL อย่างน้อยหนึ่งรูปแบบ มาเข้าใจ NoSQL ให้ลึกขึ้น เพื่ออธิบายให้ CIO หรือเพื่อนร่วมงานฟังได้
NoSQL กระพริบจากความจำเป็น
1. ปริมาณข้อมูลที่จัดเก็บ (Data Storage)
ข้อมูลดิจิทัลทั่วโลกวัดเป็น Exabytes (1 Exabyte = 1,000 ล้าน GB) ตาม Internet.com ในปี 2006 มีข้อมูลใหม่เพิ่ม 161 Exabytes เพียง 4 ปีหลัง (2010) คาดว่าจะเกือบ 1,000 Exabytes เพิ่มขึ้นเกิน 500% ข้อมูลในโลกเยอะมาก และยังเพิ่มขึ้นเรื่อยๆ
2. ข้อมูลที่เชื่อมโยงกัน (Interconnected Data)
ข้อมูลมีความเชื่อมโยงมากขึ้น เว็บสร้าง hyperlinks บล็อกมี pingbacks โซเชียลมี tags ผูกมั่นทุกอย่าง ระบบใหญ่สร้างมาเพื่อเชื่อมโยงกัน
3. โครงสร้างข้อมูลซับซ้อน (Complex Data Structure)
NoSQL จัดการ hierarchical nested data ได้ง่าย ใน SQL ต้องใช้หลาย relational tables พร้อม keys หลายแบบ นอกจากนี้ ประสิทธิภาพใน RDBMS แบบดั้งเดิมจะลดลงเมื่อจัดเก็บข้อมูลปริมาณมหาศาลของแอปโซเชียลและ Semantic Web
NoSQL คืออะไร?
นิยามง่ายๆ: ไม่ใช่ SQL และไม่ใช่ Relational ตามชื่อ "Not Only SQL" ไม่ได้มาแทนที่ RDBMS แต่เป็น complement (เสริม) NoSQL ออกแบบมาสำหรับ distributed data stores ที่ต้องการ scale ใหญ่โตมาก เช่น Facebook 500 ล้านผู้ใช้ หรือ Twitter สะสม Terabits ต่อวัน
ใน NoSQL:
- ไม่มี fixed schema
- ไม่มี joins
RDBMS "scale up" โดยอัปเกรดฮาร์ดแวร์/เพิ่ม RAM แต NoSQL "scale out" โดยกระจายโหลดไปหลายเครื่อง commodity – นี่คือจุดทำให้ NoSQL ถูกกว่าสำหรับ Big Data
4 ประเภทหลักของ NoSQL
- Key-Value Stores – พัฒนาจาก Amazon Dynamo Paper (2007) ใช้ hash table มี unique key ชี้ไปยูข้อมูล item เฉพาะ มักมี cache mechanism เพื่อประสิทธิภาพสูงสุด
- Column Family Stores – สำหรับจัดเก็บ/ประมวลผลข้อมูลมหาศาลกระจายหลายเครื่อง ยังมี keys แต่ชี้หลาย columns (เช่น BigTable ของ Google: rows ระบุโดย row key ข้อมูลเรียงจัดเก็บตาม key นี้ columns จัดกลุ่มเป็น column family)
- Document Databases – ได้แรงบันดาลใจจาก Lotus Notes ใกล้เคียง key-value stores โมเดลคือ versioned documents ที่เป็นชุดของ key-value collections ใส่ semi-structured documents ในรูปแบบ JSON
- Graph Databases – สร้างจาก nodes, relationships ระหว่าง nodes และ properties ของ nodes ใช้ flexible graph model แทนตาราง rows/columns แข็งแกร่งของ SQL สามารถ scale ข้ามหลายเครื่องได้
ผู้เล่นหลักในวงการ NoSQL
ผู้เล่นใหญ่ nổiขึ้นมาจากองค์กรที่นำไปใช้ เทคโนโลยี NoSQL ดังๆ ได้แก่:
- Dynamo: Amazon สร้างขึ้น สำหรับ e-commerce ที่ต้องการ scalable distributed platform Amazon S3 ใช้ Dynamo เป็น storage backend
- Cassandra: Facebook เปิดซอร์ส Column-oriented NoSQL database
- BigTable: Google proprietary column-oriented database ใช้ได้เฉพาะ Google App Engine
- SimpleDB: Amazon อีกตัว ใช้กับ EC2 และ S3 ส่วนหนึ่งของ AWS คิดค่าใช้จ่ายตามการใช้งาน
- CouchDB & MongoDB: Open source document-oriented NoSQL databases
- Neo4j: Open source graph database
การ Query ข้อมูลใน NoSQL
คำถามที่นักพัฒนาสนใจที่สุด: จะ query NoSQL ยังไง? ข้อมูลเก็บเยอะแต่ดึงไม่ออก ไม่มีประโยชน์ NoSQL ไม่มี high-level declarative query language เช่น SQL การ query ขึ้นอยู่กับ data model ของแต่ละระบบ
หลายแพลตฟอร์มรองรับ RESTful interfaces หรือ query APIs มี tools พัฒนามา query หลาย NoSQL แต่โดยเฉพาะทำงานใน category เดียว ตัวอย่าง: SPARQL – declarative query specification สำหรับ graph databases
PREFIX foaf:
SELECT ?url
FROM
WHERE {
?contributor foaf:name "Jon Foobar" .
?contributor foaf:weblog ?url .
}
อนาคตของ NoSQL
องค์กรที่มีความต้องการจัดเก็บข้อมูลมหาศาล กำลังมอง NoSQL อย่างจริงจัง แต่ในองค์กรเล็กยังไม่ได้รับความนิยมมาก สำรวจของ Information Week พบว่า 44% ของ IT professionals ไม่เคยได้ยิน NoSQL เพียง 1% รายงานว่า NoSQL อยู่ในแผนยุทธศาสตร์ ชัดเจนว่า NoSQL มีที่ในโลกที่เชื่อมต่อกัน แต่อาจต้องวิวัฒนาการต่อไปเพื่อให้ได้รับความนิยมทั่วไป