elasticsearch v.s. MongoDB do filtrowania aplikacji [zamknięte]

To pytanie dotyczy wyboru architektury przed zagłębieniem się w szczegóły eksperymentów i implementacji. Chodzi o przydatność, pod względem skalowalności i wydajności, elasticsearch v.s. MongoDB, w pewnym specyficznym celu.

Hipotetycznie zarówno przechowują obiekty danych, które mają pola i wartości, jak i umożliwiają wysyłanie zapytań do tego obiektu. Zatem przypuszczalnie filtrowanie podzbiorów obiektów według pól wybranych ad-hoc jest czymś pasującym dla obu.

Moja aplikacja będzie obracać się wokół wyboru obiektów według kryteriów. Wybrałoby obiekty, filtrując jednocześnie przez więcej niż jedno pole, inaczej mówiąc, kryteria filtrowania zapytań zazwyczaj zawierałyby od 1 do 5 pól, a może w niektórych przypadkach więcej. Natomiast pola wybrane jako filtry będą podzbiorem znacznie większej liczby pól. Wyobraź sobie 20 istniejących nazw pól, a każde zapytanie jest próbą filtrowania obiektów przez kilka pól z tych 20 pól (może istnieć mniej lub więcej niż 20 ogólnych nazw pól, właśnie użyłem tego numeru, aby wykazać stosunek pola do pól używanych jako filtry w każdym zapytaniu dyskretnym). Filtrowanie może być spowodowane istnieniem wybranych pól, a także wartościami pola, np. filtrowanie obiektów, które mają pole A, a ich pole B znajduje się między xi y, a ich pole C jest równe w.

Moja aplikacja będzie stale wykonywać tego rodzaju filtrowanie, podczas gdy nie byłoby nic lub bardzo mało stałych, jeśli chodzi o to, które pola są używane do filtrowania w dowolnym momencie. Być może w indeksach elasticsearch należy zdefiniować, ale być może nawet bez indeksów prędkość jest równa prędkości MongoDB.

Jeśli chodzi o dane, które trafiają do sklepu, nie ma na ten temat żadnych specjalnych szczegółów. Obiekty nie byłyby prawie nigdy zmieniane po włożeniu. Być może stare obiekty musiałyby zostać usunięte, chciałbym założyć, że obsługa obu magazynów danych wygasa, usuwając rzeczy wewnętrznie lub przez zapytanie wykonane przez aplikację. (Rzadziej, obiekty, które pasują do określonego zapytania, również muszą zostać upuszczone).

Co myślisz? Czy eksperymentowałeś z tym aspektem?

Interesuje mnie wydajność i skalowalność każdego z dwóch magazynów danych dla tego rodzaju zadań. Jest to rodzaj pytania o architekturę, a szczegóły dotyczące specyficznych dla sklepu opcji lub podstaw zapytania, które powinny sprawić, że będą dobrze zaprojektowane, są mile widziane jako demonstracja w pełni przemyślanej propozycji.

Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion