Я использую PostGIS в течение нескольких лет и только недавно начал исследовать, как я могу использовать MongoDB для работы с некоторыми вариантами использования. Я имел дело с точечными данными, которые имели разреженные поля - например, данные OSM с различным количеством тегов на запись, и поскольку у MongoDB нет схемы, она хорошо поддается этому. Я загрузил образец этих данных в экземпляр каждой БД, и это то, что я нашел.
Мне кажется, что для простого хранения и извлечения точечных данных Mongo работает просто отлично. Геопространственные запросы ограничивающего прямоугольника, кажется, работают хорошо, и я считаю, что общая производительность очень хорошая. Его также очень легко установить и запустить, хотя я обнаружил, что инструмент mongoimport не позволяет мне определять составное 2D-поле координат в файле TSV или CSV. Поскольку довольно легко написать скрипт, который генерирует JSON, это не составило особой проблемы. Его главный недостаток на данный момент заключается в том, что практически ничто в геопространственной сфере не может считывать данные из него. Кажется, есть экспериментальный плагин источника данных Mapnik по адресу https://github.com/springmeyer/mapnik-mongo , но это все, что я смог найти.
PostGIS, с другой стороны, требует немного больше времени для настройки (по крайней мере, для меня), но, как уже упоминалось выше, он предоставляет гораздо больше возможностей прямо из коробки. Помимо предоставления гораздо более сложных пространственных аналитических возможностей, он также изначально поддерживается множеством других приложений и библиотек; Mapserver, Mapnik, QGis, GDAL и т. Д. И т. Д. Для меня PostGIS - это скорее настоящая ГИС-система, нежели простая система хранения и поиска.
Что касается производительности, я обнаружил, что могу очень быстро получать данные из обеих систем. Однако, похоже, что PostGIS больше выиграл от наличия индексов. MongoDB немного быстрее возвращал мне весь набор данных (2 миллиона записей) и немного медленнее возвращал запрос, который использовал индекс - в первый раз. Я не совсем уверен в механизме, который он использует для кэширования, но я вижу, что если я повторю запрос в MongoDB, результаты будут возвращаться намного быстрее во второй раз. Я вижу нечто подобное в PostGIS, но не до такой же степени. Я также заметил, что использование памяти на моей машине при работе MongoDB намного выше, чем в PostGIS.
Итак, я пришел к выводу, что я не собираюсь избавляться от PostGIS как моей системы геопространственного хранения и анализа по умолчанию, но для определенных типов проектов (а именно, веб-карт, которые отображают мозаичные изображения и / или точечные данные), я мог бы рассмотреть возможность использования MongoDB как мое хранилище данных.
Роджер