To pytanie dotyczy dokonania wyboru architektonicznego przed zagłębieniem się w szczegóły eksperymentów i implementacji. Chodzi o przydatność, pod względem skalowalności i wydajności, elastycznego wyszukiwania w porównaniu z MongoDB, w nieco określonym celu.
Hipotetycznie zarówno przechowują obiekty danych, które mają pola i wartości, jak i umożliwiają wykonywanie zapytań dotyczących tego ciała obiektów. Zatem przypuszczalnie odfiltrowywanie podzbiorów obiektów według pól wybranych ad-hoc jest czymś odpowiednim dla obu.
Moja aplikacja będzie się obracać wokół wybierania obiektów według kryteriów. Wybierałby obiekty, filtrując jednocześnie przez więcej niż jedno pole, inaczej mówiąc, jego kryteria filtrowania zapytań zwykle obejmowałyby od 1 do 5 pól, może w niektórych przypadkach więcej. Natomiast pola wybrane jako filtry byłyby podzbiorem znacznie większej liczby pól. Wyobraź sobie około 20 istniejących nazw pól, a każde zapytanie jest próbą odfiltrowania obiektów według kilku pól spośród tych wszystkich 20 pól (może to być mniej lub więcej niż 20 istniejących nazw pól, właśnie użyłem tej liczby, aby zademonstrować stosunek pola na pola używane jako filtry w każdym zapytaniu dyskretnym). Filtrowanie może odbywać się na podstawie istnienia wybranych pól, a także wartości pól, np. Odfiltrowywanie obiektów, które mają pole A, a ich pole B znajduje się między x a y,
Moja aplikacja będzie nieustannie przeprowadzać tego rodzaju filtrowanie, podczas gdy w dowolnym momencie nie będzie nic lub będzie bardzo mało stałej w zakresie tego, które pola są używane do filtrowania. Być może w elasticsearch indeksy muszą zostać zdefiniowane, ale może nawet bez indeksów szybkość jest taka sama jak w MongoDB.
Jeśli chodzi o dane, które trafiają do sklepu, nie ma specjalnych szczegółów na ten temat ... obiekty prawie nigdy nie byłyby zmieniane po wstawieniu. Być może należałoby porzucić stare obiekty, chciałbym założyć, że obsługa obu magazynów danych wygasa, usuwając elementy wewnętrznie lub przez zapytanie wysłane przez aplikację. (Rzadziej obiekty, które pasują do określonego zapytania, również musiałyby zostać usunięte).
Co myślisz? Czy eksperymentowałeś z tym aspektem?
Interesuje mnie wydajność i skalowalność każdego z dwóch magazynów danych do tego rodzaju zadań. Jest to rodzaj pytania o projekt architektoniczny, a szczegóły dotyczące opcji specyficznych dla sklepu lub podstaw zapytania, które powinny sprawić, że będzie dobrze zaprojektowany, są mile widziane jako demonstracja w pełni przemyślanej sugestii.
Dzięki!