Какую СУБД FOSS использовать для геопространственных данных? - PullRequest
1 голос
/ 25 октября 2011

Я занимаюсь разработкой приложения с использованием Google Maps API.Цель состоит в том, чтобы геокодировать определенные местоположения и затем позволить пользователям искать эти местоположения, основываясь на том, какие из них являются ближайшими к пользователю (например, «Вещь х находится в 20 милях от вас»).

В MySQL я могу простосохранить гео-координаты и использовать формулу haversine для расчета расстояния.Кто-то предложил мне рассмотреть Postgres, потому что он «лучше поддерживает географические данные».

Итак, вопрос в том, каковы плюсы и минусы использования MySQL или Postgres?

Ответы [ 3 ]

2 голосов
/ 25 октября 2011

PostgreSQL имеет поддержку того, о чем вы говорите на борту.Но для большей функциональности (и для того, о чем, вероятно, задумывался упомянутый вами «кто-то»), обратитесь к PostGIS .

См. Домашнюю страницу , , документацию или начните с старого доброго Википедия для обзора.

Редактировать после вопросав комментарии:

В частности, см. матрицу поддержки функции , чтобы получить представление о том, что PostGIS может сделать для вас.
Вычисление расстояния между двумя точками стандартная функция.Вы можете иметь это для различных типов данных.Какой тип данных использовать?Смотрите этот вопрос в FAQ и другие ссылки там.

2 голосов
/ 25 октября 2011

Если это просто очки, MySQL в порядке.Если у вас есть более сложные геометрии, такие как маршруты доставки, зоны приема ячеек или что-то еще, вам нужен PostGIS, потому что он поддерживает более сложную индексацию геометрических данных (r-деревьев).MyISAM на самом деле лучше, чем InnoDB для пространственных данных, BTW, потому что он также поддерживает пространственные индексы r-дерева (но не такие мощные запросы, как PostGIS.) Если вам просто нужны точки, хотя, b-деревья InnoDB или MyISAM подходят.Если ограничивающих рамок достаточно (т. Е. Вам нужно все внутри прямоугольной плоскости вокруг некоторой точки), то индексы на основе геохеша в порядке.Больше информации обо всем этом здесь .Стоит потрудиться познакомиться с PostGIS и Postgres, они оба являются замечательными проектами и, безусловно, моим любимым реляционным БД, но просто поиск точек не требует их.

0 голосов
/ 25 октября 2011

Вы также можете проверить MonogDB , он поддерживает геопространственную индексацию, что позволяет очень эффективно запрашивать ближайшие объекты! Вот что парни из Foursquare используют для поиска ближайших мест ...

...