1
warlock 2017-11-27 14:08:53 +08:00
GeoHash
|
2
dbfox OP 发现 redis 有这样的功能
命令:GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] 命令描述: 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。 范围可以使用以下其中一个单位: m 表示单位为米。 km 表示单位为千米。 mi 表示单位为英里。 ft 表示单位为英尺。 |
3
blacklee 2017-11-27 14:31:04 +08:00
你有多少用户?
|
5
Immortal 2017-11-27 14:37:31 +08:00
以前看过一个早期的文章 年代有点久远 LZ 可以重新测试和评估
https://ruby-china.org/topics/22059 |
6
Immortal 2017-11-27 14:38:21 +08:00
你说的 redis geo 功能 是去年还是什么时候更新才加上的 所以那时候没测试数据 具体多 google
|
7
blacklee 2017-11-27 14:40:30 +08:00 1
@dbfox 用 Postgres 数据库,简单弄个索引就完事了。
我自己的笔记本,MacBook Pro Late 2013,2 GHz Intel Core i7,8 GB 1600 MHz DDR3 在 Rails console 里执行了两条语句,你可以看到所需时间 [3] pry(main)> PoiBasic.count (20053.1ms) SELECT COUNT(*) FROM "poi_basics" => 56785460 [4] pry(main)> PoiBasic.order("latlng <-> point(30.333, 120.222)").limit(50) PoiBasic Load (23.5ms) SELECT "poi_basics".* FROM "poi_basics" ORDER BY latlng <-> point(30.333, 120.222) LIMIT 50 |
8
owenliang 2017-11-27 14:41:28 +08:00
mongo 是可以的。
|
9
xmadi 2017-11-27 15:04:10 +08:00 via iPhone
redis 和 mongodb 自带地理位置查询
|
10
shenhhd 2017-11-27 15:08:37 +08:00
也可以考虑用 Elasticsearch 这个。速度还不错,自带距离。
|
12
freehere 2017-11-27 15:20:44 +08:00
放到百度地图数据库
|
13
killergun 2017-11-27 15:25:56 +08:00
高德地图不是现成的
|
14
sunjiayao 2017-11-27 15:29:42 +08:00
可以使用 redis mongo 这些自带地理索引的数据库
也可以用 geohash 自己实现 |
15
vus520 2017-11-27 15:38:47 +08:00 1
mongodb, redis, postgres, elasticsearch
|
17
billwsy 2017-11-27 16:55:38 +08:00 via iPhone
Nearest Neighbor 的那一套方法可以不?
|
18
teddy2725 2017-11-27 17:14:32 +08:00
redis es pg
|
19
minvacai 2017-11-27 17:22:12 +08:00
MongoDB, MySQL 其实都可以的
|
20
fivesmallq 2017-11-27 17:22:54 +08:00
mongo 性能不太好,推荐 es
|
21
xlvecle 2017-11-27 17:27:11 +08:00
经典做法,经纬度用 geohash 编码,建一个 R Tree
|
22
QAPTEAWH 2017-11-27 17:30:22 +08:00
普通 b-tree 肯定慢,储存 geo 数据有专门的数据结构(大致是个二维 b-tree)。
主流数据库肯定提供这种机制,文档里查查 spatial、geo 等词就知道了。 |
23
TangMonk 2017-11-27 17:34:24 +08:00 via Android
redis 简单是简单,但是不如 gis 嵌入到数据库里面方便(比如说查询 50km 之类的 20 岁女性),用 postgres 就方便的多了。
|
24
honeycomb 2017-11-27 17:37:00 +08:00
支持 R 树的数据库,或者现成提供包装好 geo 数据支持的
这样的功能连 mysql 都有 |
25
mooncakejs 2017-11-27 17:46:45 +08:00
pg 一波流,全文搜索,地理位置,jsonb 都解决了。
|
26
NUT 2017-11-27 23:55:07 +08:00 via iPhone
数据分片,然后并发查询 最后合并结果 速度在大也不虚
|
27
opengps 2017-11-28 08:41:37 +08:00
以前没有知道这么一堆支持地理算法数据库的时候,我用的是关系型 sql server,采用结果不足放大在查的方法,先算经纬度加减 0.001 范围内,根据结果个数是否满足方法 0.001 ,最多放大 10 次,这样实现的。
|
28
sampeng 2017-11-28 12:15:35 +08:00
elasticsearch,mongodb。专门解决此类问题
|
29
Yang2333 2019-10-15 23:24:24 +08:00
码一下
|
30
Yang2333 2019-10-15 23:24:56 +08:00
楼主...最后怎么做的呢
|