T
Trinh Digital
Xây dựng Hệ thống

Database cho người mới: MySQL vs PostgreSQL vs MongoDB — Chọn cái nào?

Trinh Digital · · 11 phút đọc

Chọn database là một trong những quyết định kỹ thuật quan trọng nhất khi xây dựng hệ thống — và cũng là quyết định mà nhiều SME Việt Nam chọn sai ngay từ đầu. Theo khảo sát Stack Overflow Developer Survey (2025), MySQL vẫn là database phổ biến nhất (41%), tiếp theo là PostgreSQL (33%) và MongoDB (25%). Nhưng phổ biến không có nghĩa là phù hợp cho mọi dự án. Bài viết này giúp bạn hiểu rõ ưu nhược điểm của từng loại database và chọn đúng cho nhu cầu.

Database là gì? (Giải thích cho non-tech)

Database (cơ sở dữ liệu) là nơi lưu trữ dữ liệu một cách có tổ chức để bạn có thể tìm kiếm, thêm, sửa, xóa dữ liệu một cách nhanh chóng.

Ví dụ thực tế:

  • Website bán hàng: Database lưu thông tin sản phẩm (tên, giá, mô tả, hình ảnh), thông tin khách hàng (tên, SĐT, địa chỉ), đơn hàng (ngày, sản phẩm, số lượng, tổng tiền)
  • CRM: Database lưu thông tin liên hệ, lịch sử tương tác, pipeline bán hàng
  • Ứng dụng chat: Database lưu tin nhắn, user profile, nhóm chat

Hai loại database chính

LoạiCách tổ chứcVí dụHình dung
SQL (Relational)Bảng, hàng, cột — giống ExcelMySQL, PostgreSQLNhiều sheet Excel liên kết nhau
NoSQL (Non-relational)Document, key-value, graphMongoDB, RedisNhiều file JSON trong thư mục

MySQL: “Toyota Camry” của database

MySQL là gì?

MySQL là hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) mã nguồn mở, phổ biến nhất thế giới. Ra đời từ 1995, hiện thuộc sở hữu Oracle.

Ưu điểm

Ưu điểmChi tiết
Phổ biến nhất90% shared hosting hỗ trợ, dễ tìm developer
Dễ họcCú pháp SQL cơ bản, nhiều tài liệu tiếng Việt
Hiệu suất tốt cho READTối ưu cho ứng dụng đọc nhiều (website, blog, CMS)
Ecosystem rộngWordPress, Laravel, Magento, Drupal đều mặc định dùng MySQL
phpMyAdminGiao diện quản lý đồ họa miễn phí, dễ dùng
Replication đơn giảnMaster-slave replication dễ setup

Nhược điểm

Nhược điểmChi tiết
Tính năng ít hơn PostgreSQLKhông có JSONB, partial index, CTE recursive
Thuộc OracleRủi ro licensing trong tương lai
Full-text search yếuCần Elasticsearch cho search phức tạp
Concurrent writesXử lý ghi đồng thời kém hơn PostgreSQL

Use case phù hợp

  • Website WordPress, blog, CMS
  • Ứng dụng web đơn giản (CRUD)
  • E-commerce nhỏ–vừa (< 1 triệu sản phẩm)
  • Dự án cần lên nhanh, MVP

Chi phí

  • MySQL Community: Miễn phí
  • MySQL Enterprise: Từ $5.000/năm/server
  • MariaDB (fork): Miễn phí, tương thích 99% MySQL
  • Amazon RDS for MySQL: Từ ~500.000 VND/tháng

PostgreSQL: “BMW” của database

PostgreSQL là gì?

PostgreSQL (hay “Postgres”) là hệ quản trị cơ sở dữ liệu quan hệ-đối tượng, mã nguồn mở. Ra đời từ 1996, phát triển bởi cộng đồng. Được mệnh danh “the world’s most advanced open source database”.

Ưu điểm

Ưu điểmChi tiết
Tính năng phong phúJSONB, arrays, full-text search, CTE, window functions
ACID compliance tốt nhấtĐảm bảo tính toàn vẹn dữ liệu tuyệt đối
Concurrent xử lý tốtMVCC hiệu quả, ghi đồng thời không block đọc
ExtensiblePostGIS (maps), pg_trgm (fuzzy search), TimescaleDB (time-series)
Miễn phí hoàn toànKhông lo licensing (BSD license)
JSON supportJSONB cho phép lưu + query JSON nhanh như NoSQL

Nhược điểm

Nhược điểmChi tiết
Ít phổ biến hơn MySQLKhó tìm developer Việt Nam có kinh nghiệm
Cấu hình phức tạp hơnTuning performance cần kiến thức sâu
Hosting hạn chếÍt shared hosting hỗ trợ (so với MySQL)
Replication phức tạp hơnStreaming replication cần cấu hình kỹ

Use case phù hợp

  • Ứng dụng tài chính, ngân hàng (cần ACID nghiêm ngặt)
  • E-commerce lớn (> 1 triệu sản phẩm, nhiều concurrent writes)
  • GIS/Maps application (PostGIS)
  • Ứng dụng cần lưu cả structured + semi-structured data
  • Analytics, reporting phức tạp
  • Dự án mới chọn tech stack hiện đại

Chi phí

  • PostgreSQL: Hoàn toàn miễn phí
  • Amazon RDS for PostgreSQL: Từ ~600.000 VND/tháng
  • Managed PostgreSQL (DigitalOcean): Từ ~370.000 VND/tháng

MongoDB: “SUV đa dụng” của database

MongoDB là gì?

MongoDB là database NoSQL dạng document, lưu dữ liệu dưới dạng JSON-like documents (BSON). Ra đời 2009, là NoSQL database phổ biến nhất.

Ưu điểm

Ưu điểmChi tiết
Schema linh hoạtKhông cần định nghĩa cấu trúc trước, thêm field tự do
Scale ngang dễ dàngSharding tự động, phù hợp big data
Developer-friendlyJSON format quen thuộc với web developer
Real-timeChange streams cho ứng dụng real-time
Atlas (managed)MongoDB Atlas dễ dùng, free tier rộng rãi

Nhược điểm

Nhược điểmChi tiết
Không có JOINPhải dùng $lookup (chậm) hoặc denormalize data
Tốn dung lượngDocument lưu field name cho mỗi record → tốn 2–5x
ACID hạn chếMulti-document transactions chỉ từ v4.0, vẫn chậm hơn SQL
Dễ thiết kế saiSchema-less không có nghĩa là không cần thiết kế
Chi phí cao khi scaleRAM-intensive, cần nhiều RAM hơn SQL databases

Use case phù hợp

  • Content Management System (CMS) với content đa dạng
  • IoT data collection (nhiều thiết bị, data format khác nhau)
  • Catalog/inventory với attributes biến đổi
  • Real-time analytics, event logging
  • Prototype/MVP cần linh hoạt thay đổi schema

Chi phí

  • MongoDB Community: Miễn phí
  • MongoDB Atlas (managed): Free tier (512MB), paid từ ~620.000 VND/tháng
  • Self-hosted: Miễn phí phần mềm, trả tiền server

Bảng so sánh tổng hợp

Tiêu chíMySQLPostgreSQLMongoDB
LoạiRelational (SQL)Relational-Object (SQL)Document (NoSQL)
LicenseGPL (Oracle)BSD (Cộng đồng)SSPL
ACIDCó (InnoDB)Có (mạnh nhất)Có (từ v4.0, hạn chế)
JSON supportCó (JSON type)Tốt (JSONB, indexable)Native (document)
Full-text searchCơ bảnTốtTốt (Atlas Search)
ScalingVertical + Read replicaVertical + Read replicaHorizontal (sharding)
Learning curveThấpTrung bìnhThấp–Trung bình
Hosting Việt NamRất phổ biếnÍt phổ biếnCloud only
Community VNLớnNhỏ–Trung bìnhNhỏ
Phù hợpWeb truyền thốngỨng dụng phức tạpBig data, flexible schema

Flowchart: Chọn database nào?

Trả lời các câu hỏi sau:

Q1: Dữ liệu có cấu trúc rõ ràng (bảng, hàng, cột) không?

  • Có → Q2
  • Không / Không chắc → Xem xét MongoDB

Q2: Cần JOIN phức tạp giữa nhiều bảng không?

  • Có → Q3
  • Không → MySQL hoặc MongoDB đều được

Q3: Cần tính toàn vẹn dữ liệu tuyệt đối (tài chính, giao dịch)?

  • Có → PostgreSQL
  • Không → Q4

Q4: Dùng WordPress/Laravel/PHP framework?

  • Có → MySQL (ecosystem tốt nhất)
  • Không → PostgreSQL (tính năng nhiều hơn)

Khuyến nghị theo loại dự án

Loại dự ánKhuyến nghịLý do
Website WordPressMySQL/MariaDBTương thích mặc định, ecosystem lớn
E-commerce WooCommerceMySQL/MariaDBWordPress stack
E-commerce customPostgreSQLConcurrent writes, JSONB cho product attributes
SaaS applicationPostgreSQLMulti-tenant, advanced features
Mobile app backendPostgreSQL hoặc MongoDBTùy data structure
CMS headlessMongoDBFlexible content schema
IoT / Real-timeMongoDB + RedisTime-series data, caching
Analytics / BIPostgreSQLWindow functions, CTEs
Blog đơn giảnMySQLĐơn giản, rẻ, dễ host

Chi phí thực tế cho SME Việt Nam

Self-hosted (trên VPS của bạn)

DatabaseLicenseVPS tối thiểuChi phí/tháng
MySQL/MariaDBMiễn phí1GB RAM~100.000 VND
PostgreSQLMiễn phí1GB RAM~100.000 VND
MongoDBMiễn phí2GB RAM~200.000 VND

Managed (nhà cung cấp quản lý)

ServiceGói nhỏ nhấtChi phí/tháng
DigitalOcean Managed MySQL1GB RAM~370.000 VND
DigitalOcean Managed PostgreSQL1GB RAM~370.000 VND
MongoDB Atlas M102GB RAM~1.500.000 VND
Amazon RDSdb.t3.micro~500.000 VND
PlanetScale (MySQL)Free tier 5GB0 VND
Supabase (PostgreSQL)Free tier 500MB0 VND

Khuyến nghị cho SME

  • Budget < 500.000 VND/tháng: Self-hosted MySQL/PostgreSQL trên VPS, hoặc free tier PlanetScale/Supabase
  • Budget 500.000–2.000.000 VND/tháng: Managed database (DigitalOcean, Amazon RDS)
  • Budget > 2.000.000 VND/tháng: Enterprise managed với high availability

Sai lầm phổ biến khi chọn database

1. “Dùng MongoDB vì nó trendy”

MongoDB không phải silver bullet. Nếu data của bạn có quan hệ rõ ràng (khách hàng → đơn hàng → sản phẩm), SQL database sẽ phù hợp hơn nhiều. Dùng MongoDB cho relational data = đau đầu với denormalization và data inconsistency.

2. “MySQL cũ rồi, phải dùng PostgreSQL”

MySQL 8.0 đã có rất nhiều cải tiến: window functions, CTEs, JSON support. Nếu bạn dùng WordPress hay Laravel, MySQL vẫn là lựa chọn tốt nhất. Đừng đổi database chỉ vì “người ta nói PostgreSQL tốt hơn”.

3. “Cứ dùng gì cũng được, sau này đổi”

Migration database là một trong những việc đau đầu nhất trong software engineering. Chọn đúng từ đầu tiết kiệm hàng trăm giờ và hàng chục triệu VND sau này.

4. “Cần big data nên dùng MongoDB”

“Big data” không tự động có nghĩa là cần NoSQL. PostgreSQL xử lý tốt hàng trăm triệu records. MongoDB chỉ thực sự cần thiết khi data format biến đổi nhiều hoặc cần horizontal sharding.

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

Database nào nhanh nhất?

Không có database “nhanh nhất” tuyệt đối — phụ thuộc vào loại workload. MySQL nhanh hơn cho simple reads. PostgreSQL nhanh hơn cho complex queries và concurrent writes. MongoDB nhanh hơn cho document lookups. Quan trọng nhất là thiết kế schema đúng và có indexing phù hợp — bất kỳ database nào cũng chậm nếu thiết kế sai.

Có nên dùng 2 database cùng lúc không?

Hoàn toàn có thể — gọi là polyglot persistence. Ví dụ: PostgreSQL cho dữ liệu chính + Redis cho caching + Elasticsearch cho search. Tuy nhiên, với SME, bắt đầu với 1 database chính là đủ. Thêm database khác khi thực sự cần.

MariaDB có khác MySQL không?

MariaDB là fork của MySQL, tương thích 95%+. MariaDB nhanh hơn một chút, có thêm một số tính năng, và hoàn toàn miễn phí (không lo Oracle). Nếu chọn MySQL, khuyến nghị dùng MariaDB.

Tôi không biết SQL, nên bắt đầu từ đâu?

Bắt đầu với MySQL vì tài liệu tiếng Việt nhiều nhất, cộng đồng lớn nhất. Học SQL cơ bản (SELECT, INSERT, UPDATE, DELETE, JOIN) mất khoảng 1–2 tuần. Sau đó tìm hiểu thêm indexing và query optimization.

Nếu chọn sai database thì sao?

Migration database khó nhưng không phải không thể. Từ MySQL sang PostgreSQL tương đối straightforward (cú pháp SQL gần giống). Từ SQL sang MongoDB (hoặc ngược lại) phức tạp hơn nhiều vì phải redesign data model. Nếu không chắc, hãy liên hệ Trinh Digital để được tư vấn trước khi bắt đầu.

Kết luận

Chọn database là quyết định dài hạn — đừng chọn vì trend, hãy chọn vì phù hợp. Với đa số website và ứng dụng SME Việt Nam, MySQL/MariaDB là lựa chọn an toàn. Nếu cần tính năng nâng cao hoặc xây dựng ứng dụng mới, PostgreSQL là hướng đi hiện đại. MongoDB chỉ nên dùng khi data thực sự flexible và không có quan hệ phức tạp.

Cần tư vấn thiết kế database hoặc xây dựng hệ thống cho doanh nghiệp? Liên hệ Trinh Digital — chúng tôi giúp bạn chọn đúng tech stack từ đầu, tránh chi phí sửa sai sau này.

#MySQL#MongoDB#database#PostgreSQL
Chia sẻ: Z

Sẵn sàng chuyển đổi số cùng Trinh Digital?

Liên hệ ngay để nhận tư vấn miễn phí. Đội ngũ chuyên gia sẽ phân tích nhu cầu và đề xuất giải pháp tối ưu.

Zalo