
PostgreSQL là gì? Đó là một hệ quản trị cơ sở dữ liệu quan hệ (relational database) mã nguồn mở và miễn phí, lưu dữ liệu dưới dạng bảng có dòng và cột, cho phép truy vấn bằng ngôn ngữ SQL và đảm bảo mỗi giao dịch hoặc chạy trọn vẹn hoặc không ghi gì cả. So với MySQL, PostgreSQL mạnh hơn về các tính năng nâng cao như JSONB, phân quyền theo từng dòng dữ liệu và extension mở rộng; còn MySQL lại phổ biến hơn ở hosting giá rẻ và các website WordPress. Supabase chọn PostgreSQL vì nó là một cơ sở dữ liệu thật, chuẩn mực và mở rộng được, nên Supabase có thể dựng thêm API, đăng nhập, lưu trữ file lên trên mà không khoá dữ liệu của bạn lại.
Tôi viết bài này cho đúng nhóm người tôi hay gặp: chủ doanh nghiệp muốn hiểu đội kỹ thuật của mình đang dùng cái gì, và những bạn tự làm web app cùng AI nhưng chưa từng học cơ sở dữ liệu. Không cần biết lập trình vẫn đọc được.
PostgreSQL là gì và nó làm việc gì?
PostgreSQL là phần mềm chuyên giữ dữ liệu và trả lời câu hỏi về dữ liệu đó. Bạn có thể hình dung nó như một kho hồ sơ cực kỳ kỷ luật: mỗi loại thông tin nằm trong một bảng riêng (bảng khách hàng, bảng đơn hàng, bảng sản phẩm), mỗi bảng có các cột được khai báo sẵn kiểu dữ liệu, và muốn lấy gì ra thì phải hỏi bằng SQL.
Ba đặc điểm đáng nhớ nhất:
- Mã nguồn mở, miễn phí và đã được phát triển liên tục hàng chục năm bởi một cộng đồng lớn, không thuộc sở hữu của một công ty duy nhất.
- Quan hệ và chặt chẽ: bạn khai báo cột
gialà số thì không ai nhét chữ vào được; khai báo đơn hàng phải thuộc về một khách hàng có thật thì không tạo được đơn hàng mồ côi. - Giao dịch toàn vẹn: khi trừ tồn kho và ghi phiếu xuất, hoặc cả hai cùng thành công, hoặc cả hai cùng bị huỷ. Không có cảnh trừ kho rồi mà phiếu thì mất.
Chính vì vậy PostgreSQL được dùng cho web app quản lý, hệ thống tài chính — ngân hàng, hệ thống bản đồ và rất nhiều phần mềm doanh nghiệp. Nếu bạn còn lạ với khái niệm bảng và câu lệnh truy vấn, nên đọc trước bài SQL là gì và 5 câu lệnh người mới nên biết rồi quay lại đây.
Một ví dụ dễ hình dung: một cửa hàng vật liệu xây dựng ở tỉnh bán cho cả khách lẻ lẫn nhà thầu, công nợ kéo dài nhiều tháng. Khi còn để trên Google Sheet, chỉ cần hai nhân viên cùng sửa một dòng là số công nợ sai. Khi chuyển lên một cơ sở dữ liệu như PostgreSQL, mỗi lần ghi nhận thanh toán là một giao dịch độc lập, hệ thống tự khoá dòng đang sửa, nên hai người cùng thao tác vẫn ra số đúng.
Điểm mạnh nào khiến PostgreSQL phổ biến?
PostgreSQL phổ biến vì nó vừa làm tốt việc cơ bản, vừa có sẵn nhiều thứ mà cơ sở dữ liệu khác phải cài thêm hoặc trả tiền. Những điểm hay gặp nhất khi làm web app:
- Kiểu dữ liệu phong phú: ngoài số, chữ, ngày tháng còn có JSONB (lưu một khối dữ liệu dạng JSON nhưng vẫn truy vấn và đánh chỉ mục được), mảng, và kiểu ngày giờ có múi giờ — rất hợp với công ty có chi nhánh ở nhiều nước.
- Ràng buộc chặt: khoá chính, khoá ngoại, điều kiện kiểm tra giá trị. Dữ liệu sai bị chặn ngay từ cửa, không đợi đến lúc làm báo cáo mới phát hiện.
- Row Level Security (phân quyền tới từng dòng dữ liệu): bạn ra luật ngay trong cơ sở dữ liệu để nhân viên kinh doanh chỉ thấy khách của mình, trưởng vùng thấy cả vùng. Luật nằm ở tầng dữ liệu nên ai gọi vào cũng phải tuân theo.
- Extension (phần mở rộng cài thêm): PostGIS cho dữ liệu bản đồ, toạ độ, khoảng cách; pgvector cho tìm kiếm ngữ nghĩa phục vụ các ứng dụng AI.
- Bám sát chuẩn SQL: kiến thức bạn học dùng lại được ở nơi khác, và các công cụ phân tích dễ kết nối.
Cũng phải nói mặt chưa tiện: PostgreSQL nặng tay hơn với người mới, ít gói hosting giá rẻ cài sẵn, và nếu web app mở quá nhiều kết nối cùng lúc thì phải xử lý connection pooling chứ không "cắm là chạy" như MySQL trên cPanel.
So sánh MySQL và PostgreSQL: khác nhau ở đâu?
Nói ngắn gọn: MySQL thắng ở độ phổ biến và sự đơn giản, PostgreSQL thắng ở tính năng nâng cao và độ chặt chẽ. Cả hai đều mã nguồn mở, đều chạy tốt cho hầu hết doanh nghiệp vừa và nhỏ. Dưới đây là bảng so sánh MySQL và PostgreSQL theo những tiêu chí người không làm kỹ thuật cũng dùng được để quyết định.
| Tiêu chí | MySQL | PostgreSQL |
|---|---|---|
| Giấy phép | Mã nguồn mở, có bản thương mại của Oracle; nhánh MariaDB tách ra từ MySQL | Mã nguồn mở, giấy phép rất thoáng, không thuộc một công ty nào |
| Hosting giá rẻ | Gần như mặc định: đi kèm WordPress, cPanel, shared hosting | Ít gói rẻ cài sẵn hơn; thường dùng VPS hoặc dịch vụ quản lý như Supabase, Neon, RDS |
| Tính năng nâng cao | Đủ dùng cho web thường, ít thứ mở rộng | Nhiều: extension, kiểu dữ liệu tự định nghĩa, truy vấn phức tạp mạnh hơn |
| Làm việc với JSON | Có kiểu JSON, khả năng truy vấn hạn chế hơn | JSONB mạnh, đánh chỉ mục được, hợp khi dữ liệu mỗi dòng mỗi khác |
| Phân quyền theo dòng | Không có sẵn, phải xử lý ở tầng ứng dụng | Có sẵn Row Level Security |
| Hiệu năng | Rất nhanh với các truy vấn đọc đơn giản, nhiều lượt truy cập | Rất tốt với truy vấn phức tạp, ghi nhiều, nhiều bảng nối nhau |
| Công cụ quản trị | phpMyAdmin, MySQL Workbench — nhiều người Việt đã quen | pgAdmin, DBeaver, giao diện Table Editor của Supabase |
Về hiệu năng, xin nói thẳng: không bên nào thắng tuyệt đối. Kết quả phụ thuộc bài toán, cách thiết kế bảng, chỉ mục và cấu hình máy chủ. Một cơ sở dữ liệu thiết kế cẩu thả thì chọn bên nào cũng chậm. Ai hứa với bạn rằng đổi sang PostgreSQL là web tự nhanh gấp đôi thì nên hỏi lại cho kỹ.
Khi nào MySQL hợp hơn PostgreSQL?
Đừng đổi cho bằng bạn bằng bè. Tôi vẫn khuyên giữ MySQL trong các trường hợp:
- Website chạy WordPress hoặc các mã nguồn phổ thông khác — chúng sinh ra để sống với MySQL/MariaDB.
- Bạn dùng hosting dùng chung giá rẻ, nơi MySQL đã cài sẵn và có phpMyAdmin bấm chuột được.
- Đội kỹ thuật (hoặc bạn nhân viên IT kiêm nhiệm) đã quen MySQL nhiều năm. Người quen việc quan trọng hơn công nghệ hay.
- Phần mềm có sẵn bạn mua yêu cầu MySQL/MariaDB trong tài liệu cài đặt.
Supabase PostgreSQL là gì?
Supabase PostgreSQL là gì — hiểu đơn giản, Supabase không phải một loại cơ sở dữ liệu mới, mà là nền tảng dựng sẵn xung quanh một PostgreSQL thật. Khi bạn tạo một project trên Supabase, hệ thống cấp cho bạn một cơ sở dữ liệu PostgreSQL đầy đủ, rồi bổ sung các lớp dịch vụ bên trên:
- API tự sinh: tạo bảng xong là có ngay đường dẫn để web app gọi vào đọc/ghi, không cần viết phần máy chủ.
- Auth (đăng nhập): email, mật khẩu, đăng nhập bằng Google, quản lý người dùng.
- Storage (lưu trữ file): ảnh sản phẩm, ảnh chứng từ, file PDF.
- Realtime: dữ liệu đổi ở một máy thì máy khác thấy ngay, hợp với bảng theo dõi đơn hàng ở quán hoặc bảng việc của nhóm.
Điểm tôi đánh giá cao nhất là bạn vẫn viết SQL thật, vẫn tạo bảng, khoá ngoại, view, và vẫn xuất được toàn bộ dữ liệu ra mang đi nơi khác. Đây là khác biệt lớn so với nhiều nền tảng no-code đóng kín: khi muốn rời đi, bạn chỉ có một file xuất ra nửa vời. Nó cũng khác các cơ sở dữ liệu NoSQL kiểu Firebase — nơi dữ liệu lưu dạng tài liệu lồng nhau, linh hoạt lúc đầu nhưng khó làm báo cáo nối nhiều bảng về sau.
Vì Supabase chạy PostgreSQL thật nên Row Level Security trở thành tuyến phòng thủ chính: API mở ra ngoài internet, ai cũng gọi được, nhưng luật RLS quyết định họ thấy dòng nào. Nếu bạn định làm app thật với Supabase, hãy đọc kỹ bài Row Level Security là gì và cách bật RLS đúng cách trước khi mời người dùng vào.
Web app nhỏ nên chọn cơ sở dữ liệu nào?
Chọn theo tình huống, đừng chọn theo cái tên nghe oách. Đây là cách tôi tư vấn cho doanh nghiệp nhỏ:
- Website WordPress, landing page, blog → MySQL/MariaDB. Không có lý do gì để đổi.
- Web app mới, làm cùng AI hoặc dựng trên Supabase → PostgreSQL. Các công cụ AI lập trình hiện nay sinh code cho PostgreSQL rất tốt, tài liệu nhiều, và bạn có sẵn Auth, Storage để đỡ phải tự viết.
- Ứng dụng chạy trên một máy, dùng offline (máy tính quầy thu ngân, công cụ nội bộ của một người) → SQLite. Nó là một file duy nhất, không cần máy chủ, nhẹ và bền.
- Dữ liệu còn ít, vài người dùng, đang nằm trên Google Sheet → có thể chưa cần chuyển gì cả. Một xưởng may 15 người quản lý đơn hàng bằng Sheet vẫn chạy ổn nhiều năm. Hãy chuyển khi thấy dấu hiệu rõ: file chậm, dữ liệu trùng, nhiều người sửa đè nhau, cần phân quyền thật.
Và nhớ điều này: thiết kế bảng quan trọng hơn chọn hãng. Tôi đã sửa nhiều hệ thống chạy trên cơ sở dữ liệu "xịn" nhưng gom hết mọi thứ vào một bảng khổng lồ, kết quả là báo cáo nào cũng sai.
Bắt đầu với PostgreSQL thế nào?
Bạn có thể thử PostgreSQL trong khoảng một buổi tối, không cần biết lập trình. Các bước:
- Có một cơ sở dữ liệu: hoặc cài PostgreSQL trên máy tính của bạn, hoặc tạo một project miễn phí trên Supabase để khỏi lo cài đặt. Cách thứ hai nhanh hơn nhiều cho người mới.
- Cài công cụ giao diện: pgAdmin hoặc DBeaver. Hai công cụ này cho bạn nhìn bảng, bấm chuột xem dữ liệu như Excel, và có ô để gõ câu lệnh SQL. Dùng Supabase thì đã có sẵn Table Editor và SQL Editor trên trình duyệt.
- Tạo bảng đầu tiên. Mở ô chạy SQL và gõ:
create table san_pham (id bigint generated always as identity primary key, ten text, gia numeric);
Câu lệnh này tạo bảng san_pham với ba cột: id tự tăng và làm khoá chính, ten kiểu chữ, gia kiểu số. Sau đó thêm vài dòng dữ liệu và thử truy vấn:
select ten, gia from san_pham order by gia desc;
Chỉ cần làm được hai câu trên là bạn đã hiểu nguyên lý: khai báo cấu trúc trước, hỏi dữ liệu sau. Mọi thứ còn lại — nối bảng, lọc, tổng hợp — đều xây trên nền này. Trước khi tạo hàng chục bảng, bạn nên xem qua 6 bước thiết kế cơ sở dữ liệu cho người mới để khỏi phải làm lại từ đầu.
Lưu ý khi vận hành PostgreSQL
Cơ sở dữ liệu chạy được rồi thì phần việc thật mới bắt đầu. Năm việc tôi luôn dặn khách hàng kiểm tra:
- Sao lưu định kỳ và thử phục hồi ít nhất một lần. Bản sao lưu chưa bao giờ được khôi phục thử thì chưa tính là bản sao lưu.
- Quản lý số kết nối: mỗi kết nối tới PostgreSQL tốn tài nguyên. Web app nhiều người dùng nên đi qua connection pooling (bộ gom kết nối) thay vì mở kết nối mới cho từng lượt truy cập.
- Cập nhật phiên bản theo lịch, nhất là các bản vá bảo mật. Đừng để tụt lại vài phiên bản rồi mới nâng một lần.
- Không mở cổng cơ sở dữ liệu thẳng ra internet. Chỉ cho ứng dụng và dải IP tin cậy kết nối vào.
- Phân quyền user tối thiểu: ứng dụng dùng tài khoản chỉ đủ quyền cần thiết, không dùng tài khoản quản trị cao nhất cho mọi việc.
Với doanh nghiệp nhỏ không có người chuyên trách, dùng dịch vụ PostgreSQL có quản lý (Supabase và các nhà cung cấp tương tự) thường rẻ hơn tổng chi phí tự dựng và tự canh máy chủ. Các mức giá và hạn mức miễn phí thay đổi thường xuyên nên bạn hãy kiểm tra trên trang chính thức của nhà cung cấp tại thời điểm dùng, đừng tin con số trong bất kỳ bài blog nào, kể cả bài này.
Tóm tắt và bước tiếp theo
Ba ý cần nhớ: PostgreSQL là cơ sở dữ liệu quan hệ mã nguồn mở, miễn phí, chặt chẽ và mở rộng được; so với MySQL thì nó mạnh hơn ở tính năng nâng cao còn MySQL tiện hơn ở hosting rẻ và hệ sinh thái WordPress; Supabase chọn PostgreSQL vì đó là một cơ sở dữ liệu thật, cho phép dựng thêm API, Auth, Storage, Realtime lên trên mà không nhốt dữ liệu của bạn.
Bước tiếp theo để tự làm: tạo một project Supabase miễn phí, chạy đúng câu lệnh tạo bảng san_pham ở trên, thêm năm dòng dữ liệu, rồi thử viết một câu truy vấn lọc theo giá. Sau đó vẽ ra giấy ba bảng của công việc thật bạn đang làm (ví dụ: khách hàng — đơn hàng — chi tiết đơn hàng) và xem chúng nối với nhau bằng cột nào.
Xem thêm
Câu hỏi thường gặp
›Web app nhỏ nên chọn cơ sở dữ liệu nào?
Nếu là web app mới và bạn làm cùng AI hoặc dùng Supabase, hãy chọn PostgreSQL vì tài liệu nhiều và có sẵn đăng nhập, lưu trữ file. Website WordPress thì giữ MySQL/MariaDB, còn ứng dụng chạy một máy hoặc offline thì SQLite là đủ. Nếu dữ liệu còn ít và chỉ vài người dùng trên Google Sheet, bạn có thể chưa cần chuyển ngay.
›PostgreSQL có miễn phí không?
Có, PostgreSQL là phần mềm mã nguồn mở và miễn phí, bạn được dùng cho mục đích thương mại mà không phải trả phí bản quyền. Tiền bạn tốn là tiền máy chủ hoặc tiền dịch vụ lưu trữ có quản lý như Supabase, Neon, RDS. Mức giá các dịch vụ này thay đổi theo thời gian nên hãy kiểm tra trên trang chính thức của nhà cung cấp.
›Chuyển từ MySQL sang PostgreSQL có khó không?
Chuyển dữ liệu thuần tuý thường không khó vì có công cụ hỗ trợ, nhưng phần khó nằm ở code ứng dụng: một số hàm, kiểu dữ liệu và cách viết câu lệnh của hai bên khác nhau nên phải sửa và kiểm thử lại. Với hệ thống đang chạy ổn và không thiếu tính năng, tôi thường khuyên không đổi chỉ vì nghe nói PostgreSQL tốt hơn. Chỉ nên chuyển khi bạn thật sự cần những thứ MySQL không có, ví dụ Row Level Security hay extension.
›Supabase có phải là PostgreSQL không?
Supabase không phải một loại cơ sở dữ liệu riêng mà là nền tảng dựng trên một PostgreSQL thật. Mỗi project Supabase là một cơ sở dữ liệu PostgreSQL đầy đủ, được bổ sung API tự sinh, Auth, Storage và Realtime ở bên trên. Vì vậy bạn vẫn viết SQL bình thường và vẫn xuất được toàn bộ dữ liệu mang đi nơi khác.
Tác giả
Chuyên gia chuyển đổi số · Đại diện 5F Edu
Hơn 8 năm triển khai và tư vấn chuyển đổi số cho doanh nghiệp vừa và nhỏ: chuẩn hoá quy trình, xây phần mềm quản lý bằng AppSheet và web app, tự động hoá bằng N8N. Người làm kênh YouTube Nghiện AppSheet.



