Witam, mam pytanie odnośnie wyszukiwarki na stronie. Piszę skrypt z ogłoszeniami i trzeba je będzie jakoś wyszukiwać. Szukanie będzie się odbywać przez pole lokalizacja, potem odległość od miejsca zamieszkania oraz przedziału cenowego, więc już mamy kilka pól. Każdorazowe zapytanie do bazy przy dużej ilości userów może spowolnić stronę. Jak to rozwiązać, żeby baza na tym nie ucierpiała przy dużej ilości rekordów i wyszukiwanie było w miarę szybkie?
Pamięć podręczna.
Pamięć podręczna zapytań czy czego? Jest małe prawdopodobieństwo, że będzie więcej niż 2-3 zapytania takie same w ciągu np. 1 dnia.
Jak to zaimplementować?
Moim zdaniem cache się tu nie sprawdzi, a wręcz spowolni pracę skoro faktycznie zapytania nie będą powtarzalne. Jestem natomiast prawie pewien że nie da się zrobić tego lepiej niż ma zaimplementowana baza. Proponuję zatem przenieść te dane do jakiegoś NoSQL i w razie potrzeby rozproszyć bazę.
Ale to jest rozwiązanie które powinieneś rozważyć gdy faktycznie problem powstanie, bo może się okazać że zwykłe zapytanie do 1 bazy rdbms działa na całkiem akceptowalnym poziomie.
Twoim prawdziwym problemem jest że w myślach profilujesz nieistniejącą aplikację :). Nie rób tego.
krzysiek050 napisał(a):
Twoim prawdziwym problemem jest że w myślach profilujesz nieistniejącą aplikację :). Nie rób tego.
Zgadzam się. Zanim nie osiągniesz 100k rekordów to raczej nie powinno być problemu, a to Ci trochę zejdzie. Nie mówiąc już o tym, że 100k ogłoszeń i tak nie będziesz przeszukiwał, bo pierwsze pójdzie jakiś ładnie indeksowany filtr aktywne
, który odrzuci Ci 99% z tych 100k rekordów ;)
Panowie, niestety muszę się trochę zmartwić, bo 100k rekordów może wskoczyć szybciej niż Wam się wydaje, a ja nadal nie bardzo wiem, co zrobić, żeby wtedy to działało tak jak wcześniej. Chcę to zrobić dobrze od razu, a nie potem poprawiać.
Może ktoś podrzuci jakieś sensowne rozwiązanie? Dodatkowa tabela z tagami na kluczach liczbowych?
Zapoznaj sie z:
http://lucene.apache.org/solr/