Witam wszystkich i z góry dziękuję. Jestem nowy w grze NoSQL, ale moje obecne miejsce pracy zleciło mi zestaw porównań dużych danych.Najlepsze rozwiązanie do wyszukiwania skrzyżowania o 1 x 1 milion? Redis, Mongo, inne
Nasz system ma zestawy tagów klienta i ukierunkowane zestawy tagów. Znacznik to ośmiocyfrowa liczba.
Zestaw tagów klienta może zawierać do 300 tagów, ale średnie 100 tagów
Docelowy zestaw tagów może zawierać do 300 tagów, ale średnio 40 tagów.
Wstępne obliczenia nie są opcją, ponieważ kręcimy dla potencjalnej bazy klientów liczącej miliard użytkowników.
(Znaczniki te są hierarchiczne więc posiadające jeden znacznik oznacza, że masz również podmiotem dominującym i-przodków tagi. Umieścić te informacje na bok na chwilę).
Gdy klient trafia na naszą stronę, musimy przecinać ich tag ustąpić jednemu milionowi wybranych zestawów tagów tak szybko, jak to możliwe. Zestaw klientów musi zawierać wszystkie elementy wybranego zestawu, aby pasowały do siebie.
Przeglądałem moje opcje, a przecięcie zestawu w Redis wydaje się idealne. Jednak moje trollingowanie przez Internet nie ujawniło, ile pamięci RAM będzie wymagało posiadania miliona zestawów tagów. Zdaję sobie sprawę, że skrzyżowanie będzie błyskawiczne, ale jest to rozwiązanie możliwe z Redis.
Zdaję sobie sprawę, że jest to brutalna siła i nieefektywna. Chciałem również użyć tego pytania jako sposobu, aby uzyskać sugestie dotyczące sposobów rozwiązywania tego typu problemów w przeszłości. Jak wspomniano wcześniej, tagi są przechowywane w drzewie. Zacząłem też patrzeć na Mongodb jako na możliwe rozwiązanie.
Dzięki ponownie
To jest typowy magazynowanie/zużycie pamięci w funkcji czasu przetwarzania dylemat, prawda? Możesz obliczyć wynikowy zestaw tagów na aktualizacjach tagów, zapisać je i podawać szybciej lub wykonać dynamiczne obliczenia, gdy dane są naprawdę potrzebne. Możesz rozważyć wybór pierwszej opcji, jeśli aktualizacje znaczników nie są powszechne, lub pomyśl o opcji klastrowej bazy danych (na przykład Clustrix) –
Dziękuję. Powinienem był to sprecyzować. Obecnie obliczamy wstępnie, ale jeśli odniesiemy sukces jako firma, możemy patrzeć na miliard potencjalnych klientów. Przeczytam Clusterix – MFD3000
Mongodb nie oferuje niczego dla ustawionego przecięcia. A jeśli dostaniesz trochę pamięci RAM (na przykład 100 GB), możesz zapisać sporo kluczy w Redis :) –