使用MYSQL InnoDB进行地理位置搜索

时间:2014-12-10 12:34:57

标签: mysql mongodb geolocation

我正在开发一个支持GEO的应用程序,我有一个明显的用例,可以在给定用户位置的某个距离内搜索用户。目前我使用的是MySQL数据库。因为用户表预计会非常大,所以获得结果的时间会变长(如果需要遍历整个表,则会太长)。

我正在使用InnoDB,因为我的桌子确实需要许多MYISAM无法做到的事情。我尝试过mongo并尝试增加500万用户并对它们进行一些测试。现在我很想知道MYSQL在相同的情况下可以提供什么,因为我会更喜欢MYSQL,如果它给mongo略微接近的结果。

我的用户表有其他字段加上lat字段和lng(都是索引的)。还需要很长时间。任何人都可以提出更好的设计方法,以获得更快的结果。

1 个答案:

答案 0 :(得分:0)

Mongo有一堆非常有用的内置地理空间命令和聚合,非常适合您在特定用户点附近查找用户的情况。其他包括within,它在边界框或多边形内找到点。在您的情况下,geoNear聚合是完美的,并且可以提供远离给定点的计算距离。 您将不得不使用mysql编写许多功能。然后你还为Postgres添加了Postgis。 Postgres是经典的开源Mysql竞争对手,Postgis比Mongo更长,数据库可能是开放的街道地图,政府gis和类似的。

但是对于这个问题,你需要使用你可能没有使用的geojson格式和2dsphere索引。发布您的数据的单个记录。