附近人

几个地理位置信息处理方案的对比和分析

送分小仙女□ 提交于 2019-12-18 22:50:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 对于任何LBS应用来说,让用户寻找周围的好友可能都是一个必不可少的功能,我们就以这个功能为例,来看看各种处理方案之间的差异和区别。 我们假设有如下功能需求: 显示我附近的人 由近到远排序 显示距离 2. 可能的技术方案 排除一些不通用和难以实现的技术,我们罗列出以下几种方案: 基于MySQL数据库 采用GeoHash索引,基于MySQL MySQL空间存储(MySQL Spatial Extensions) 使用MongoDB存储地理位置信息 我们一个个来分析这几种方案。 方案1:基于MySQL数据库 MySQL的使用非常简单。对于大部分已经使用MySQL的网站来说,使用这种方案没有任何迁移和部署成本。 而在MySQL中查询“最近的人”也仅需一条SQL即可, SELECT id, ( 6371 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians ( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM places HAVING distance < 25 ORDER BY distance LIMIT 0