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 (ความรู้, เครื่องมืออุปกรณ์)

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

Day 2

  • การใช้งาน Database
    • Architecture ของ Database
      • Standalone
      • Master-slave
      • Cluster
    • Design for scaling
    • การออกแบบ และ ใช้งาน Database
    • การใช้งาน Index ประเภทต่าง ๆ
  • 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