Cơ sở dữ liệu 22/09/2026 5 phút

Phân vùng bảng trong PostgreSQL: range, list, hash — chọn kiểu nào cho dữ liệu nào

PostgreSQL có ba kiểu phân vùng: RANGE theo khoảng (ngày, số) cho dữ liệu thời gian, LIST theo giá trị rời rạc (miền, loại), HASH chia đều theo băm khóa. Đo thật: dòng tự định tuyến vào đúng vùng (RANGE 100k mỗi năm, HASH cân bằng ~100k mỗi vùng), và một truy vấn chỉ quét đúng partition liên quan. Khi nào dùng kiểu nào. PostgreSQL 16.

Cơ sở dữ liệu 22/09/2026 5 phút

Sharding PostgreSQL: chia dữ liệu qua nhiều máy khi một máy không đủ

Khi ghi và dữ liệu vượt sức một máy, sharding chia bảng ngang qua nhiều máy chủ. Đo thật với postgres_fdw: bảng phân tán 1 triệu dòng qua 2 shard, truy vấn theo shard key chỉ route tới một máy (Foreign Scan), nhưng truy vấn theo cột khác fan-out tới mọi shard. Ba cách tiếp cận và vì sao chọn shard key là quyết định khó đảo ngược. PostgreSQL 16.

Cơ sở dữ liệu 22/09/2026 6 phút

Cập nhật và xoá hàng loạt trong PostgreSQL: vì sao chia lô chậm hơn mà vẫn nên làm

Một UPDATE/DELETE khổng lồ nhanh hơn về wall-clock nhưng khoá mọi dòng suốt cả giao dịch, dồn hàng trăm MB WAL một cục và phình bảng gần gấp đôi. Đo thật: UPDATE 2 triệu dòng sinh 722 MB WAL và 2 triệu dead tuple; chia lô kèm VACUUM giữ bloat thấp. PostgreSQL 16.

Lập trình 22/09/2026 7 phút

MinHash: đo hai tập giống nhau bao nhiêu bằng 1KB thay vì cả tập

Đo độ tương đồng hai tập lớn (Jaccard) cần giao chúng — tốn khi có triệu tập. MinHash rút mỗi tập thành một chữ ký vài trăm số, và một sự thật đẹp: xác suất min-hash của hai tập trùng nhau đúng bằng Jaccard similarity. Bài này tự cài và đo thật: MinHash ước lượng Jaccard bám sát giá trị thật, sai số giảm theo 1/√k, và mỗi tập chỉ tốn 1KB thay vì 250KB. Nền của phát hiện trùng lặp và gợi ý.