Skip to content

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)

บทเรียน

#บทสอนอะไร
0Database คืออะไรปัญหาก่อน DB, SQL vs NoSQL, RDBMS landscape
1SQL พื้นฐานDDL, DML — CREATE TABLE, SELECT, INSERT, UPDATE, DELETE, WHERE
2JOIN + Relationshipsforeign key, INNER/LEFT/RIGHT/FULL JOIN, ONE-TO-MANY, MANY-TO-MANY
3Aggregation + SubqueryGROUP BY, HAVING, COUNT/SUM/AVG, subquery, CTE, window function
4Indexing + PerformanceB-tree, EXPLAIN, query plan, N+1, slow query
5Transaction + ACIDBEGIN/COMMIT, isolation level, deadlock, MVCC
6Schema Design + Normalizationnormalization (1NF-3NF), denormalization, when to break rules
7PostgreSQL ลึกJSONB, full-text search, partial index, materialized view, partitioning
8NoSQL IntroMongoDB (document), Redis (key-value), when to use what

วิธีอ่านที่แนะนำ

  1. เปิด terminal ที่มี PostgreSQL ไว้ตลอด — ทำตามทุก query
  2. อย่า copy-paste — พิมพ์เอง — สมองจำได้ดีกว่า
  3. เมื่อถึงบทที่ 4 แล้ว — EXPLAIN ทุก query ใหญ่ ๆ ที่เขียน — เข้าใจว่า DB ทำงานยังไง (บทที่ 4 จะอธิบาย EXPLAIN เต็ม — ก่อนหน้านี้ยังไม่ต้องใช้)
  4. ลอง break — ทำให้ slow ก่อน แล้วค่อยแก้ — เข้าใจปัญหาดีกว่าทฤษฎี

← กลับสารบัญหลัก