# PostgreSQL

***

### 🚀 **Lộ trình học PostgreSQL: Từ cơ bản đến chuyên sâu**

***

#### 🟢 **PHẦN 1: CƠ BẢN (Foundation)**

> ✅ Mục tiêu: Hiểu cấu trúc cơ bản, biết sử dụng hiệu quả SQL chuẩn

* [ ] Cài đặt và cấu hình PostgreSQL (CLI, pgAdmin, DBeaver)
* [ ] Cấu trúc cơ bản: database, schema, table, column, row
* [ ] CRUD: `SELECT`, `INSERT`, `UPDATE`, `DELETE`
* [ ] Kiểu dữ liệu: `INTEGER`, `VARCHAR`, `TEXT`, `BOOLEAN`, `DATE`, `JSON`, `UUID`, `ARRAY`
* [ ] Ràng buộc: `PRIMARY KEY`, `FOREIGN KEY`, `UNIQUE`, `CHECK`, `NOT NULL`
* [ ] Index cơ bản: `B-TREE`, `UNIQUE`
* [ ] Transaction cơ bản: `BEGIN`, `COMMIT`, `ROLLBACK`
* [ ] Work with psql CLI

***

#### 🟡 **PHẦN 2: TRUNG CẤP (Query & Performance)**

> ✅ Mục tiêu: Viết truy vấn hiệu quả, tối ưu hóa truy vấn và chỉ mục

* [ ] Subqueries, Joins (INNER, LEFT, RIGHT, CROSS)
* [ ] Common Table Expressions (CTE): `WITH`
* [ ] Window Functions: `ROW_NUMBER()`, `RANK()`, `LEAD()`, `LAG()`
* [ ] Aggregate Functions nâng cao
* [ ] View và Materialized View
* [ ] Index nâng cao: `GIN`, `GiST`, `BRIN`, `Hash`, `Partial Index`, `Expression Index`
* [ ] EXPLAIN & EXPLAIN ANALYZE để tối ưu truy vấn
* [ ] Analyze & Vacuum
* [ ] Tối ưu hóa schema & denormalization

***

#### 🔵 **PHẦN 3: NÂNG CAO (Advanced Features)**

> ✅ Mục tiêu: Làm chủ PostgreSQL như một kiến trúc sư hệ thống

* [ ] Transaction Isolation Levels và MVCC chi tiết
* [ ] Locking: Row-level, Table-level, Advisory Locks
* [ ] Stored Procedures & Triggers (PL/pgSQL)
* [ ] JSON & JSONB: indexing, querying, performance
* [ ] Full Text Search: `tsvector`, `tsquery`, ranking
* [ ] Functions, Custom Types, Enum
* [ ] Extension hay dùng: `uuid-ossp`, `pg_stat_statements`, `PostGIS`, `citext`
* [ ] Partitioning (Declarative & Inherited)
* [ ] Foreign Data Wrapper (FDW): kết nối external sources

***

#### 🔴 **PHẦN 4: VẬN HÀNH & TRIỂN KHAI (DevOps & HA)**

> ✅ Mục tiêu: Quản trị và triển khai PostgreSQL ở môi trường production

* [ ] Cấu hình PostgreSQL: `postgresql.conf`, `pg_hba.conf`
* [ ] Connection Pooling: `PgBouncer`, `pgpool-II`
* [ ] Backup & Restore: `pg_dump`, `pg_restore`, logical & physical
* [ ] Replication: streaming replication, hot standby, async/sync mode
* [ ] High Availability: `Patroni`, `Etcd`, `HAProxy`
* [ ] Monitoring & Logging: `pg_stat_activity`, `pg_stat_user_tables`, Prometheus + Grafana
* [ ] Security: roles, privileges, SSL, encryption, RLS (Row-Level Security)

***

#### 🧠 **PHẦN 5: CASE STUDIES & THỰC TIỄN**

> ✅ Mục tiêu: Biết khi nào chọn PostgreSQL thay vì MySQL, NoSQL, v.v.

* [ ] Khi nào dùng JSONB thay vì MongoDB?
* [ ] Dùng materialized view cho dashboard real-time
* [ ] Tối ưu truy vấn báo cáo lớn (Data Warehouse pattern)
* [ ] Dùng PostgreSQL cho Event Sourcing
* [ ] PostgreSQL trong hệ thống Microservice

***

### 🧩 Tips tài nguyên học tập:

* 🔹 [PostgreSQL Documentation](https://www.postgresql.org/docs/)
* 🔹 Sách: *"PostgreSQL Up & Running"*, *"Mastering PostgreSQL in Application Development"*
* 🔹 Tools: `EXPLAIN.depesz.com`, `pgAdmin`, `DBeaver`, `pgHero`

***
