获取和存储用户实时位置的最佳解决方案?

时间:2011-12-08 14:23:20

标签: python django nosql redis

您好我正在编写Android lbs游戏,我需要:

  • 存储用户的实时位置(lat,lon)

  • 获取接近指定位置的用户

我用django和mysql写了一些后端api(例如,用他的id获取用户名和年龄)。

做上面所说的最好的解决方案(使用django / python)是什么? 我应该使用像redis这样的nosql数据库吗? 如何将位置存储在数据库中,以便我可以快速获得接近给定位置的位置?

2 个答案:

答案 0 :(得分:2)

好吧,我是Redis的狂热爱好者,但考虑到您的具体问题,有一个NoSQL数据库引擎可以更好地支持地理空间查询:MongoDB

我从未使用过MongoDB,但在会议中,我看到有人在谈论这个功能:http://www.mongodb.org/display/DOCS/Geospatial+Indexing

我现在仔细阅读,并专注于这些要点:

  • 地理空间索引必须为数据库中的每个插入(即再次生成)保留,这与Redis不同,Redis没有索引这样的东西(Redis中的排序集“可以”解决您的问题,但是这将是更多的工作);
  • 您将在MongoDB中使用find和/或geoNear个查询;
  • 对于与其他索引的组合查询,您必须在创建时指定并组合所有索引;
  • 可以考虑geoNear中的地球曲率(spherical属性)来测量距离。如果未使用此属性(或find为),则距离将从固定miles per arcdegree转换。

还有好奇心:Stack溢出NoSql标签中的“logo”来自MongoDB。

答案 1 :(得分:1)

你考虑过geodjango吗?来自文档:

  

GeoDjango是Django的附加组件,将其变成世界级的   地理Web框架。 GeoDjango努力使它变得如此简单   可以创建地理Web应用程序,例如基于位置的应用程序   服务。