PostgreSQL 16+
PostgreSQL là hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở, hỗ trợ giao dịch ACID, dữ liệu JSON, tìm kiếm toàn văn và nhiều phần mở rộng. ALODEV dùng PostgreSQL làm cơ sở dữ liệu mặc định, kể cả cho hệ thống quản trị nội bộ ALODEV AIO.
Dùng cho
Dữ liệu nghiệp vụ
Đơn hàng, tồn kho, khách hàng, hợp đồng, nhân sự. Giao dịch ACID giữ dữ liệu nhất quán khi nhiều người cùng thao tác.
Tìm kiếm tiếng Việt
Tìm kiếm toàn văn có sẵn, kết hợp phần mở rộng unaccent để tìm không dấu. Đủ dùng cho nhiều hệ thống mà chưa cần Elasticsearch.
Tìm kiếm ngữ nghĩa cho AI
Phần mở rộng pgvector lưu vector nhúng để tra cứu tài liệu nội bộ cho chatbot, ngay trong cơ sở dữ liệu đang dùng.
Dữ liệu theo thời gian
Nhật ký, số liệu cảm biến, lịch sử vị trí. Có thể dùng phân vùng bảng hoặc phần mở rộng TimescaleDB.
Dữ liệu cấu trúc linh hoạt
Cột JSONB lưu thông tin có cấu trúc thay đổi, như thuộc tính sản phẩm hay cấu hình, bên cạnh các bảng quan hệ.
Năng lực kỹ thuật
PostgreSQL ổn định, không tốn phí bản quyền và đáp ứng được phần lớn nhu cầu lưu trữ nghiệp vụ trong một hệ thống. Một cơ sở dữ liệu cho nhiều loại dữ liệu giúp giảm số thành phần phải vận hành và sao lưu.
Thiết kế lược đồ
Thiết kế bảng, quan hệ, ràng buộc và chỉ mục theo nghiệp vụ, tính đến lượng dữ liệu tăng dần theo năm.
Tối ưu truy vấn
Phân tích truy vấn chậm bằng EXPLAIN ANALYZE, bổ sung chỉ mục phù hợp, viết lại truy vấn hoặc dùng materialized view.
Phân vùng bảng lớn
Chia bảng theo thời gian hoặc theo đơn vị để truy vấn và dọn dữ liệu cũ nhanh hơn.
Bản sao dự phòng
Sao chép liên tục sang máy chủ dự phòng, có thể dùng bản sao cho các truy vấn chỉ đọc như báo cáo.
Sao lưu và khôi phục
Sao lưu định kỳ, lưu nhật ký WAL để khôi phục tới một thời điểm, và chạy thử khôi phục để chắc bản sao lưu dùng được.
Chuyển đổi từ MySQL, MongoDB
Chuyển dữ liệu bằng pgloader hoặc công cụ riêng, đối chiếu số lượng và tính toàn vẹn sau khi chuyển.
Nên dùng khi
- Dữ liệu nghiệp vụ có quan hệ rõ ràng: đơn hàng, khách hàng, kho, nhân sự
- Dữ liệu tài chính cần giao dịch đảm bảo tính nhất quán
- Cần thêm tìm kiếm, dữ liệu JSON, dữ liệu địa lý hoặc vector trong cùng một hệ thống
Không phù hợp khi
- Bộ nhớ đệm và phiên đăng nhập: Redis phù hợp hơn
- Phân tích trên khối dữ liệu rất lớn: cân nhắc ClickHouse hoặc BigQuery
- Dữ liệu hoàn toàn không có cấu trúc cố định và đội đã quen MongoDB
Công nghệ đi kèm
Nên chọn PostgreSQL hay MySQL?
Cả hai đều ổn định và phổ biến. PostgreSQL mạnh hơn ở kiểu dữ liệu JSON, tìm kiếm toàn văn và hệ phần mở rộng. MySQL phổ biến trong hệ sinh thái PHP như WordPress, Laravel. Với dự án mới, ALODEV chọn PostgreSQL, còn hệ thống đang chạy MySQL ổn định thì không nhất thiết phải chuyển.
Khi nào nên dùng MongoDB thay PostgreSQL?
Khi dữ liệu thật sự không có cấu trúc cố định và đội kỹ thuật đã quen MongoDB. Nhiều trường hợp dữ liệu linh hoạt có thể lưu bằng cột JSONB trong PostgreSQL. Dùng một cơ sở dữ liệu giúp đơn giản việc vận hành và sao lưu.
PostgreSQL chịu được lượng dữ liệu lớn không?
Được, nếu thiết kế phù hợp. Điểm nghẽn thường gặp là truy vấn thiếu chỉ mục, bảng lớn không được phân vùng và cấu hình bộ nhớ chưa điều chỉnh. Cần theo dõi truy vấn chậm định kỳ khi dữ liệu tăng.
Sao lưu thế nào để không mất dữ liệu?
Kết hợp sao lưu định kỳ với lưu nhật ký WAL liên tục để khôi phục tới thời điểm gần nhất. Bản sao lưu nên nằm ở ít nhất một nơi khác máy chủ chính. Quan trọng nhất là chạy thử khôi phục định kỳ, vì bản sao lưu chưa từng khôi phục thì chưa chắc dùng được.
Có cần cơ sở dữ liệu vector riêng cho chatbot AI không?
Thường là chưa cần. pgvector cho phép lưu và tìm vector ngay trong PostgreSQL, đủ cho kho tài liệu nội bộ của phần lớn doanh nghiệp. Khi số lượng vector rất lớn hoặc yêu cầu tốc độ đặc biệt, có thể cân nhắc Qdrant hoặc Pinecone.









