NoSQL и пространственные данные - PullRequest
37 голосов
/ 11 января 2010

Кто-нибудь из вас имел опыт использования NoSQL (нереляционных) баз данных для хранения пространственных данных? Есть ли потенциальные преимущества (скорость, пространство, ...) использования таких баз данных для хранения данных, скажем, для настольных приложений (по сравнению с использованием SpatiaLite или PostGIS)?

Я видел сообщения об использовании MongoDB для пространственных данных , но меня интересует некоторое сравнение производительности.

Ответы [ 7 ]

11 голосов
/ 12 января 2010

графические базы данных, такие как Neo4j , очень хорошо подходят, тем более что вы можете динамически добавлять различные схемы индексации по мере продвижения. Типичными вещами, которые вы можете делать с вашими базовыми данными, является, конечно, 1D-индексация (например, Timline или B-Trees) или такие забавные вещи, как Кривые Гильберта и т. Д., См. блог Ника . Кроме того, для демонстрации в реальном времени посмотрите на настольный ГИС-инструмент с открытым исходным кодом AWE здесь , основной индексированный график виден примерно в 07:00.

5 голосов
/ 07 октября 2013

В настоящее время MongoDB использует гео-хеширование с B-деревьями, которые будут работать медленнее, чем R-деревья PostGIS (боюсь, я не могу дать точные цифры, но существует множество теоретической литературы по различиям). Однако на этих слайдах http://www.slideshare.net/nknize/rtree-spatial-indexing-with-mongodb-mongodc автор рассказывает о добавлении R-деревьев в MongoDB и разделении на географический ключ. Вы говорите об использовании настольных компьютеров, поэтому геошардирование может не представлять интереса, так как преимущества шардинга будут более ощутимы для массивных наборов данных. В конечном счете, это, вероятно, сводится к тому, что вы хотите сделать с вашими пространственными данными. Postgis имеет гораздо больше функций и поддерживает топологию, растры, 3D, преобразования между системами координат, так что если это то, что вы ищете, PostGIS все равно будет лучшим вариантом. Если вы заинтересованы в хранении миллиардов / триллионов пространственных объектов и просто запускаете базовую программу, найдите все точки вблизи или внутри этой точки на основе некоторых критериев, тогда MongoDB, вероятно, является очень хорошим выбором.

5 голосов
/ 08 февраля 2010

Couchdb также имеет простое пространственное расширение

http://vmx.cx/cgi-bin/blog/index.cgi/category/CouchDB

2 голосов
/ 13 января 2010

Я храню пространственные данные с ZODB. Конечно, есть некоторое преимущество в производительности при доступе к локальным файловым данным (пространственный) или сокет Unix (PostGIS) по сравнению с запросами TCP или HTTP (CouchDB и т. Д.), Но наличие пространственного индекса имеет самое большое значение. Я использую те же R-деревья, которые упоминаются в статье MongoDB, но есть много хороших вариантов. Набор топологии JTS имеет различные пространственные индексы для Java.

1 голос
/ 13 декабря 2014

Tarantool поддерживает пространственный двумерный индекс (RTREE) с поиском ближайшего соседа, перекрытиями, содержимым и другими пространственными операторами. Tarantool поддерживает весь набор данных в оперативной памяти, что делает его единственной базой данных OSS в памяти с поддержкой пространственных индексов. https://github.com/tarantool/tarantool/wiki/R-tree-index-quick-start-and-usage

1 голос
/ 07 июля 2011

Кассандра также опция для пространственных данных:

http://www.readwriteweb.com/cloud/2011/02/video-simplegeo-cassandra.php

0 голосов
/ 13 апреля 2016

MarkLogic (Enterprise NoSQL) обеспечивает пространственную функциональность. Этот продукт NoSQL предоставляет ГИС-приложениям возможность объединять несколько объектов в один объект. Это обеспечивает поддержку управления отношениями между структурированным и неструктурированным контентом, информацией о происхождении и родословной данных, исторической и временной информацией и т. Д. В одном объекте.

...