PostgreSQL là gì?

Trả lời nhanh: PostgreSQL (còn gọi là Postgres) là hệ quản trị cơ sở dữ liệu quan hệ-đối tượng, mã nguồn mở, dùng ngôn ngữ SQL. Nó lưu dữ liệu dạng bảng, đảm bảo giao dịch ACID, hỗ trợ JSON, dữ liệu địa lý và mở rộng bằng extension. Giấy phép cho phép dùng thương mại miễn phí.

Điểm chính

  • PostgreSQL bắt nguồn từ dự án POSTGRES tại Đại học California, Berkeley, năm 1986, và phát hành bản mang tên này từ năm 1996.
  • Hai cơ chế cốt lõi là WAL (nhật ký ghi trước) và MVCC (đa phiên bản), giúp dữ liệu an toàn khi mất điện và cho phép đọc ghi đồng thời.
  • Điểm mạnh riêng là kiểu dữ liệu phong phú (JSONB, mảng, phạm vi) và hệ extension như PostGIS, pgvector.
  • Phù hợp cho hệ thống nghiệp vụ cần ràng buộc dữ liệu chặt; không phải kho phân tích cột hay cache tốc độ cao.
Mục lục
  1. PostgreSQL là gì và nó thuộc loại nào?
  2. PostgreSQL hoạt động thế nào bên trong?
  3. Các thành phần và tính năng nổi bật
  4. Ví dụ sử dụng PostgreSQL trong thực tế
  5. PostgreSQL dùng cho doanh nghiệp Việt Nam ra sao?
  6. PostgreSQL khác gì MySQL và các hệ khác?
  7. Ưu điểm và hạn chế
  8. Khi nào nên và không nên chọn PostgreSQL?
  9. Câu hỏi thường gặp

PostgreSQL là gì và nó thuộc loại nào?

PostgreSQL là một hệ quản trị cơ sở dữ liệu (DBMS) quan hệ-đối tượng. Theo trang chính thức postgresql.org, nó dùng và mở rộng ngôn ngữ SQL, kèm nhiều tính năng để lưu trữ và mở rộng các khối lượng dữ liệu phức tạp. Nếu bạn chưa quen khái niệm nền tảng, hãy đọc trước bài cơ sở dữ liệu là gì, rồi quay lại đây.

Cụm “quan hệ-đối tượng” nghĩa là ngoài bảng, hàng, cột như mọi hệ quan hệ, PostgreSQL cho phép bạn định nghĩa kiểu dữ liệu riêng, hàm riêng, toán tử riêng và kế thừa bảng. Đây là lý do nó linh hoạt hơn nhiều hệ cùng nhóm.

Một vài thông tin nền đã kiểm chứng:

  • Nguồn gốc của PostgreSQL có từ năm 1986, trong dự án POSTGRES tại Đại học California, Berkeley.
  • Theo Wikipedia, bản phát hành đầu tiên mang tên này ra đời ngày 8/7/1996, giấy phép là PostgreSQL License, một giấy phép mã nguồn mở thoáng.
  • Bản ổn định mới nhất tại thời điểm viết là dòng 18. PostgreSQL 18 phát hành ngày 25/9/2025, bản vá nhỏ 18.6 ra ngày 13/8/2026. PostgreSQL 19 đang ở giai đoạn beta, dự kiến phát hành chính thức cuối năm.

Cách đặt tên hay gây nhầm: tên đúng là PostgreSQL, “Postgres” là tên gọi tắt được cộng đồng chấp nhận. Chữ “SQL” ở cuối không có nghĩa nó chỉ là một ngôn ngữ truy vấn. Về ngôn ngữ, bạn xem bài SQL là gì.

PostgreSQL hoạt động thế nào bên trong?

Hiểu hai cơ chế dưới đây giúp bạn giải thích được vì sao Postgres đáng tin và vì sao đôi khi nó cần được “dọn dẹp”.

WAL: ghi nhật ký trước khi ghi dữ liệu

Khi ứng dụng gửi lệnh COMMIT, PostgreSQL ghi thay đổi vào WAL (write-ahead log, nhật ký ghi trước) và chỉ báo thành công sau khi bản ghi này đã xuống đĩa. Các trang dữ liệu thật được ghi xuống sau, tại điểm kiểm tra (checkpoint). Nếu máy mất điện giữa chừng, khi khởi động lại hệ thống phát lại WAL để đưa dữ liệu về trạng thái nhất quán. WAL cũng là nền của sao lưu theo thời điểm (PITR) và của sao chép dữ liệu sang máy dự phòng.

Sơ đồ bốn bước ghi dữ liệu trong PostgreSQL: ứng dụng gửi COMMIT, ghi WAL xuống đĩa, trả kết quả thành công, ghi trang dữ liệu sau khi
Sơ đồ khái niệm về cơ chế ghi trước nhật ký (WAL) của PostgreSQL.

MVCC: đọc không chặn ghi

PostgreSQL dùng MVCC (multiversion concurrency control, kiểm soát đồng thời đa phiên bản). Theo Wikipedia, cơ chế này quản lý đồng thời bằng cách cho mỗi giao dịch một ảnh chụp dữ liệu. Khi bạn UPDATE một dòng, Postgres không ghi đè mà tạo một phiên bản dòng mới; phiên bản cũ vẫn tồn tại cho các giao dịch đang đọc. Kết quả: người xem báo cáo không làm nhân viên nhập liệu bị chờ.

Cái giá là các phiên bản cũ (“dead tuple”) tích tụ. Tiến trình VACUUM, thường do autovacuum chạy nền, dọn chúng. Bảng bị cập nhật liên tục mà autovacuum không theo kịp sẽ phình to và chậm dần, đây là lỗi vận hành kinh điển của Postgres.

Mô hình tiến trình

Mỗi kết nối client được một tiến trình hệ điều hành riêng phục vụ. Vì vậy ứng dụng có hàng nghìn kết nối ngắn thường đặt thêm bộ gom kết nối (connection pooler) như PgBouncer phía trước. Cổng mặc định là 5432, và công cụ dòng lệnh chuẩn là psql.

Các thành phần và tính năng nổi bật

Kiến trúc bốn lớp của PostgreSQL từ trên xuống: extension, bộ xử lý truy vấn, lưu trữ gồm bảng chỉ mục WAL, hệ điều hành và đĩa
Sơ đồ khái niệm kiến trúc nhiều lớp, do tác giả bài tổng hợp từ tài liệu PostgreSQL.
  • Giao dịch ACID: nhóm nhiều thao tác thành một khối, hoặc cùng thành công hoặc cùng huỷ. Ví dụ trừ tiền tài khoản A và cộng tiền tài khoản B.
  • Ràng buộc dữ liệu: khoá chính, khoá ngoại, CHECK, UNIQUE, và ràng buộc loại trừ (EXCLUDE) để chặn hai lịch đặt phòng chồng giờ nhau.
  • Kiểu dữ liệu phong phú: JSON và JSONB (nhị phân, đánh chỉ mục được), mảng, kiểu phạm vi thời gian (tstzrange), UUID, kiểu mạng (inet).
  • Chỉ mục đa dạng: B-tree mặc định, GIN cho JSONB và tìm kiếm toàn văn, GiST cho dữ liệu không gian, BRIN cho bảng rất lớn sắp xếp theo thời gian.
  • Bảo mật mức dòng (row-level security): mỗi người dùng chỉ thấy dòng mình được phép, hữu ích cho hệ thống nhiều chi nhánh dùng chung một bảng.
  • Sao chép: streaming replication tạo bản dự phòng sao theo WAL; logical replication sao chép chọn lọc theo bảng, hay dùng khi nâng cấp phiên bản chính hoặc chuyển dữ liệu.
  • Phân vùng bảng (partitioning): chia bảng lớn theo tháng hoặc theo khu vực để truy vấn và xoá dữ liệu cũ nhanh hơn.

Extension: lý do nhiều đội chọn Postgres

Extension là gói mở rộng cài thêm vào chính máy chủ. PostGIS thêm kiểu dữ liệu và hàm không gian địa lý, trả lời được câu hỏi như “cửa hàng nào cách khách dưới 3 km”. pgvector thêm kiểu vector và chỉ mục tìm kiếm tương đồng, cho phép lưu embedding ngay cạnh dữ liệu nghiệp vụ, thường dùng trong các ứng dụng tìm kiếm ngữ nghĩa. Nếu bạn quan tâm nguồn dữ liệu cho mô hình, xem dữ liệu huấn luyện AI.

Ví dụ sử dụng PostgreSQL trong thực tế

Các tình huống sau là ví dụ minh hoạ, không phải số liệu của doanh nghiệp cụ thể.

Ví dụ 1: Hệ thống đặt sân thể thao, chống đặt trùng giờ

Một chuỗi sân cầu lông cần đảm bảo cùng một sân không có hai lượt đặt chồng giờ. Thay vì kiểm tra trong code ứng dụng (dễ lọt khi hai người bấm cùng lúc), bạn đặt ràng buộc ngay trong cơ sở dữ liệu:

CREATE EXTENSION IF NOT EXISTS btree_gist;

CREATE TABLE dat_san (
  id         bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  san_id     int NOT NULL,
  khach      text NOT NULL,
  khung_gio  tstzrange NOT NULL,
  EXCLUDE USING gist (san_id WITH =, khung_gio WITH &&)
);

Nếu hai lượt đặt cùng sân có khung giờ giao nhau, lượt thứ hai bị từ chối ở tầng dữ liệu. Đây là loại ràng buộc mà nhiều hệ khác không có sẵn.

Ví dụ 2: Lưu thuộc tính sản phẩm linh hoạt bằng JSONB

Một cửa hàng bán điện thoại, áo quần và đồ gia dụng có thuộc tính khác nhau. Bạn giữ các cột chung (mã, giá, tồn kho) ở dạng cột thường, còn thuộc tính riêng đưa vào cột JSONB:

CREATE TABLE san_pham (
  ma        text PRIMARY KEY,
  ten       text NOT NULL,
  gia       numeric(12,0) NOT NULL,
  thuoc_tinh jsonb
);

CREATE INDEX ON san_pham USING gin (thuoc_tinh);

SELECT ma, ten
FROM san_pham
WHERE thuoc_tinh @> '{"ram_gb": 8}';

Cách này cho bạn sự linh hoạt kiểu tài liệu mà vẫn giữ giao dịch và khoá ngoại. Khi cân nhắc giữa hai hướng, bạn có thể đọc so sánh SQL và NoSQL.

Ví dụ 3: Tìm cửa hàng gần khách với PostGIS

Chuỗi cửa hàng tiện lợi lưu toạ độ mỗi điểm bán vào cột kiểu geography. Truy vấn lấy các cửa hàng trong bán kính 3.000 mét quanh vị trí khách, sắp xếp theo khoảng cách, chạy được với chỉ mục GiST thay vì quét toàn bảng.

Ví dụ 4: Báo cáo nhẹ trên chính dữ liệu giao dịch

Với quy mô vừa, bạn có thể chạy báo cáo bằng hàm cửa sổ (window function) và CTE ngay trên một bản sao đọc (read replica), không đụng máy chủ ghi. Khi dữ liệu và số truy vấn phân tích tăng, nên tách sang kho riêng; xem data warehouse là gì.

PostgreSQL dùng cho doanh nghiệp Việt Nam ra sao?

Thực tế triển khai tại Việt Nam thường rơi vào ba hướng:

  • Tự cài trên máy chủ riêng hoặc máy ảo: kiểm soát tối đa, nhưng bạn tự lo sao lưu, nâng cấp, giám sát autovacuum và bản vá bảo mật.
  • Dịch vụ được quản lý (managed PostgreSQL) của các nhà cung cấp cloud: nhà cung cấp lo sao lưu và vá lỗi, bạn trả phí theo cấu hình. Hãy hỏi rõ phiên bản được hỗ trợ và vị trí đặt dữ liệu.
  • Đóng gói sẵn trong phần mềm: nhiều ứng dụng mã nguồn mở dùng Postgres làm nơi lưu dữ liệu; lúc này bạn chủ yếu cần biết cách sao lưu và nâng cấp.

Về vòng đời phiên bản, nhóm phát triển hỗ trợ mỗi bản chính khoảng 5 năm. Theo bảng tổng hợp của Instaclustr, PostgreSQL 14 được hỗ trợ đến tháng 11/2026. Nếu hệ thống của bạn còn chạy 14 hoặc cũ hơn, hãy lên kế hoạch nâng cấp ngay; PostgreSQL 13 trở xuống đã hết hỗ trợ. Khi chuyển dữ liệu từ hệ khác sang, đọc thêm bài data migration là gì.

Bản vá nhỏ của Postgres có thể sửa lỗ hổng bảo mật. Ví dụ đợt 18.4 theo thông báo chính thức sửa 11 lỗ hổng bảo mật và hơn 60 lỗi. Cập nhật bản vá nhỏ trong cùng phiên bản chính thường không cần chuyển đổi dữ liệu, nhưng vẫn nên đọc ghi chú phát hành trước khi áp dụng.

PostgreSQL khác gì MySQL và các hệ khác?

Tiêu chí PostgreSQL MySQL SQL Server
Giấy phép PostgreSQL License, thoáng GPL kèm bản thương mại của Oracle Thương mại (có bản miễn phí giới hạn)
Kiểu dữ liệu nâng cao JSONB, mảng, phạm vi, kiểu tự định nghĩa JSON, ít kiểu tự định nghĩa hơn JSON, XML, không gian
Mở rộng bằng extension Rất mạnh (PostGIS, pgvector) Hạn chế hơn Theo tính năng của hãng
Hệ sinh thái nền tảng Linux, Windows, macOS Linux, Windows, macOS Windows, Linux
Phù hợp điển hình Nghiệp vụ nhiều ràng buộc, dữ liệu hỗn hợp Ứng dụng web đọc nhiều, quen thuộc Doanh nghiệp dùng hệ Microsoft

Bảng trên so sánh ở mức đặc điểm chung; hiệu năng thực tế phụ thuộc cấu hình, chỉ mục và khối lượng công việc, nên cần thử trên dữ liệu của bạn. PostgreSQL cũng khác với hệ xử lý phân tích như kho dữ liệu cột: khác biệt giữa xử lý giao dịch và phân tích được giải thích ở bài OLAP và OLTP.

Ưu điểm và hạn chế

Ưu điểm

  • Miễn phí bản quyền, không bị khoá vào một nhà cung cấp.
  • Ràng buộc và giao dịch mạnh, giảm lỗi dữ liệu từ gốc.
  • Một hệ có thể gánh dữ liệu quan hệ, JSON, địa lý và vector nhờ extension.
  • Cộng đồng lớn, chu kỳ phát hành đều: mỗi năm một bản chính vào khoảng tháng 9 đến tháng 10.

Hạn chế

  • Cần hiểu VACUUM và autovacuum; bỏ qua sẽ dẫn đến bảng phình và truy vấn chậm.
  • Mô hình mỗi kết nối một tiến trình đòi hỏi bộ gom kết nối khi số kết nối lớn.
  • Nâng cấp bản chính (ví dụ 16 lên 18) cần quy trình riêng như pg_upgrade hoặc logical replication, không làm bằng cách ghi đè.
  • Không tối ưu cho phân tích hàng tỷ dòng kiểu cột; khi đó nên dùng kho dữ liệu chuyên dụng.

Khi nào nên và không nên chọn PostgreSQL?

Ma trận hai trục. Trục ngang: truy vấn đơn giản đến phức tạp. Trục dọc: ràng buộc dữ liệu ít đến nhiều. Ô trên phải: PostgreSQL rất phù
Ma trận 2×2 mang tính định hướng do tác giả bài đề xuất, không phải kết quả đo hiệu năng.

Nên chọn khi:

  • Bạn xây hệ thống đặt chỗ, kế toán, kho, CRM, nơi sai một dòng dữ liệu kéo theo thiệt hại tiền bạc.
  • Dữ liệu vừa có cột cố định vừa có phần linh hoạt (JSONB), hoặc cần truy vấn không gian địa lý.
  • Bạn muốn tránh phí bản quyền theo lõi CPU và chấp nhận tự vận hành hoặc thuê dịch vụ quản lý.

Không nên chọn (hoặc cần bổ sung hệ khác) khi:

  • Bạn cần bộ nhớ đệm hoặc hàng đợi độ trễ micro giây: các kho khoá-giá trị trong bộ nhớ hợp hơn. Tìm hiểu thêm ở NoSQL là gì.
  • Bạn phân tích hàng tỷ dòng với nhiều người dùng đồng thời: hãy dùng kho dữ liệu cột và nạp dữ liệu bằng data pipeline từ Postgres sang.
  • Đội của bạn không có ai quản trị cơ sở dữ liệu và cũng không dùng dịch vụ quản lý: rủi ro sao lưu và nâng cấp sẽ lớn hơn lợi ích.

Câu hỏi thường gặp

PostgreSQL có miễn phí cho doanh nghiệp không?

Có. Theo mô tả trên Wikipedia, PostgreSQL License là giấy phép mã nguồn mở thoáng, cho phép dùng, sửa và phân phối, kể cả mục đích thương mại. Bạn chỉ trả tiền cho hạ tầng, nhân sự vận hành hoặc dịch vụ quản lý nếu thuê ngoài.

PostgreSQL và Postgres có phải một không?

Có. Postgres là tên gọi tắt thông dụng của PostgreSQL. Tên chính thức là PostgreSQL, và nhóm phát triển là PostgreSQL Global Development Group.

PostgreSQL là SQL hay NoSQL?

Nó là hệ quan hệ dùng SQL. Tuy vậy, nhờ kiểu JSONB bạn có thể lưu dữ liệu linh hoạt giống kiểu tài liệu trong cùng cơ sở dữ liệu, nên một số đội dùng Postgres thay cho một hệ NoSQL riêng ở quy mô vừa.

Phiên bản PostgreSQL nào nên dùng hiện nay?

Dự án mới nên bắt đầu với bản chính mới nhất đã ổn định. Tại thời điểm 12/10/2026, đó là dòng 18, và các bản 18, 17, 16, 15 và 14 đang được hỗ trợ. Bản 14 sắp hết hỗ trợ vào tháng 11/2026. Luôn cài bản vá nhỏ mới nhất của dòng bạn chọn.

PostgreSQL có chạy được trên Windows không?

Có. PostgreSQL ban đầu thiết kế cho họ Unix nhưng nay chạy trên Windows, macOS và Linux. Môi trường máy chủ thực tế thường dùng Linux vì công cụ vận hành và tài liệu phong phú hơn.

Người mới nên học PostgreSQL từ đâu?

Hãy cài bản trên máy cá nhân, kết nối bằng psql, rồi tập các lệnh tạo bảng, chèn, truy vấn, JOIN và chỉ mục. Nền tảng cú pháp nằm ở bài SQL cơ bản; sau đó thử thêm JSONB và EXPLAIN ANALYZE để đọc kế hoạch thực thi truy vấn.

trang tin công nghệ VBPO cập nhật tin tức và kiến thức công nghệ cho doanh nghiệp Việt Nam. Xem thêm các bài cùng chuyên mục Dữ liệu & phân tích.