技术问题: APP 需要做一个附近的人的功能,怎么做呢?数据库没法查性能也差(已知在线用户经纬度)

2017-11-27 14:07:57 +08:00
 dbfox
V 友一般都有哪些好的技术方案?
4151 次点击
所在节点    程序员
30 条回复
xlvecle
2017-11-27 17:27:11 +08:00
经典做法,经纬度用 geohash 编码,建一个 R Tree
QAPTEAWH
2017-11-27 17:30:22 +08:00
普通 b-tree 肯定慢,储存 geo 数据有专门的数据结构(大致是个二维 b-tree)。

主流数据库肯定提供这种机制,文档里查查 spatial、geo 等词就知道了。
TangMonk
2017-11-27 17:34:24 +08:00
redis 简单是简单,但是不如 gis 嵌入到数据库里面方便(比如说查询 50km 之类的 20 岁女性),用 postgres 就方便的多了。
honeycomb
2017-11-27 17:37:00 +08:00
支持 R 树的数据库,或者现成提供包装好 geo 数据支持的
这样的功能连 mysql 都有
mooncakejs
2017-11-27 17:46:45 +08:00
pg 一波流,全文搜索,地理位置,jsonb 都解决了。
NUT
2017-11-27 23:55:07 +08:00
数据分片,然后并发查询 最后合并结果 速度在大也不虚
opengps
2017-11-28 08:41:37 +08:00
以前没有知道这么一堆支持地理算法数据库的时候,我用的是关系型 sql server,采用结果不足放大在查的方法,先算经纬度加减 0.001 范围内,根据结果个数是否满足方法 0.001 ,最多放大 10 次,这样实现的。
sampeng
2017-11-28 12:15:35 +08:00
elasticsearch,mongodb。专门解决此类问题
Yang2333
2019-10-15 23:24:24 +08:00
码一下
Yang2333
2019-10-15 23:24:56 +08:00
楼主...最后怎么做的呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/409904

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX