Database nhìn thì đơn giản: lưu dữ liệu và lấy dữ liệu.
Nhưng phía sau một query là cả một hệ thống xử lý rất khác nhau.
PostgreSQL, MySQL, MongoDB và DynamoDB đều có thể lưu trữ và truy xuất dữ liệu.
Nhưng chúng khác nhau ở:
Data model.
Query execution.
Concurrency.
Indexing.
Replication.
Scaling.
Và cách vận hành.
Query execution.
Concurrency.
Indexing.
Replication.
Scaling.
Và cách vận hành.
→ PostgreSQL: relational database mạnh về SQL, MVCC, transactional workloads và khả năng mở rộng thông qua extensions.
→ MySQL + InnoDB: một lựa chọn phổ biến cho OLTP, với transactional storage engine, indexing, buffer pool và replication ecosystem trưởng thành.
→ MongoDB: document-oriented database, phù hợp với một số data model linh hoạt và hỗ trợ replication, sharding để mở rộng khi workload phù hợp.
→ DynamoDB: fully managed distributed database, phù hợp với workload cần scale lớn và yêu cầu thiết kế data model xoay quanh access patterns và partition key.
Vì vậy, chọn Database không chỉ là:
SQL hay NoSQL?
Mà là:
Dữ liệu của bạn được mô hình hóa như thế nào?
Ứng dụng đọc và ghi ra sao?
Cần transaction đến mức nào?
Consistency cần bao nhiêu?
Scale ở đâu?
Và team có thể vận hành hệ thống đó không?
Ứng dụng đọc và ghi ra sao?
Cần transaction đến mức nào?
Consistency cần bao nhiêu?
Scale ở đâu?
Và team có thể vận hành hệ thống đó không?
Dev mới thường hỏi:
“Database nào tốt nhất?”
Dev làm lâu hơn thường hỏi:
“Database nào phù hợp nhất với workload của mình?” 
Không có Database tốt nhất.
Chỉ có trade-off phù hợp nhất cho bài toán hiện tại.
Đăng nhận xét