Với phong trào NoQuery đang phát triển dựa trên cơ sở dữ liệu dựa trên tài liệu, tôi đã xem xét MongoDB gần đây. Tôi đã nhận thấy sự tương đồng đáng kinh ngạc với cách coi các vật phẩm là "Tài liệu", giống như Lucene (và người dùng Solr).
Vì vậy, câu hỏi: Tại sao bạn muốn sử dụng NoQuery (MongoDB, Cassandra, CouchDB, v.v.) trên Lucene (hoặc Solr) làm "cơ sở dữ liệu" của bạn?
Những gì tôi (và tôi chắc chắn rằng những người khác đang tìm kiếm trong một câu trả lời là một số so sánh sâu sắc của họ. Chúng ta hãy bỏ qua các cuộc thảo luận cơ sở dữ liệu quan hệ cùng nhau, vì chúng phục vụ một mục đích khác nhau.
Lucene cung cấp một số lợi thế nghiêm trọng, chẳng hạn như hệ thống tìm kiếm và trọng lượng mạnh mẽ. Không đề cập đến các khía cạnh trong Solr (mà Solr sẽ sớm được tích hợp vào Lucene, yay!). Bạn có thể sử dụng các tài liệu Lucene để lưu trữ ID và truy cập các tài liệu giống như MongoDB. Trộn nó với Solr và bây giờ bạn có được một giải pháp cân bằng tải dựa trên WebService.
Bạn thậm chí có thể so sánh các nhà cung cấp bộ đệm ngoài luồng như Velocity hoặc MemCached khi nói về lưu trữ dữ liệu tương tự và khả năng mở rộng của MongoDB.
Các hạn chế xung quanh MongoDB nhắc nhở tôi về việc sử dụng MemCached, nhưng tôi có thể sử dụng Velocity của Microsoft và có nhiều khả năng phân nhóm và liệt kê danh sách hơn MongoDB (tôi nghĩ). Không thể nhận được bất kỳ tốc độ nhanh hơn hoặc có thể mở rộng hơn dữ liệu bộ nhớ đệm trong bộ nhớ. Ngay cả Lucene cũng có một nhà cung cấp bộ nhớ.
MongoDB (và những người khác) có một số lợi thế, chẳng hạn như dễ sử dụng API của họ. Mới lập một tài liệu, tạo một id và lưu trữ nó. Làm xong. Tốt đẹp và dễ dàng.