Лучшее решение для получения и сохранения позиции пользователя в реальном времени? - PullRequest
1 голос
/ 08 декабря 2011

Привет, я пишу игру для Android lbs, мне нужно:

  • сохранение позиции пользователя в реальном времени (широта, долгота)

  • получить пользователей, которые находятся близко к заданной позиции

Я написал некоторые API-интерфейсы с django и mysql (например, получить имя пользователя и возраст по его идентификатору)

Как лучше всего сделать то, что я сказал выше (с django / python)?
Должен ли я использовать базу данных nosql, такую ​​как redis?
И как позиции должны храниться в базе данных, чтобы я мог быстро получить позиции, близкие к данной позиции?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Ну, я энтузиаст Redis , но, учитывая вашу конкретную проблему, есть ядро ​​базы данных NoSQL, которое лучше поддерживает геопространственные запросы: MongoDB .

Я никогда не использовал MongoDB, но на конференциях я видел людей, говорящих об этой функции: http://www.mongodb.org/display/DOCS/Geospatial+Indexing

Я внимательно прочитал ее и сосредоточился на следующих основных моментах:

  • Геопространственный индекс должен поддерживаться для каждой вставки в базе данных (т. Е. Генерироваться снова), что отличается от Redis, где нет такой вещи, как индекс (отсортированные наборы в Redis «могут» решить вашу проблему, но, опять же, это будетбыть намного больше работы);
  • Вы будете использовать find и / или geoNear запросов в MongoDB;
  • Для комбинированных запросов с другими индексами, вы должны указать и объединить все индексыв время создания ;
  • Расстояние может быть измерено с учетом кривизны Земли в geoNear (с атрибутом spherical).Если этот атрибут не используется (или find есть), расстояние преобразуется из фиксированного значения miles per arcdegree.

Также любопытство: «логотип»в переполнении стека тег NoSql взят из MongoDB.

1 голос
/ 08 декабря 2011

Вы считали геоджанго ?Из документов:

GeoDjango - это дополнение для Django, которое превращает его в географическую веб-среду мирового класса.GeoDjango стремится максимально упростить создание географических веб-приложений, таких как службы на основе определения местоположения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...