โหมดมืด
Database
ส่วนหนึ่งของ Beginner Book | เสริมจาก Spring Boot บทที่ 02
📌 หมายเหตุ — บางบท (โดยเฉพาะบท 2, 4, 5 และบท NoSQL) มีตัวอย่างโค้ด Spring Boot / Java ประกอบ เพื่อให้เห็นว่า concept เชื่อมกับงานจริงยังไง ถ้ายังไม่ได้อ่าน Spring Boot ก็ข้ามส่วนโค้ด Java เหล่านั้นได้ — เนื้อหา SQL หลักไม่ได้พึ่งมัน
หนังสือเล่มนี้พาคุณไปถึงไหน
อ่านจบ + ทำ checkpoint หมด คุณจะ:
- เข้าใจ "ทำไมต้องมี database" — เทียบกับไฟล์ธรรมดา
- เขียน SQL (เอส-คิว-แอล / ซีเควล) ได้คล่อง — SELECT (ซีเล็ค — ดึงข้อมูล), INSERT (อินเสิร์ท — เพิ่ม), UPDATE (อัปเดท — แก้), DELETE (ดีลีท — ลบ), JOIN (จอยน์ — รวมหลายตาราง), GROUP BY (กรุ๊ปบาย — จัดกลุ่ม)
- ออกแบบ schema (สคีมา — โครงสร้างตาราง) + normalize (นอร์มัลไลซ์ — จัดให้ไม่ซ้ำซ้อน) ได้ถูก
- เข้าใจ index (อินเด็กซ์ — ดัชนีช่วยค้นหาเร็ว) + อ่าน EXPLAIN (เอ็กซ์เพลน — คำสั่งดูว่า DB จะรัน query ยังไง) — แก้ query ช้าได้
- เข้าใจ transaction (ทรานแซกชัน — กลุ่มคำสั่งทำพร้อมกัน) + ACID (แอซิด — 4 คุณสมบัติ Atomicity/Consistency/Isolation/Durability) + isolation level (ระดับการแยก transaction)
- ใช้ feature ลึกของ PostgreSQL — JSONB (เจ-สัน-บี — JSON แบบ binary index ได้), full-text search (ค้นข้อความ), window function (ฟังก์ชันที่คำนวณข้าม row)
- รู้จัก NoSQL (MongoDB, Redis) + เลือกได้ว่าเมื่อไหร่ใช้ตัวไหน
- แก้ N+1 (ปัญหา query ซ้อน query หลายรอบ), slow query, deadlock (เดดล็อก — 2 transaction รอกันวน) ได้
📚 คำศัพท์เริ่มต้น (อยู่ที่หน้าสารบัญเพื่อเปิดดูง่าย — บทถัด ๆ ไปจะอธิบายแต่ละตัวอย่างละเอียด)
คำ คำอ่าน ความหมายสั้น PostgreSQL โพสต์-เกร็ส-คิว-แอล RDBMS ฟรี feature ครบ MySQL มาย-เอส-คิว-แอล RDBMS ฟรี popular SQLite เอส-คิว-ไลท์ DB ไฟล์เดียว ไม่ต้องมี server SQL เอส-คิว-แอล / ซีเควล ภาษา query ของ RDBMS schema สคีมา โครงสร้าง table + column index อิน-เด็กซ์ ดัชนีช่วยค้นหาเร็ว EXPLAIN เอ็กซ์-เพลน คำสั่งดู query plan transaction ทราน-แซก-ชัน กลุ่มคำสั่งทำพร้อมกัน ACID แอซิด 4 คุณสมบัติ transaction MVCC เอ็ม-วี-ซี-ซี Multi-Version Concurrency Control isolation level ไอ-โซ-เล-ชัน เลเวล ระดับการแยก transaction JSONB เจ-สัน-บี JSON เก็บแบบ binary idempotent ไอ-เด็ม-โพ-เทนต์ ทำซ้ำได้ผลเหมือนเดิม normalize นอร์-มัล-ไลซ์ จัด schema ให้ไม่ซ้ำซ้อน deadlock เดด-ล็อก 2 transaction รอกันวน
หนังสือนี้ออกแบบมาให้ใคร
✅ คนที่อ่าน Spring Boot จบ → อยากเข้าใจ database ลึกขึ้น
✅ Backend developer ที่เคยใช้ ORM (โอ-อาร์-เอ็ม — Object-Relational Mapping, library ที่ map ตารางใน DB กับ class ของภาษาโปรแกรม เช่น Hibernate, Sequelize, Prisma) อย่างเดียว — ไม่เคยเขียน SQL
✅ DBA (ดี-บี-เอ — Database Administrator, คนดูแลฐานข้อมูล) มือใหม่
❌ DBA มืออาชีพ — เล่มนี้คงไม่ได้อะไรใหม่
เครื่องมือที่ใช้
หนังสือเล่มนี้ใช้เครื่องมือฟรีทั้งหมด ติดตั้งตามได้เลย — PostgreSQL เป็น database หลักสำหรับบท SQL ส่วน MongoDB/Redis ใช้เฉพาะบท NoSQL:
- PostgreSQL 17 (database หลัก — version stable ปัจจุบัน, GA กันยายน 2024; PG 16 ยัง supported แต่ถ้าติดตั้งใหม่แนะนำ 17)
- DBeaver หรือ pgAdmin (GUI client)
- MongoDB (สำหรับบท NoSQL)
- Redis (สำหรับบท NoSQL)
หมายเหตุ: หนังสือนี้อ้างอิง PostgreSQL 17 สม่ำเสมอใน docker-compose, version stamp และ release notes — ส่วน MySQL เมื่อเอ่ยถึงจะอ้างอิง MySQL 8.4 LTS (เมษายน 2024 — MySQL 8.0 หมด support เมษายน 2026)
บทเรียน
| # | บท | สอนอะไร |
|---|---|---|
| 0 | Database คืออะไร | ปัญหาก่อน DB, SQL vs NoSQL, RDBMS landscape |
| 1 | SQL พื้นฐาน | DDL, DML — CREATE TABLE, SELECT, INSERT, UPDATE, DELETE, WHERE |
| 2 | JOIN + Relationships | foreign key, INNER/LEFT/RIGHT/FULL JOIN, ONE-TO-MANY, MANY-TO-MANY |
| 3 | Aggregation + Subquery | GROUP BY, HAVING, COUNT/SUM/AVG, subquery, CTE, window function |
| 4 | Indexing + Performance | B-tree, EXPLAIN, query plan, N+1, slow query |
| 5 | Transaction + ACID | BEGIN/COMMIT, isolation level, deadlock, MVCC |
| 6 | Schema Design + Normalization | normalization (1NF-3NF), denormalization, when to break rules |
| 7 | PostgreSQL ลึก | JSONB, full-text search, partial index, materialized view, partitioning |
| 8 | NoSQL Intro | MongoDB (document), Redis (key-value), when to use what |
วิธีอ่านที่แนะนำ
- เปิด terminal ที่มี PostgreSQL ไว้ตลอด — ทำตามทุก query
- อย่า copy-paste — พิมพ์เอง — สมองจำได้ดีกว่า
- เมื่อถึงบทที่ 4 แล้ว —
EXPLAINทุก query ใหญ่ ๆ ที่เขียน — เข้าใจว่า DB ทำงานยังไง (บทที่ 4 จะอธิบาย EXPLAIN เต็ม — ก่อนหน้านี้ยังไม่ต้องใช้) - ลอง break — ทำให้ slow ก่อน แล้วค่อยแก้ — เข้าใจปัญหาดีกว่าทฤษฎี