2014-04-18 11 views
10

ich auf eine Suchanfrage arbeite, die einen geospatial Filter tun muss (das heißt alle Elemente filtern außerhalb eines gewissen Radius). Wir haben PostgreSQL und ElasticSearch als Teil unserer Infrastruktur und ich evaluiere, welche der beiden zu verwenden.PostgreSQL PostGIS vs Elasticsearch Spatial Suche

Ich frage nicht nach „was besser ist“, sondern eine objektive Vor & Nachteile Liste wäre hilfreich sein, im Hinblick auf die Einfachheit der Implementierung, Leistung, Skalierbarkeit usw.

+0

Ich benutze Postgres/Postgis seit Jahren und bin im Begriff, einige Geokodierung und Fuzzy-Adressenabgleich mit Lucene und Solr (die ich nie verwendet habe, aber ich habe ein paar sehr positive Präsentationen auf gesehen) zu testen. Ich werde dich wissen lassen, wenn ich etwas finde, das dir nützlich sein könnte. Wie groß sind die Datensätze, die Sie sich ansehen, und könnten Sie ein wenig mehr Informationen über die Art der Abfragen geben, die Sie möglicherweise ausführen? –

+0

@ JohnBarça Das wäre großartig, lass es mich wissen, wenn Sie etwas interessantes herausfinden. Ich interessiere mich für 2 Arten von Abfragen (obwohl sehr ähnlich in der Natur): 1) erhalten eine Reihe von Ergebnissen, die in einer bestimmten Nähe in keiner bestimmten Reihenfolge (dh ein Filter durch Nähe), und 2) eine Reihe von Ergebnissen zurückgeben sortiert nach Nähe, am nächsten zuerst. – lms

Antwort

5

Die postgis skaliert die gleiche Art und Weise als postgresql Skalen. Der Postgis-Index funktioniert genauso wie andere relationale, Sie können es überprüfen here.

Wenn Sie sich den Link ansehen, wird erklärt, dass er mit einem geometrischen Algorithmus indexiert, der bei jeder Einfügeoperation ausgeführt wird, sodass er in Echtzeit-Apps möglicherweise nicht ausreichend reaktionsfähig ist.

Während Elasticsearch Echtzeitindizierung haben, basierend auf Lucene Index.

Für Echtzeit-Apps kann das ACID-Modell, das von jeder relationalen Datenbank verwendet wird, verschwenderisch sein, und die Task benötigt diese Art von Sicherheit möglicherweise nicht.

Postgresql verwendet ACID-Modell, das in schweren Echtzeit-Apps ein Nachteil sein kann.

Während

Elasticsearch ist eine Art Suchmaschine, die für Echtzeit-Suche durchgeführt wird.

Sie müssen basierend auf einer bestimmten Aufgabe entscheiden, welche Art von Suche Sie benötigen?

Beispiel: Das ACID-Modell ist in meiner speziellen Aufgabe unpraktisch, so dass ich keine Zeit für einige Synchronisation und andere Dinge verschwenden möchte, habe ich Back-End für Dating-App basierend auf dem Standort der Benutzer (alle Benutzer im Umkreis von 1 km).

Verwandte Themen