Đối với trường hợp cụ thể của bạn, MongoDB nghe có vẻ là một lựa chọn tốt, nhưng có rất nhiều tình huống (có lẽ là hầu hết trong số đó) trong đó nó sẽ không phải là lựa chọn tốt nhất.
MongoDB phù hợp hơn trong các tình huống yêu cầu đọc / ghi nhiều dữ liệu, không chú trọng đến an toàn giao dịch (nếu một số dữ liệu thỉnh thoảng bị mất trong sự cố máy chủ, đó không phải là vấn đề lớn), mong muốn mở rộng quy mô và không ' t thực sự có một lược đồ ổn định.
MongoDB không phù hợp với các kịch bản yêu cầu:
- Đảm bảo ACID mạnh: MongoDB cho phép lưu trữ dữ liệu trùng lặp, đọc không nhất quán và thậm chí mất dữ liệu. Những điều này là tốt trong một số ứng dụng, nhưng không phải trong hầu hết.
- Giao dịch đa đối tượng: MongoDB không hỗ trợ các giao dịch ACID, nhưng chỉ cho một đối tượng / tài liệu. Điều này sẽ không cắt giảm cho các hoạt động phức tạp hơn như chuyển khoản ngân hàng, đặt phòng, v.v.
- BI truyền thống: có rất nhiều công cụ BI ngoài kia chỉ chơi tốt với SQL truyền thống.
- SQL: MongoDB có một ngôn ngữ truy vấn rất cụ thể, trong khi SQL được rất nhiều người biết đến (có thể là một khía cạnh quan trọng cần xem xét), có thể làm rất nhiều việc phức tạp (trong khi với MongoDB bạn gặp khó khăn khi thực hiện một cách đơn giản tham gia) và có thể chuyển nhượng qua rất nhiều triển khai.
MongoDB nhanh hơn và sẽ cho phép bạn tăng hiệu suất ra khỏi hệ thống bằng cách loại bỏ rất nhiều thứ mà RDBMS thực thi theo mặc định, như kiểm tra tính toàn vẹn (dù sao bạn cũng có thể điều chỉnh RDBMS cho các mục đích như vậy), nhưng sự thật là, trong hầu hết các kịch bản, nó chỉ không cần thiết. Thêm vào đó, sự đánh đổi là độ tin cậy và tính linh hoạt (bạn sẽ gặp rắc rối nếu sau này, bạn quyết định bạn cần thực hiện các thao tác phức tạp hơn với dữ liệu hiện có).
Tất cả phụ thuộc vào nhu cầu của ứng dụng bạn đang xây dựng. Là tốc độ và tính sẵn sàng, hoặc an toàn, độ tin cậy và linh hoạt. Bạn phải biết nơi dữ liệu của bạn (và trong các kết nối dữ liệu của bạn) nằm ở đâu nhiều giá trị hơn. Nếu bạn chưa biết, có lẽ tốt nhất nếu bạn chọn thứ gì đó sẽ không vẽ bạn vào một góc trong tương lai và sẽ cho phép bạn thêm các tính năng và thực hiện các thao tác mà ứng dụng của bạn cần.