Database design and tuning performance - up1/training-courses GitHub Wiki
เนื้อหาหลักสูตร
เป็นหลักสูตรสำหรับปูพื้นฐานของการออกแบบการจัดการข้อมูลในฐานข้อมูล ตั้งการการทำ data modeling เพื่อให้ตรงกับปัญหา use case หรือความต้องการ รวมทั้งเรื่องของ Data model ที่มีหลากหลายรูปแบบ ทั้ง
- Relational หรือ เชิงความสัมพันธ์
- NoSQL ชนิดต่าง ๆ เช่น Key-value, Document-based เป็นต้น
จากนั้นทำความเข้าใจของ trade-off ของการออกแบบ ตามแนวคิดของ Nomalization และ Denomalization ว่าเป็นอย่างไร เมื่อใดควรใช้หรือไม่ควรใช้ รวมทั้งปัญหาที่จะตามมา จากการออกแบบในรูปแบบต่าง ๆ
โดยใน workshop จะใช้งาน PostgreSQL database เพื่อให้เข้าใจและเห็นภาพมากยิ่งขึ้น ทั้ง
- การสร้าง table และความสัมพันธ์ประเภทต่าง ๆ
- การใช้งานคำสั่ง CRUD (create, read, update, delete)
- การสร้าง constraint ต่าง ๆ เพื่อจัดการความถูกต้องของข้อมูล
- การสร้างและใช้งาน index ประเภทต่าง ๆ เพื่อปรับปรุงประสิทธิภาพของการดึงข้อมูล
Pre-Requisite (ความรู้, เครื่องมืออุปกรณ์)
- Database PosgreSQL
- Text edittor
Course Outline
Day 1
- ทำความเข้าใจเกี่ยวกับ Data model ของการจัดการข้อมูล
- Relational
- NoSQL
- Key-value
- Document-based
- Column-based
- Graph
- Time-serie
- Search - Vector
- หลักการในการออกแบบ Relational Database Model
- ชุดคำสั่งของ SQL
- การสร้าง table, constraint
- การใช้งาน CRUD(Create, READ, Update, Delete) operation
- การจัดการความสัมพันธ์ระหว่าง table
- One-to-one
- One-to-many
- Many-to-many
- การใช้งาน Index สำหรับการปรับปรุงประสิทธิภาพของการดึงข้อมูล
- Nomalization vs Denormalization
- Design for read and Design for write
- ชุดคำสั่งของ SQL
Day 2
- การใช้งาน Database
- Architecture ของ Database
- Standalone
- Master-slave
- Cluster
- Design for scaling
- การออกแบบ และ ใช้งาน Database
- การใช้งาน Index ประเภทต่าง ๆ
- Architecture ของ Database
- Implementation PostgreSQL server
- Install
- Essential configuration and tuning
- Max connection
- Shared buffers
- Max memory
- Effective cache size
- Checkpoint timeout
- WAL buffers
- Enable logging
- Setup Streaming Replication (Log Shipping/Mirror)
- Monitoring Replication
- Check replication status
- Failover (Manual)
- Replication lag