Hallo, ich recherchiere, bevor ich die Suchfunktion in meinen Dienst implementiere. Ich verwende derzeit PostgreSQL als Hauptspeicher. Ich könnte definitiv die in PostgreSQL integrierte Volltextsuche verwenden, aber das Problem ist, dass ich Daten in mehreren Tabellen verteilt habe.
Mein Service ist eine E-Commerce-Website. Wenn ein Kunde nach "guter Apple-Laptop" sucht, muss ich Brand
Tabelle, post
Tabelle und review
Tabelle verbinden (1 Beitrag ist eine Kombination aus mehreren Bewertungen + einer kurzen Zusammenfassung), um alle Beiträge vollständig zu durchsuchen. Wenn ich elasticsearch verwenden würde, könnte ich vollständige Beiträge durch Vorverarbeitung einfügen.
Nach meinen Recherchen haben einige Leute gesagt, dass FTS und Elasticsearch von PostgreSQL eine ähnliche Leistung haben, und einige Leute sagten, dass Elasticsearch schneller ist. Welche wäre die bessere Lösung für meinen Fall?
Danke im Voraus
Antworten:
Kurze Antwort: Elasticsearch ist besser
Erläuterung: PostgreSQL und Elasticsearch sind zwei verschiedene Datenbanken. Elasticsearch ist leistungsstark für die Dokumentensuche und PostgreSQL ist immer noch ein traditionelles RDBMS. Überprüfen Sie Ihr Ziel, ob Sie in einigen Posts nach Text suchen möchten. Unabhängig davon, wie gut PostgreSQL bei der Volltextsuche funktioniert, wurde Elasticsearch für die Suche in riesigen Texten und Dokumenten (oder Datensätzen) entwickelt. Und je größer die Größe ist, in der Sie suchen möchten, desto besser ist Elasticsearch in der Leistung als PostgreSQL. Darüber hinaus können Sie viel Nutzen und eine hervorragende Leistung erzielen, wenn Sie die Beiträge in mehreren Feldern und Indizes vorverarbeiten, bevor Sie sie in Elasticsearch speichern.
Wenn Sie sicherlich eine Volltextfunktion benötigen, können Sie MSSQL in Betracht ziehen, das möglicherweise besser als PostgreSQL ist.
Antwort auf Kommentare: Es sollte der gesunde Menschenverstand für den Eigenschaftenvergleich für diese verschiedenen Typ-DBs sein. Da OP nicht angegeben hat, welche Menge und Größe der Daten gespeichert sind. Wenn es sich um kleine Daten in der Suche handelt, wählen Sie möglicherweise Postgre oder ES sind beide in Ordnung. Wenn jedoch das Transaktions- und Datenrepository in Zukunft so groß wird, wird ES davon profitieren.
Sie können diese Site überprüfen , um die aktuelle Rangfolge der einzelnen DB-Typen zu ermitteln und die beste unter Ihren Anforderungen, Ihrer Architektur und Ihrem Datenwachstum für die Zukunft Ihrer Anwendungen auszuwählen.
quelle
Wenn sich PostgreSQL bereits in Ihrem Stapel befindet, verwenden Sie am besten die PostgreSQL-Volltextsuche.
Warum Volltextsuche (FTS) in PostgreSQL?
Denn sonst müssen Sie Datenbankinhalte an externe Suchmaschinen weitergeben.
Externe Suchmaschinen (zB Elasticsearch) sind schnell, ABER :
Wenn Sie mehr über FTS in PostgreSQL lesen möchten, gibt es eine großartige Präsentation von Oleg Bartunov (ich habe die obige Liste von hier extrahiert): "Benötigen Sie eine Volltextsuche in PostgreSQL? "
Dies ist ein kurzes Beispiel dafür, wie Sie ein "Dokument" (lesen Sie die Textsuchdokumentation ) aus mehr als einer Tabelle in SQL erstellen können :
Wenn Sie Django für Ihre E-Commerce-Website verwenden, können Sie auch diesen Artikel lesen, den ich über " Volltextsuche in Django mit PostgreSQL " geschrieben habe.
quelle