So speichern Sie GPS-Koordinaten- und Suchplätze in einem Radius von einem NOSQL-DBMS (wie dynamodb)

StackOverflow https://stackoverflow.com//questions/10691547

Frage

Mein Team benötigt ein DBMS wie Dynamodb, um große Datenmenge, hauptsächlich Orte und Koordinaten zu speichern. Ich habe in Betracht gezogen, einige gis-basierte DBMS (wie Postgis) mit einem Index auf dem Punkt zu verwenden, aber Dynamodb scheint großartig für unsere Verwendung zu sein.

Wie ist die beste Methode, um die Koordinate zu speichern und alle Objekte in einem bestimmten Radius schnell abzurufen?

In Postgis ist es einfach, so etwas wie folgt:

generasacodicetagpre.

Wie kann ich so etwas in einem NOSQL-DBMS tun?

War es hilfreich?

Lösung

Wir hatten das gleiche Problem, wir verwenden insbesondere AWS und Dynamodb. Wir haben dieses Problem behoben, indem wir CLOUDSEARCH-Dienst verwenden, jedes Mal, wenn wir in unserer Datenbank einige 'Geo-durchsuchbare' Daten in unserer Datenbank speichern, indexieren wir die Daten in einer Cloudsearch-Instanz mit LAT, LON als Filter (dazu müssen Sie eine Transformation in LAT und lon, um es in eine uint zu drehen).

Nehmen wir an, Sie möchten eine Suche auf einem bestimmten LAT / LON und einem Radius durchführen, das Sie den entsprechenden Geobox (Latmin, Latmax, Lonmin, Lonmax) berechnen und Ihre Cloudssearch-Instanz mit den jeweiligen Filtern abfragen, um das Schlüsselschema von Ihrem abzurufen Daten, Sie können dann Dynamodb abfragen, um die Informationen zu erhalten.

einiger Code in Java, um genau das Obige zu tun:

Verwenden von rechteckigwindows aus dem com.javadocmd.simplelatlng.window-Paket von Tyler Colles, Berechnen des Begrenzungskastens und der Transformation für LAT / LON.

generasacodicetagpre.

dann ein Beispiel einer Abfrage auf der CLOUDSEARCH-Instanz:

http:// [Searchurl] / 2011-02-01 / Suche? BQ= (und Lat: 22300347..22309340 (und LON: 28379282..28391589))

Ich bin nicht sicher, ob es die beste Lösung ist, aber das ist, was wir mit kamen, mit

Andere Tipps

Sie könnten GeoHashing verwenden, um Anfragen von in den nahe gelegenen Objekten auf der Grundlage von Saiten als Berechnungen auszuführen.

GeoHash ermöglicht es Ihnen, den Standort von Knoten in "Eimer" aufbewahren, die dann mit den Zeichenfolgen als Bereich oder Hash-Taste in Dynamodb abgefragt werden können.

Hier ist ein gutes Beispiel https://github.com/davetroy/geohash-js in JavaScript erledigt, die leicht in anderen Sprachen neu geschrieben werden können.

Ich erforsche gerade dieses Thema selbst.Ich verwende MONGODB (ich weiß, dass Sie nach Dynamodb gefragt haben, aber Sie haben auch nach der allgemeinen NOSQL-Verwendung gefragt) und mein Code sieht so aus:

Aufnahmestruktur:

generasacodicetagpre.

Anschließen und Sicherstellung des Index:

generasacodicetagpre.

schriftlich:

generasacodicetagpre.

suche:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top