2017-01-29 4 views
-2

Я пытаюсь найти некоторую информацию по этой теме, но большинство статей, которые я нахожу, старше 3 лет. Я также довольно новичок в этой стороне вещей и не знаю, кого спросить.Как выбрать MongoDB и PostgreSQL для ГИС?

Для моего конкретного случая использования я не эксперт базы данных, но я использовал MongoDB несколько раз раньше. Я использовал PostgreSQL только один раз для небольшого проекта (без использования ГИС). Для чего он стоит, у меня есть небольшой объем данных прямо сейчас, когда я записал в dynamoDB. Для него есть гео-библиотека, но она доступна только на Java, и я не очень хорошо знаю Java.

Мой случай использования довольно прост - помимо данных профиля пользователя, я хочу иметь возможность запрашивать маркеры, добавленные пользователями. Маркеры в пределах X миль от текущих latLng и т.д. маркерами одноразовыми пользователя есть другие данные, кроме latLng, связанные с ними, например, пользователь, который добавил его, название, описание и т.д.

Моя цель состоит в том, чтобы иметь возможность возвращать результаты на стороне клиента с маркерами в пределах X миль в их текущем местоположении от ближайшего до самого дальнего, используя веб-API. Для этого, между Mongo и PostgreSQL, с чего лучше начать?

+0

Для этого вам не нужна специальная база данных, хотя она будет быстрее в базах данных с расширениями geo. Вы можете использовать [формулу Хаверсина] (http://stackoverflow.com/q/27928/472495). Существуют SQL-реализации, в которые вы можете добавить фильтр расстояния в разделе 'WHERE'. – halfer

ответ

2

PostgreSQL может дать вам полную (гео) пространственными функциям через PostGis, хотя вы можете не нужно много в вашем приложении.

Если вам нужно просто быстро найти пользователей в пределах определенного радиуса точки (lat, lng), вы можете использовать earthdistance module вместе с GIST indexes.

Для получения подробных разъяснений отметьте How can I speed-up my query on geo-location processes.

Проверьте также Searching in a Radius using Postgres.


В MongoDB, вы бы использовать geoNear функциональность и 2dsphere Indexes


Querys в PostgreSQL очень быстро и очень гибкий, и они очень хорошо масштабируется. Вам нужно немного больше работы по настройке, чем с MongoDB.

Во всяком случае, основные функции доступны в обоих, и вы должны решить, учитывая все другие факторы:

  • ваши данные хорошо структурирован, и с некоторыми вариациями в рамках этой структуры? (подробнее на стороне SQL)
  • Вам нужна ACID (атомарность, консистенция, изоляция, долговечность)? (больше на стороне SQL)
  • Вам нужно огромное горизонтальное масштабирование? (дополнительно на стороне MongoDB)
  • Вам нужно запросить сразу несколько таблиц (и присоединиться)? (SQL side)
  • Вы чувствуете себя комфортно с JavaScript и JSON, чем на других языках? (MonboDB +)
  • (и т.д. и т.п.)

Проверьте также Postgres Outperforms MongoDB and Ushers in New Developer Reality и System Properties Comparison MongoDB vs. PostgreSQL, среди многих других.

+0

Большое спасибо Joanolo. Я понимаю, что мой вопрос был занижен, но, честно говоря, довольно сложно легко найти такую ​​информацию, а также достаточно просто переварить. Я ценю ваш ответ. – scarywolfman

+0

Если я могу задать еще один вопрос. На данный момент я не думаю, что мне нужна реляционная база данных, и поэтому я склоняюсь к MongoDB из-за простоты настройки и использования. Я ожидаю много начальных писем (создаются новые маркеры) и много сообщений, но не ожидаю, что многие обновления уже существующих маркеров будут удалены. Я думаю, что мои модели данных также достаточно просты, что если возникнет такая необходимость (и, как уже упоминалось, я мало что знаю о базах данных, я пытаюсь построить PoC), я могу переключиться на postgres. Считаете ли вы, что это правильный подход? Спасибо – scarywolfman

+0

Когда вы находитесь на Доказательстве Концепции, обычно ваша основная потребность - сделать так быстро *, в этом случае выберите инструменты, которые позволят вам работать быстрее всего. Это сильно зависит от вашего предыдущего фона; к каким инструментам вы относитесь. Но будьте осторожны и не попадаете в ловушку, думая, что лучшее для PoC - лучшая вещь в производстве ... – joanolo

Смежные вопросы