2017-01-29 2 views
-2

Ich versuche, einige Informationen zu diesem Thema zu finden, aber die meisten Artikel, die ich finde, sind 3+ Jahre alt. Ich bin auch ziemlich neu auf dieser Seite der Dinge und nicht sicher, wen ich fragen soll.Wie wählen Sie zwischen MongoDB und PostgreSQL für GIS?

Für meinen speziellen Anwendungsfall bin ich kein Datenbankexperte, aber ich habe MongoDB schon einige Male benutzt. Ich habe PostgreSQL nur einmal für ein kleines Projekt verwendet (kein GIS-Material). Für das, was es wert ist, habe ich gerade eine kleine Menge an Daten, die ich in dynamoDB gespeichert habe. Es gibt eine Geo-Bibliothek dafür, aber sie ist nur in Java verfügbar und ich kenne Java nicht sehr gut.

Mein Anwendungsfall ist ziemlich einfach - neben Benutzerprofildaten möchte ich in der Lage sein, von Benutzern hinzugefügte Markierungen abzufragen. Markierungen innerhalb X Meilen von einem authentifizierten Benutzer aktueller latLng usw. Markierungen haben andere Daten außer latLng mit ihnen verbunden ist, wie der Benutzer, der es hinzugefügt, Titel, Beschreibung, usw.

Mein Ziel ist es, Ergebnisse zurück auf der Client-Seite mit Markern in X-Meilen an ihrem aktuellen Standort vom nächsten zum am weitesten entfernten mit einer Web-API. Was wäre zu Beginn zwischen Mongo und PostgreSQL am besten?

+0

Sie benötigen dafür keine spezielle Datenbank, obwohl sie in Datenbanken mit Geo-Erweiterungen schneller ist. Sie können einfach [die Haversine-Formel] (http://stackoverflow.com/q/27928/472495) verwenden. Es gibt SQL-Implementierungen, in denen Sie einen Entfernungsfilter in der WHERE-Klausel hinzufügen können. – halfer

Antwort

2

PostgreSQL können Sie voll geben (geo) räumliche Funktionalitäten über PostGis, obwohl Sie können nicht müssen, dass in der Anwendung viel.

Wenn Sie nur schnell Benutzer innerhalb eines bestimmten Radius von einem (lat, lng) -Punkt finden möchten, können Sie die earthdistance module zusammen mit GIST indexes verwenden.

Überprüfen Sie How can I speed-up my query on geo-location processes für detaillierte Erklärungen.

Überprüfen Sie auch Searching in a Radius using Postgres.


In MongoDB, würden Sie geoNear Funktionalität nutzen und 2dsphere Indexes


Querys in PostgreSQL sind sehr schnell und sehr flexibel, und sie skaliert sehr gut. Sie brauchen etwas mehr Arbeit, um es einzurichten als mit MongoDB.

Wie auch immer, ist die grundlegende Funktionalität in beiden zur Verfügung, und Sie sollten unter Berücksichtigung aller anderen Faktoren entscheiden:

  • Sind Ihre Daten gut strukturiert und mit wenigen Variationen innerhalb dieser Struktur? (mehr auf SQL Seite)
  • Brauchen Sie ACID (Atomizität, Konsistenz, Isolation, Haltbarkeit) garantiert? (mehr auf SQL Seite)
  • Brauchen Sie riesige horizontale Skalierung? (mehr auf MongoDB Seite)
  • Müssen Sie mehrere Tabellen gleichzeitig abfragen (und beitreten)? (SQL-Seite)
  • Fühlen Sie sich mit JavaScript und JSON wohler als in anderen Sprachen? (MonboDB +)
  • (etc., etc.)

prüfen auch Postgres Outperforms MongoDB and Ushers in New Developer Reality und System Properties Comparison MongoDB vs. PostgreSQL, unter vielen anderen.

+0

Vielen Dank Joanolo. Mir ist klar, dass meine Frage oft abgelehnt wurde, aber um ehrlich zu sein, ist es ziemlich schwer, diese Art von Informationen leicht und einfach genug zu finden. Ich schätze Ihre Antwort. – scarywolfman

+0

Wenn ich noch eine Frage stellen kann. Im Moment glaube ich nicht, dass ich eine relationale Datenbank benötige, und deshalb lese ich MongoDB wegen der Leichtigkeit der Einrichtung und Verwendung davon. Ich erwarte eine Menge anfänglicher Schreibvorgänge (neue erstellte Markierungen) und viele Lesevorgänge, erwarte jedoch nicht viele Aktualisierungen von vorhandenen Markierungen neben Löschvorgängen. Ich denke, dass meine Datenmodelle auch einfach genug sind, dass ich im Bedarfsfall (und wie erwähnt, ich weiß nicht viel über Datenbanken, ich versuche ein PoC aufzubauen) zu Postgres wechseln kann. Denken Sie, dass das ein gültiger Ansatz ist? Danke – scarywolfman

+0

Wenn Sie sich für einen Proof of Concept entscheiden, ist Ihr Grundbedürfnis * normalerweise, dass es schnell geht *, wählen Sie in diesem Fall die Tools, mit denen Sie am schnellsten arbeiten können. Das hängt sehr von Ihrem früheren Hintergrund ab; die Art von Werkzeugen, an die du dich gewöhnt hast. Aber seien Sie vorsichtig und kommen Sie nicht in die Falle, zu denken, dass das Beste für ein PoC das Beste in der Produktion ist ... – joanolo

Verwandte Themen