NoSQL คืออะไร?
ตามนิยามทางการของ Wiki: "ฐานข้อมูล NoSQL (ตั้งต้นหมายถึง "non SQL" หรือ "non relational") ให้กลไกสำหรับการจัดเก็บและดึงข้อมูลที่ถูกสร้างแบบจำลองด้วยวิธีอื่นนอกเหนือจากความสัมพันธ์แบบตารางที่ใช้ในฐานข้อมูลเชิงสัมพันธ์ (RDBMS) มันครอบคลุมเทคโนโลยีฐานข้อมูลหลากหลายที่พัฒนาขึ้นตอบสนองต่อการเพิ่มขึ้นของปริมาณข้อมูลที่จัดเก็บเกี่ยวกับผู้ใช้ วัตถุ และผลิตภัณฑ์ ความถี่ในการเข้าถึงข้อมูลนี้ และความต้องการด้านประสิทธิภาพและการประมวลผล โดยทั่วไป ฐานข้อมูล NoSQL โครงสร้างเป็น key-value pair, graph database, document-oriented หรือ column-oriented structure
ตลอดทศวรรษของการพัฒนาซอฟต์แวร์ เราใช้ฐานข้อมูลในรูป SQL (Structured Query Language) ที่เราจัดเก็บข้อมูลในตารางเชิงสัมพันธ์ อย่างไรก็ตาม ในไม่กี่ปีที่ผ่านมา ด้วยการเพิ่มขึ้นอย่างมากของการใช้อินเทอร์เน็ตและแอปพลิเคชัน Web 2.0 ฐานข้อมูลโตเป็นพันพันเทราไบต์ แอปพลิเคชันอย่าง Facebook, Google, Amazon, WhatsApp ฯลฯ ก่อให้เกิดยุคใหม่ของการจัดการฐานข้อมูลที่ปฏิบัติตามแนวทางการออกแบบเรียบง่าย ความเร็ว และการขยายตัวเร็วกว่าฐานข้อมูลดั้งเดิม ฐานข้อมูลแบบนี้ใช้ใน big data, massive real-time applications และ analytics
ตัวอย่างเช่น สมมติว่าคุณมีแอปพลิเคชันบล็อกเก็บบล็อกของผู้ใช้ ตอนนี้สมมติว่าคุณต้องรวมฟีเจอร์ใหม่ เช่น ผู้ใช้กดไลก์โพสต์บล็อกเหล่านี้ หรือคอมเมนต์ หรือไลก์ความคิดเห็นเหล่านี้ ด้วยการนำ RDBMS แบบปกติมาใช้ จะต้องปรับโครงสร้างฐานข้อมูลเดิมให้เปลี่ยนแปลงทั้งหมด อย่างไรก็ตาม หากคุณใช้ NoSQL ในสถานการณ์เช่นนี้ คุณสามารถแก้ไขโครงสร้างข้อมูลของคุณให้ตรงกับความต้องการที่ไวพร้อม (agile) ได้ง่าย ด้วย NoSQL คุณสามารถเริ่ม insert ข้อมูลใหม่นี้ในโครงสร้างที่มีอยู่ได้ทันที โดยไม่ต้องสร้างคอลัมน์ที่กำหนดไว้ล่วงหน้าหรือโครงสร้างที่กำหนดไว้ล่วงหน้า
ความท้าทายของ RDBMS
RDBMS สมมติโครงสร้างข้อมูลที่ชัดเจน และสมมติว่าข้อมูลเป็นไปอย่างมาก
ต้องการ schema ของแอปพลิเคชันและคุณสมบัติ (คอลัมน์ ชนิด ฯลฯ) ถูกกำหนดล่วงหน้าก่อนสร้างแอปพลิเคชัน สิ่งนี้ไม่เข้ากับแนวทางการพัฒนา agile สำหรับแอปพลิเคชันที่ไดนามิกมาก
เมื่อข้อมูลเริ่มโตใหญ่ขึ้น คุณต้องขยายฐานข้อมูลแบบแนวตั้ง (vertically) คือ เพิ่มความจุให้เซิร์ฟเวอร์ที่มีอยู่
ประโยชน์ของ NoSQL เหนือ RDBMS
Schema Less -
ฐานข้อมูล NoSQL ที่ไม่มี schema ไม่กำหนดโครงสร้างข้อมูลที่เคร่งครัด
Dynamic และ Agile -
ฐานข้อมูล NoSQL มีแนวโน้มที่จะเติบโตแบบไดนามิกพร้อมกับความต้องการที่เปลี่ยนแปลง จัดการข้อมูลที่มีโครงสร้าง ส่วนมีโครงสร้าง และไม่มีโครงสร้างได้
Scales Horizontally -
ในทางตรงข้ามกับ SQL databases ที่ขยายแบบแนวตั้ง NoSQL ขยายแบบแนวนอนโดยการเพิ่มเซิร์ฟเวอร์และใช้แนวคิด sharding และ replication พฤติกรรมของ NoSQL นี้เข้ากับบริการคอมพิวติ้งคลาวด์อย่าง Amazon Web Services (AWS) ซึ่งอนุญาตให้คุณจัดการเซิร์ฟเวอร์เสมือนที่สามารถขยายแบบแนวนอนตามความต้องการ
Better Performance -
ฐานข้อมูล NoSQL ทั้งหมดอ้างว่าส่งมอบประสิทธิภาพที่ดีกว่าและเร็วกว่าเมื่อเทียบกับการนำ RDBMS แบบดั้งเดิมมาใช้
พูดถึงข้อจำกัด เนื่องจาก NoSQL เป็นชุดฐานข้อมูลทั้งหมด (ไม่ใช่ฐานข้อมูลเดียว) ข้อจำกัดแตกต่างจากฐานข้อมูลไปยังฐานข้อมูล บางฐานข้อมูลไม่รองรับ ACID transactions ในขณะที่บางตัวอาจขาดความน่าเชื่อถือ แต่นักแต่ละตัวมีจุดแข็งของตัวเอง ทำให้เหมาะสำหรับความต้องการเฉพาะ
ประเภทของฐานข้อมูล NoSQL
Document Oriented Databases -
ฐานข้อมูลแบบเอกสาร (Document oriented databases) จัดการเอกสารเป็นหนึ่งเดียว และหลีกเลี่ยงการแยกเอกสารเป็นคู่ name/value ที่ระดับ collection นี่ช่วยให้รวบรวมชุดเอกสารที่หลากหลายเข้าไว้ใน collection เดียวได้ ฐานข้อมูลเอกสารอนุญาตให้จัดทำดัชนีเอกสารบนพื้นฐานไม่ใช่แค่ primary identifier แต่ยังรวม properties ด้วย โครงสร้าง document databases โอเพนซอร์สที่แตกต่างกันมีอยู่ اليوم แต่ที่โดดเด่นที่สุดคือ MongoDB และ CouchDB จริงๆ แล้ว MongoDB กลายเป็นหนึ่งในฐานข้อมูล NoSQL ที่นิยมที่สุด
Graph Based Databases -
ฐานข้อมูลกราฟใช้โครงสร้างกราฟกับโหนด ขอบ และ properties เพื่อแทนและจัดเก็บข้อมูล ตามนิยาม ฐานข้อมูลกราฟคือระบบจัดเก็บใดๆ ที่ให้ index-free adjacency หมายความว่าทุกองค์ประกอบมี pointer ตรงไปยังองค์ประกอบที่อยู่ติดกัน และไม่ต้องการ index lookups ฐานข้อมูลกราฟทั่วไปที่จัดเก็บกราฟใดๆ แตกต่างจากกราฟเฉพาะทางอย่าง triple-stores และ network databases Indexes ใช้สำหรับ traverse กราฟ
Column Based Databases -
การจัดเก็บแบบคอลัมน์ (column-oriented storage) อนุญาตให้จัดเก็บข้อมูลได้อย่างมีประสิทธิภาพ มันหลีกเลี่ยงการใช้พื้นที่เมื่อจัดเก็บ nulls โดยเพียงแค่ไม่จัดเก็บคอลัมน์เมื่อไม่มีค่าสำหรับคอลัมน์นั้น หน่วยข้อมูลแต่ละหน่วยสามารถคิดได้เป็นชุดของ key/value pairs โดยหน่วยตัวเองถูกระบุด้วย primary identifier ซึ่งมักเรียกว่า primary key Bigtable และโคลนของมันมักเรียก primary key นี้ว่า row-key
Key Value Databases -
คีย์ของคู่ key/value เป็นค่าไม่ซ้ำในเซต และสามารถค้นหาได้ง่ายเพื่อเข้าถึงข้อมูล คู่ key/value มีหลายประเภท: บางตัวเก็บข้อมูลในหน่วยความจำ และบางตัวให้ความสามารถในการ persist ข้อมูลลงดิสก์ Key/value store ที่เรียบง่ายแต่ทรงพลังคือ Oracle's Berkeley DB
ฐานข้อมูล NoSQL ยอดนิยม
มา สรุปฐานข้อมูล NoSQL ยอดนิยมบางตัวที่อยู่ในหมวดหมู่ข้างต้นตามลำดับ
- Document Oriented Databases - MongoDB, HBase, Cassandra, Amazon SimpleDB, Hypertable, ฯลฯ
- Graph Based Databases - Neo4j, OrientDB, Facebook Open Graph, FlockDB, ฯลฯ
- Column Based Databases - CouchDB, OrientDB, ฯลฯ
- Key Value Databases - Membase, Redis, MemcacheDB, ฯลฯ

NoSQL Databases. Image Source: getfilecloud.com
สรุป
ในบทความนี้ เราเรียนรู้เกี่ยวกับเทคโนโลยีฐานข้อมูล NoSQL 是什么 และมันแตกต่างจาก RDBMS อย่างไรในหลักๆ เราจึงสำรวจประเภทต่างๆ ของฐานข้อมูล NoSQL การประยุกต์ใช้ และฐานข้อมูลยอดนิยมบางตัวของแต่ละประเภท
องค์กรหลายแห่งในปัจจุบันกำลังปรับตัวไปใช้ฐานข้อมูลแบบนี้สำหรับชุดข้อมูลมหาศาลและแอปพลิเคชัน high-scale นี่แสดงให้เห็นว่า NoSQL 肯定会是 web และเทคโนโลยีฐานข้อมูล的下一个大事件 有潜力打破 RDBMS 的多年遗产