2010-01-11 15 views
37

Hat jemand von Ihnen Erfahrung mit der Verwendung von NoSQL (nicht relationalen) Datenbanken zum Speichern von Geodaten? Gibt es potenzielle Vorteile (Geschwindigkeit, Platz, ...) der Verwendung solcher Datenbanken zum Speichern von Daten beispielsweise für eine Desktopanwendung (im Vergleich zur Verwendung von SpatiaLite oder PostGIS)?NoSQL und räumliche Daten

Ich habe posts about using MongoDB for spatial data gesehen, aber ich interessiere mich für einige Leistungsvergleiche.

Antwort

11

Grafiken Datenbanken wie sind eine sehr gute Passform, vor allem, da Sie verschiedene Indexierungsschemata dynamisch hinzufügen können, wie Sie gehen. Typisches, was Sie auf Ihren Basisdaten tun können, ist natürlich die 1D-Indexierung (z. B. Timeline oder B-Trees) oder funkigeres Zeug wie Hilbert Curves usw., siehe Nick's blog. Sehen Sie sich auch für einige Live-Demonstrationen das AWE-Open-Source-GIS-Desktop-Tool here an, wobei der zugrunde liegende indizierte Graph um die Zeit 07:00 herum sichtbar ist.

+0

Peter, danke für die Antwort. Ich werde mich darum kümmern und Ihre Antwort akzeptieren, wenn niemand anders antwortet. –

2

Ich habe räumliche Daten mit ZODB gespeichert. Es gibt einige inhärente Leistungsvorteile beim Zugriff auf lokale Dateidaten (spatialite) oder Unix-Sockets (PostGIS) im Vergleich zu TCP- oder HTTP-Anfragen (CouchDB usw.), aber ein räumlicher Index macht den größten Unterschied. Ich benutze die gleichen R-Bäume, die im MongoDB Artikel erwähnt werden, aber es gibt viele gute Möglichkeiten. Die JTS-Topologie-Suite verfügt über verschiedene räumliche Indizes für Java.

5

Derzeit nutzt MongoDB mit B-Bäume geohashing die wird langsamer als die R-Bäume von PostGIS (Ich kann keine genauen Zahlen geben, fürchte ich, aber es gibt viel theoretische Literatur über die Unterschiede). In diesen Folien, http://www.slideshare.net/nknize/rtree-spatial-indexing-with-mongodb-mongodc, spricht der Autor jedoch über das Hinzufügen von R-Bäumen zu MongoDB und Sharding auf einem Geo-Schlüssel. Sie sprechen über die Desktop-Nutzung, daher ist Geosharding möglicherweise nicht von Interesse, da die Vorteile von sharding eher in massiven Datasets zu spüren sind. Letztendlich kommt es wahrscheinlich eher darauf an, was Sie mit Ihren räumlichen Daten machen wollen. Postgis bietet wesentlich mehr Funktionen und Unterstützung für Topologie, Raster, 3D, Konvertierungen zwischen Koordinatensystemen. Wenn Sie also nach etwas suchen, ist PostGIS immer noch die beste Option. Wenn Sie daran interessiert sind Milliarden von Billionen von Geo-Objekten zu speichern und einfach nur alle Punkte in der Nähe dieses Punktes zu finden, dann ist MongoDB wahrscheinlich eine sehr gute Wahl.

0

MarkLogic (Enterprise NoSQL) bietet räumliche Funktionalität. Dieses NoSQL-Produkt bietet GIS-Anwendungen die Möglichkeit, mehrere Objekte zu einer Entität zusammenzufassen. Dies bietet Unterstützung für die Verwaltung von Beziehungen zwischen strukturierten und unstrukturierten Inhalten, Provenienz- und Stammbauminformationen zu Daten, historischen Daten und Zeitachseninformationen usw. in einer einzigen Entität.