Kinh nghiệm của tôi với Postgres và Mongo sau khi làm việc với cả hai cơ sở dữ liệu trong các dự án của tôi.
Postgres (RDBMS)
Postgres được khuyến nghị nếu các ứng dụng trong tương lai của bạn có một lược đồ phức tạp cần nhiều phép nối hoặc tất cả dữ liệu có mối quan hệ hoặc nếu chúng ta có nhiều văn bản. Postgres là mã nguồn mở, nhanh hơn, tuân thủ ACID và sử dụng ít bộ nhớ hơn trên đĩa, đồng thời hoạt động tốt cho việc lưu trữ JSON và bao gồm khả năng tuần tự hóa đầy đủ của các giao dịch với 3 cấp độ cách ly giao dịch.
Lợi thế lớn nhất của việc ở lại với Postgres là chúng tôi có cả hai thế giới tốt nhất. Chúng ta có thể lưu trữ dữ liệu vào JSONB với các ràng buộc, tính nhất quán và tốc độ. Mặt khác, chúng ta có thể sử dụng tất cả các tính năng của SQL cho các loại dữ liệu khác. Công cụ cơ bản rất ổn định và đối phó tốt với nhiều khối lượng dữ liệu. Nó cũng chạy trên sự lựa chọn của bạn về phần cứng và hệ điều hành. Postgres cung cấp khả năng NoSQL cùng với hỗ trợ giao dịch đầy đủ, lưu trữ các tài liệu JSON với các ràng buộc về dữ liệu trường.
Ràng buộc chung cho Postgres
Chia tỷ lệ Postgres Theo chiều ngang khó hơn đáng kể, nhưng có thể làm được.
Các thao tác đọc nhanh không thể đạt được đầy đủ với Postgres.
KHÔNG có cơ sở dữ liệu SQL
Mongo DB (Hổ có dây)
MongoDB có thể đánh bại Postgres theo kích thước “tỷ lệ ngang”. Lưu trữ JSON là những gì Mongo được tối ưu hóa để làm. Mongo lưu trữ dữ liệu của nó ở định dạng nhị phân gọi là BSONb, (đại khái) chỉ là một biểu diễn nhị phân của một tập siêu JSON. MongoDB lưu trữ các đối tượng chính xác như khi chúng được thiết kế. Theo MongoDB, đối với các ứng dụng đòi hỏi nhiều khả năng ghi, Mongo cho biết công cụ mới (Wired Tiger) giúp người dùng tăng hiệu suất ghi lên đến 10 lần (tôi nên thử điều này), với việc giảm 80% việc sử dụng bộ nhớ, giúp giảm chi phí lưu trữ. , đạt được hiệu quả sử dụng phần cứng cao hơn.
Những hạn chế chung của MongoDb
Việc sử dụng một công cụ lưu trữ ít lược đồ dẫn đến vấn đề về các lược đồ ngầm. Các lược đồ này không được công cụ lưu trữ của chúng tôi xác định nhưng thay vào đó được xác định dựa trên hành vi và kỳ vọng của ứng dụng.
Các công nghệ NoSQL độc lập không đáp ứng các tiêu chuẩn ACID vì chúng hy sinh các biện pháp bảo vệ dữ liệu quan trọng để có hiệu suất thông lượng cao cho các ứng dụng phi cấu trúc. Không khó để áp dụng ACID trên cơ sở dữ liệu NoSQL nhưng nó sẽ làm cho cơ sở dữ liệu chậm và không linh hoạt ở một mức độ nào đó. “Hầu hết các hạn chế của NoSQL đã được tối ưu hóa trong các phiên bản và bản phát hành mới hơn, chúng đã khắc phục được những hạn chế trước đây của nó ở mức độ lớn”.