Cơ sở dữ liệu như MongoDB rất tuyệt khi bạn thường biết dữ liệu của mình ở đâu (trái ngược với việc cần phải viết một số truy vấn phức tạp). Với Mongo, dữ liệu "có liên quan" được lồng trong dữ liệu gốc hoặc nó có khóa chính / khóa ngoài. Điều này thật tuyệt nếu, ví dụ, bạn có Bài đăng và Nhận xét; nói chung, bạn sẽ không hiển thị các bình luận bên ngoài ngữ cảnh của một bài đăng, do đó, có ý nghĩa rằng các bình luận được chứa trong một bài đăng (theo cách đó bạn có được tất cả các bình luận cho bài đăng mà không cần phải truy vấn một bảng riêng biệt).
MongoDB là schemaless. Điều này có nghĩa là nó sẽ lấy bất kỳ cấu trúc dữ liệu nào bạn ném vào nó, đối với hầu hết các phần.
Mặt khác, nếu bạn cần sử dụng các hàm tổng hợp và cảm thấy cần phải truy vấn dữ liệu theo những cách phức tạp không thể đạt được thông qua các nhúng hoặc quan hệ đơn giản trong Mongo, đó là khi bạn biết đã đến lúc sử dụng RDBMS như MySQL hoặc PostgreQuery.
MongoDB không có nghĩa là để thay thế SQL. Nó chỉ đơn giản đáp ứng các nhu cầu khác nhau và MongoDB và RDBMS có thể được sử dụng cùng nhau. Theo tôi, MongoDB không phải là tất cả những gì cần thiết nếu bạn không cần dữ liệu của mình linh hoạt hoặc được nhúng trong tài liệu gốc. Phát triển với MongoDB rất thú vị vì có rất ít bước liên quan đến việc đưa một dự án (nói trong Rails) lên và chạy. Cần phải thay đổi? Không vấn đề gì. Chỉ cần thêm một thuộc tính cho mô hình của bạn. Làm xong.
Tôi không thể nói cho nhiều cơ sở dữ liệu NoQuery khác, mặc dù tôi biết rằng chúng thường được thiết kế tương tự để đáp ứng một nhu cầu cụ thể mà RDBMS không thể đáp ứng. Một số cư trú hoàn toàn trong bộ nhớ hoặc có thể được chia nhỏ hoặc thu nhỏ rất dễ dàng. Tôi khá chắc chắn rằng Cassandra được thiết kế để tiếp tục hoạt động mà không mất dữ liệu nếu một nút bị hỏng. Redis về cơ bản là một kho lưu trữ giá trị chính nằm trong bộ nhớ (với việc ghi đĩa định kỳ để duy trì), nhưng cũng có khả năng lưu trữ các loại dữ liệu như bộ và sắp xếp chúng.