ฐานข้อมูล SQL หรือ Relational Database และ NoSQL คือสองประเภทของฐานข้อมูลที่ได้รับความนิยมอย่างมากในยุคปัจจุบัน โดยแต่ละประเภทมีรูปแบบการจัดเก็บข้อมูลที่แตกต่างกันและเหมาะกับลักษณะ และ Requirement ของงานที่แตกต่างกัน จึงทำให้การเลือกใช้ฐานข้อมูลที่เหมาะสมถือเป็นเรื่องสำคัญอย่างยิ่ง
SQL (Structured Query Language) คือภาษาในยุค 4GL ที่ใช้สำหรับจัดการกับ Relational Database Management System (RDBMS) ซึ่งจัดเก็บข้อมูลในรูปแบบตาราง (Table) ที่ประกอบด้วยแถวและคอลัมน์ (Row, Column) คล้ายกับไฟล์ Excel
SELECT, INSERT, UPDATE, DELETENoSQL (Not Only SQL) คือฐานข้อมูลแบบไม่สัมพันธ์ หรือ Non-Relational Database ที่สามารถเก็บข้อมูลในหลายรูปแบบ เช่น Document, Key-Value, Graph และ Column-Family
CREATE DATABASE MyCompanyDB;
CREATE TABLE Employees (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100),
department VARCHAR(100),
salary DECIMAL(10,2)
);
INSERT INTO Employees (name, department, salary)
VALUES ('Somchai Wong', 'Accounting', 32000.00);
use MyCompanyDB;
db.Employees.insertOne({
name: "Somchai Wong",
department: "Accounting",
salary: 32000.00
});
ในฐานข้อมูล NoSQL ไม่มีความจำเป็นต้องสร้าง ฐานข้อมูล, ตาราง, Collection ล่วงหน้าก่อนที่จะมีการเพิ่มข้อมูล อีกทั้งโครงสร้างข้อมูลจะถูกสร้างเมื่อมีการเพิ่มข้อมูลครั้งแรก ทำให้ยืดหยุ่นกว่ามาก
| หัวข้อ | SQL หรือ RDBMS | NoSQL |
|---|---|---|
| รูปแบบข้อมูล | ตาราง (Table) | Document, Key-Value, Graph, Column |
| ความยืดหยุ่น | น้อยกว่า ต้องมีโครงสร้างตายตัว | สูง สามารถเพิ่มฟิลด์ได้ทันที |
| เหมาะกับ | ระบบที่เน้นความถูกต้อง เช่น การเงิน | Big Data, ข้อมูลไม่คงที่, App แบบ Real-time |
| การขยายระบบ | Scale แบบเพิ่มสเปกเครื่อง (Vertical) | Scale แบบเพิ่มจำนวนเซิร์ฟเวอร์ (Horizontal) |