Wpis z mikrobloga

Co polecacie do implementacji wydajnego systemu wyszukiwania jeśli
- mam różne obiekty o różnej strukturze, z kilkoma wspólnymi wartościami takimi jak tytuł, opis
- obiekty mają wartości, których inne mogą nie mieć, po których, w zależności od konfiguracji zapytania, można filtrować
Jako przykład:
https://www.olx.pl/motoryzacja/samochody/
https://www.olx.pl/motoryzacja/opony-felgi/
Czyli w zależnosci od wyboru "kategorii", a nawet podkategorii, są różne rodzaje filtrów, również te ogłoszenia mają inną strukturę w bazie danych.
- wierszy może być kilka milionów

Zastanawiałem się nad zarówno nosql jak i sql, tylko, że w przypadku sql, wymagane prawdopodobnie będzie przechowanie części wartości w formacie json(np. tych nie wspólnych pomiędzy każdym obiektem), do czego fajnie nada się postgresql. Jest możliwość wygenerowania osobnej tabeli dla każdej kategorii i jej podkategorii, albo jeszcze podkategorii podkategorii ( ͡° ͜ʖ ͡°) jeśli obiekt będzie miał inne wartości, jednak wtedy prawdopodobnie powstałoby kilkaset tabeli. Jeśli chodzi o nosql, to raczej oczekuję, że iterowanie po wszystkich obiektach w bazie odpada ze względów wydajnościowych, prawdopodobnie trzeba by połączyć jakieś api do szukania.

Czy macie jakieś sugestie czego użyć do rozwiązania takiej sytuacji by odpowiedzi były jak najszybsze? Chciałbym też nie wymuszać zakupu maszyny za miliony $$

#programowanie #bazydanych #sql #nosql
  • 3
@tractat: raczej szedłbym w stronę nosql, ale nie ze względu na wydajność, tylko prostotę. W SQL będziesz musiał kombinować z tabelami i trzymaniem danych wspólnych i tych dynamicznych. Do tworzenia wyszukiwarek używa się full-text search, chyba najpopularniejszą bazą do tego jest elastic search. Mongo też ma coś takiego, ale kompletnie nie wiem jak to działa i jaki jest pricing