Background của tôi: 20 năm SQL Server, 5 năm PostgreSQL
Tôi là người .NET từ thời .NET Framework 1.1. Cả sự nghiệp gắn với Microsoft stack - SQL Server, Azure SQL, Entity Framework. Tôi biết SQL Server rất sâu: execution plans, clustered vs non-clustered indexes, columnstore, Always On AG, TDE, row-level security.
Năm 2019, lần đầu tiên tôi chủ động chọn PostgreSQL cho một dự án production. Lý do ban đầu là đơn giản: startup không muốn trả license SQL Server, họ đang deploy lên Linux containers, và team có một developer từ background open source.
5 năm sau, tôi đã làm với PostgreSQL trên ít nhất 8 dự án khác nhau. Và tôi có quan điểm thực chiến hơn nhiều so với benchmark paper.
Deep-dive kỹ thuật: Sự khác biệt thực sự quan trọng
1. Licensing và cost - không thể bỏ qua
SQL Server:
- SQL Server Standard: ~$900/core/năm (Enterprise: ~$3700/core/năm)
- Azure SQL Database: Từ $15/tháng (Basic) đến $750+/tháng cho production workload
- Free tiers: SQL Server Express (giới hạn 10GB, 1GB RAM), Developer edition (không dùng production)
PostgreSQL:
- Hoàn toàn free, open source (PostgreSQL License)
- Cloud managed: AWS RDS PostgreSQL, Azure Database for PostgreSQL, Google Cloud SQL - pricing cạnh tranh hơn SQL Server managed
Với startup, đây thường là yếu tố quyết định. Với enterprise đã có Microsoft EA (Enterprise Agreement), SQL Server licensing có thể đã được cover - lúc này PostgreSQL không có lợi thế cost nữa.
2. Ecosystem và tooling
SQL Server mạnh hơn ở:
- SSMS (SQL Server Management Studio): GUI tốt nhất trong ngành, không phải bàn cãi
- SQL Server Profiler / Extended Events: Deep query analysis
- Reporting Services (SSRS): Built-in reporting stack
- Integration Services (SSIS): ETL native
- Always On Availability Groups: HA/DR setup được tested và documented kỹ lưỡng
- .NET integration: EF Core, Dapper trên SQL Server có nhiều edge case được handle tốt hơn
PostgreSQL mạnh hơn ở:
- Extensions ecosystem: PostGIS (geospatial), pg_trgm (fuzzy search), TimescaleDB (time-series), pgvector (vector search cho AI)
- JSON/JSONB: Native JSON document store với indexing tốt hơn SQL Server JSON
- Full-text search: Built-in FTS tốt hơn SQL Server FTS cho nhiều language
- Table partitioning: Linh hoạt hơn SQL Server partition schemes
- Open source: Community extensions, no vendor lock-in
3. Performance - context matters
Tôi không tin vào benchmark trên internet vì benchmark đó không có context của bạn. Nhưng có một số pattern tôi observe:
- OLTP workload với simple reads/writes: Tương đương nhau ở cùng hardware
- Complex analytical queries: SQL Server columnstore + in-memory OLTP rất mạnh
- Write-heavy workload với concurrent transactions: PostgreSQL MVCC model thường handle tốt hơn
- Full-text search: PostgreSQL thường beat SQL Server FTS nếu dùng extensions đúng
- JSON heavy workload: PostgreSQL JSONB có index tốt hơn đáng kể
4. .NET integration năm 2026
Với EF Core 9+, cả hai đều được support excellent:
// SQL Server
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(connectionString,
sqlOptions => sqlOptions.EnableRetryOnFailure(3)));
// PostgreSQL với Npgsql
builder.Services.AddDbContext<AppDbContext>(options =>
options.UseNpgsql(connectionString,
npgsqlOptions => npgsqlOptions.EnableRetryOnFailure(3)));
Sự khác biệt chủ yếu ở:
- DateTimeOffset: PostgreSQL dùng
timestamp with time zone, mapping phức tạp hơn một chút - String collation: PostgreSQL case-sensitive by default, SQL Server case-insensitive by default
- Sequences vs Identity: PostgreSQL dùng sequences, cần configure nếu muốn behavior giống SQL Server
- Bulk insert: SqlBulkCopy (SQL Server) rất nhanh; PostgreSQL có
COPYcommand nhưng cần thêm work với EF Core
Kinh nghiệm dự án: Khi tôi chọn mỗi cái
Chọn SQL Server khi:
Một khách hàng lớn của tôi - công ty logistics với hệ thống có từ năm 2008 - họ muốn migrate từ on-premise SQL Server sang cloud. Tôi recommend Azure SQL Database (managed SQL Server):
- Team DBA của họ biết SQL Server sâu từ 15 năm
- Có SQL Server Enterprise license trong Microsoft EA
- Sử dụng SSIS cho ETL, SSRS cho reporting
- On-call playbook đã được viết cho SQL Server
Migrate sang PostgreSQL ở đây sẽ là rủi ro không cần thiết. ROI âm.
Chọn PostgreSQL khi:
Một startup khác - e-commerce với catalog >10 triệu sản phẩm, cần full-text search tiếng Việt, deployment trên Kubernetes. Tôi recommend PostgreSQL + pgvector + pg_trgm:
- No existing SQL Server investment
- Team full-stack JavaScript/TypeScript với một .NET backend dev
- Cần fuzzy search, geospatial features cho "tìm cửa hàng gần nhất"
- Budget startup - PostgreSQL on GCP Cloud SQL rẻ hơn Azure SQL Database đáng kể
Framework quyết định của tôi
Khi ai hỏi SQL Server hay PostgreSQL, tôi đi qua checklist này:
1. Team knowledge
Team của bạn đã biết cái nào? Learning curve cho database production có thể mất 6-12 tháng để thực sự comfortable. Đừng underestimate.
2. Existing investment
Có SQL Server license không? Có DBA biết SQL Server không? Có existing infrastructure? Nếu có - SQL Server có thể rẻ hơn khi tính total cost.
3. Cloud strategy
Nếu Azure-first: Azure SQL Database mature và well-integrated hơn. Nếu AWS hoặc GCP: RDS PostgreSQL hay Cloud SQL PostgreSQL thường performance/price tốt hơn.
4. Specific feature requirements
Cần PostGIS? PostgreSQL. Cần pgvector cho AI/embedding search? PostgreSQL. Cần SSRS reporting? SQL Server. Cần native JSON document với complex queries? PostgreSQL JSONB thắng.
5. Long-term ownership
Ai sẽ maintain sau 3-5 năm? Recruit DBA SQL Server hay PostgreSQL dễ hơn ở market của bạn?
Triết lý: Vendor lock-in vs ecosystem fit
Có một argument thường gặp: "PostgreSQL open source, tránh vendor lock-in."
Tôi không hoàn toàn đồng ý với framing này. Vendor lock-in có nhiều dạng:
- SQL Server: Lock-in với Microsoft, nhưng mature ecosystem, excellent tooling, well-tested HA
- PostgreSQL: "Free" nhưng nếu dùng RDS PostgreSQL hay Azure Database for PostgreSQL, bạn vẫn lock-in với cloud vendor - chỉ là ở tầng infrastructure thay vì license
Lock-in không phải lúc nào cũng xấu. Nếu vendor đó reliable, pricing reasonable, và switching cost cao - đôi khi stay là quyết định tốt nhất về mặt kinh tế.
Cái tôi muốn tránh là accidental lock-in - không biết mình bị lock-in, không có plan B. Với cả SQL Server và PostgreSQL, tôi luôn đảm bảo team có thể abstract database layer đủ để migrate nếu cần, ngay cả khi không ai plan làm vậy.
Các bạn đang cân nhắc database cho dự án mới? Hay đang migrate từ SQL Server sang PostgreSQL (hoặc ngược lại)? Share context với anh - đây là loại quyết định cần nhiều góc nhìn.
/Son Do - believe in basic
#1percentbetter #solutionarchitecture #postgresql #sqlserver #database