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