Theo tôi, định dạng dữ liệu của bạn nên là mối quan tâm hàng đầu khi chọn phần phụ trợ lưu trữ. Bạn có dữ liệu có tính chất quan hệ không? Nếu vậy, nó có thể và nó là một ý tưởng tốt để mô hình hóa dữ liệu trong tài liệu? Mô hình hóa dữ liệu cũng quan trọng trong cơ sở dữ liệu tài liệu như trong cơ sở dữ liệu quan hệ, nó chỉ được thực hiện theo cách khác. Bạn có bao nhiêu loại đối tượng và chúng liên quan với nhau như thế nào? DBrefs trong Mongodb có thể thực hiện thủ thuật này không hay bạn sẽ bỏ lỡ các khóa ngoại đến mức sẽ rất đau đớn? Các kiểu truy cập của bạn cho dữ liệu là gì? Bạn chỉ tìm nạp dữ liệu của một loại được lọc theo giá trị trường hay bạn có các chế độ tìm nạp phức tạp?
Bạn có cần tính toàn vẹn của giao dịch ACID không? Miền có thực thi nhiều ràng buộc đối với dữ liệu không? Bạn cần yếu tố khả năng mở rộng của cơ sở dữ liệu tài liệu hay đó chỉ là một thứ "hay ho"?
Các yêu cầu về tính nhất quán và toàn vẹn dữ liệu của bạn là gì? Một số giải pháp NoSQL và MongoDB nói riêng khá lỏng lẻo về tính nhất quán ghi để có được hiệu suất. NoSQL không có cảnh quan đồng nhất và các sản phẩm khác, ví dụ:CouchDB có những đặc điểm khác trong bộ phận này. Một số cũng có thể điều chỉnh được.
Đây là tất cả các câu hỏi nên đi vào việc lựa chọn lưu trữ.
Một số trải nghiệm
- Thực hiện báo cáo toàn diện về dữ liệu được lưu trữ có thể khó hơn khi sử dụng MongoDB hoặc bất kỳ cơ sở dữ liệu tài liệu nào và một số trường hợp sử dụng đã kết hợp RDBMS và document-db cho mục đích đó.
- (Rất) Mô hình truy vấn khác nhau. MongoDB cũng khác với các document-dbs khác.
- Linh hoạt để thay đổi định dạng / lược đồ dữ liệu trong quá trình phát triển
- Lãnh thổ không xác định
- mức độ trưởng thành khác nhau trong các trình điều khiển và khuôn khổ
- Nhanh
- Sản phẩm và công cụ quản lý đơn giản hơn (theo nhiều cách) (so với nhiều sản phẩm RDBMS)
- Không còn sự sai lệch trở kháng. Bộ nhớ phù hợp với dữ liệu chứ không phải ngược lại.
- Ít ma sát hơn và truy cập trực tiếp nhiều hơn vào dữ liệu.
- Miền liên quan nhiều hơn đến tính bền bỉ (tùy thuộc vào "cấp độ" ORM của NoRM, mức độ nó loại bỏ phần phụ trợ. Tôi chưa sử dụng NoRM nên không thể trả lời điều đó.)