To świetne pytanie, nad którym sporo się zastanawiałem. Podsumuję moje wnioski:
-
Możesz z łatwością użyć Lucene/Solr zamiast MongoDB w prawie wszystkich sytuacjach, ale nie odwrotnie. Post Granta Ingersolla podsumowuje to tutaj.
-
MongoDB itp. wydaje się służyć celowi, w którym nie ma wymogu wyszukiwania i/lub facetingu. Wydaje się, że jest to prostsze i prawdopodobnie łatwiejsze przejście dla programistów detoksykujących ze świata RDBMS. Jeśli ktoś nie jest do tego przyzwyczajony, Lucene i Solr mają bardziej stromą krzywą uczenia się.
-
Nie ma wielu przykładów wykorzystania Lucene/Solr jako datastore, ale Guardian poczynił pewne postępy i podsumowuje to w doskonałym slide-decku, ale oni też nie są zobowiązani do całkowitego przejścia na modę Solr i „badania” łączenia Solr z CouchDB.
-
Na koniec przedstawię nasze doświadczenie, niestety nie mogę wiele powiedzieć o uzasadnieniu biznesowym. Pracujemy w skali kilku TB danych, aplikacji działającej niemal w czasie rzeczywistym. Po zbadaniu różnych kombinacji postanowiłem pozostać przy Solr. Do tej pory nie żałuję (6 miesięcy i dalej) i nie widzę powodu, aby przejść na inny.
Podsumowanie:jeśli nie masz wymogu wyszukiwania, Mongo oferuje proste i wydajne podejście. Jeśli jednak wyszukiwanie jest kluczem do Twojej oferty, prawdopodobnie lepiej będzie trzymać się jednej technologii (Solr/Lucene) i zoptymalizować ją – mniej ruchomych części.
Moje 2 centy, mam nadzieję, że to pomogło.