Вопрос

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

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top