PostgreSQL là gì? So sánh chi tiết với MySQL
Khi học backend, bạn sẽ sớm đứng trước câu hỏi: chọn MySQL hay PostgreSQL?
Cả hai đều dùng SQL, đều miễn phí, đều phổ biến. Nhưng chúng có những điểm khác nhau quan trọng ảnh hưởng đến quyết định của bạn. Bài này phân tích từng điểm để bạn chọn đúng ngay từ đầu.
PostgreSQL là gì?
PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, ra mắt năm 1996. Nó được phát triển và duy trì bởi cộng đồng tình nguyện viên toàn cầu.
Những cái tên lớn đang dùng PostgreSQL: Apple, Instagram, Reddit, Spotify, Netflix.
Điểm nổi bật:
- Tuân thủ ACID hoàn toàn
- Hỗ trợ JSONB (lưu trữ và truy vấn JSON như NoSQL)
- Extension phong phú (PostGIS, v.v.)
- Hoàn toàn miễn phí
PostgreSQL vs MySQL: So sánh chi tiết
| Tiêu chí | PostgreSQL | MySQL |
|---|---|---|
| License | PostgreSQL License (hoàn toàn miễn phí) | GPL + bản thương mại (Oracle) |
| Tuân thủ ACID | Hoàn toàn | Chỉ khi dùng InnoDB |
| Hỗ trợ JSON | Xuất sắc (JSONB) | Hạn chế |
| Extension | Phong phú | Ít hơn |
| Query phức tạp | Mạnh hơn | Yếu hơn |
| Read-heavy workload | Tốt | Nhanh hơn một chút |
| Độ khó học | Cao hơn một chút | Dễ hơn một chút |
Tính năng nổi bật của PostgreSQL
JSONB — Lưu dữ liệu JSON như NoSQL
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
metadata JSONB
);
INSERT INTO products (name, metadata) VALUES (
'Laptop Dell XPS',
'{"brand": "Dell", "ram": 16, "storage": "512GB", "price": 25000000}'
);
SELECT name, metadata->>'brand' AS brand
FROM products
WHERE (metadata->>'ram')::int >= 16;
Transaction và ACID
BEGIN;
UPDATE accounts SET balance = balance - 500000
WHERE id = 1;
UPDATE accounts SET balance = balance + 500000
WHERE id = 2;
COMMIT;
Cài đặt và sử dụng PostgreSQL
Ubuntu/Debian:
sudo apt update
sudo apt install postgresql postgresql-contrib
macOS (Homebrew):
brew install postgresql
brew services start postgresql
Các lệnh cơ bản trong psql:
CREATE DATABASE myapp;
\c myapp
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO users (name, email)
VALUES ('Nguyễn Văn An', 'an@example.com');
SELECT * FROM users WHERE name LIKE 'Nguyễn%';
\dt
Nếu thích giao diện đồ họa, dùng pgAdmin — công cụ quản lý PostgreSQL miễn phí, trực quan.
Nên chọn PostgreSQL hay MySQL?
Chọn PostgreSQL khi:
- Bắt đầu dự án mới
- Cần lưu trữ và truy vấn JSON
- Transaction phức tạp, yêu cầu ACID chặt chẽ
- Dùng Render (hỗ trợ PostgreSQL natively)
- Dùng Django hoặc FastAPI
Chọn MySQL khi:
- Kế thừa dự án cũ đang dùng MySQL
- Team đã quen và có kinh nghiệm với MySQL
Kết luận
Cả hai đều là database tốt. Nhưng nếu bắt đầu một dự án mới trong 2026, PostgreSQL là lựa chọn hợp lý hơn — tính năng phong phú hơn, hoàn toàn miễn phí, và được cộng đồng developer hiện đại ưa chuộng.
Ôn lại SQL cơ bản trước? Xem bài SQL là gì? Hướng dẫn SQL cơ bản từ đầu.