NoSQL Database

หน้าที่ของ database - ช่วยให้เราเก็บข้อมูล และ อ่านข้อมูลได้อย่างมีประสิทธิภาพ
SQL
SQL = Structured query Language
ข้อมูล มีความสัมพันธ์กัน มีการ join เอาข้อมูลสองตาราง มารวมกัน
example SQL datebase - MySQL, PostgreSQL, Microsoft SQL Server
NoSQL
NoSQL = Not only SQL

- Key-Value database - เหมือน LocalStorage
จะเก็บข้อมูลด้วย key และ value ทำให้มีความง่ายในการใช้งาน ส่งผลให้เกิดข้อดีคือความเร็วในการดึงข้อมุลมาใช้งานที่เพียงเรียกใช้จาก key ก็ได้ค่าต้องการ ข้อมูลที่จะเก็บใน NoSQL ประเภทนี้ก็คือข้อมูลที่ต้องการความเร็วและง่ายแม้มีเป็นจำนวนมาก
ประโยชน์ส่วนใหญ่จะเอาไปใช้เก็บว่าแบบ user คนนี้ล็อคอินมาหรือยัง
ตัวอย่างของฐานข้อมูลกลุ่มนี้เช่น Redis
- Document Database - มองว่าเก็บข้อมูลเป็นแบบเอกสาร
เป็นประเภทที่เก็บข้อมูลจาก object ในโปรแกรม อย่างตอนที่เราเขียนโค้ดแล้วมีการสร้าง object ข้อมูลต่างๆ เช่น json ทำให้ NoSQL ประเภทนี้เป็นมิตรต่อ developer อย่างมากจากการที่เก็บและใช้งานได้ง่าย เพราะไม่ต้องแปลงข้อมูลไปมา ประเภทข้อมูลที่เหมาะสมเช่น ข้อมูลโปรไฟล์ผู้ใช้งาน เนื่องจากข้อมูลจะมีการเพิ่มขึ้นอย่างต่อเนื่อง
ข้อมูลข้างในเหมือนเก็บเป็น array ข้อมูลหน้าตาไม่จำเป็นต้องเหมือนกัน
ตัวอย่างของฐานข้อมูลกลุ่มนี้เช่น mongoDB
- Wide-colunm database - มองว่าเหมือน mongo เมื่อกี้ก็ได้ แต่ละแถวไม่จำเป็นต้องเหมือนกัน
เป็นฐานข้อมูลที่มีการจัดเก็บข้อมูลในแบบ Column แทน ต่างจากฐานข้อมูล SQL ที่มักจะเก็บข้อมูลเป็น Row โดยสามารถทำการจัดเก็บข้อมูลกี่คอลัมน์สำหรับข้อมูลกี่รูปแบบก็ได้ และสามารถทำการ Group หรือ Aggregate ข้อมูลเข้าด้วยกันได้ง่าย
flexible สูง
ตัวอย่างของฐานข้อมูลกลุ่มนี้เช่น Cassandra
- Graph Database - เป็น database ที่ มองข้อมูลเป็นกราฟ ส่วนใหญ่ไว้ทำพวกระบบ friend ของ social media พวก mutual friend
เป็นฐานข้อมูลที่มีการระบุความสัมพันธ์ของข้อมูลแต่ละชุดเป็น Network หรือเป็น Graph โดยข้อมูลแต่ละ Node นั้นจะสามารถจัดเก็บข้อมูลได้อย่างอิสระ
ตัวอย่างของฐานข้อมูลกลุ่มนี้เช่น Neo4j
Advantages
- Flexibility - แก้ไม่ยากเหมือนตัว SQL เพราะ SQL เก็บข้อมูลให้เป็นระเบียบสุดๆ แต่ก็เป็นดาบสองคม
- Scalability - วันนึงเว็บมีคนเข้า 10 คน แต่จู่ๆดัง มีคนเข้าถล่มถลาย 100k คน ก็ตุยเย่ การ scale จะง่ายกว่าถ้าใช้ noSQL
- High-performance - เช่นของ redis ไวจุง
- Highly functional - เช่น firebase เก่งม้าก