哪个数据库 SQL or NOSQL 处理距离最方便?

2017-01-08 04:50:30 +08:00
 drroot

网站会有频繁的如下搜索请求: 离 <邮编 xxx> <1 公里> 内所有的 <餐馆>

以上:

  1. <邮编 xxx>为任何源地址,可以是一个 ip, 邮编,城市名字
  2. <1 公里> 为距离,也可以是 1 英里, 2 英里, 3 英里, 25 英里, 50 英里等
  3. <餐馆> 为类别,也可以是酒店等
5320 次点击
所在节点    程序员
35 条回复
xjp
2017-01-08 14:24:03 +08:00
@Wangxf mysql 还不支持地理位置查询
xjp
2017-01-08 14:25:16 +08:00
mongodb 和 redis 都支持地理位置查询 之前项目我们用 mongodb 的
fasling
2017-01-08 14:40:17 +08:00
可以直接用 PostgreSQL ,如果仅仅是这么一个需求的话可以参考地图分图幅的办法给每个餐馆和邮编分配一个网格号码,根据网格就可以直接遍历。这在空间数据处理里很常见。
BobbyLu
2017-01-08 17:10:42 +08:00
PostgreSQL 似乎对地理位置数据有特殊的优化
hao123yinlong
2017-01-08 20:39:34 +08:00
推荐 PostgreSQL ,千万用户,地理位置存储目前使用的 Mongo ,准备切 PG
fivesmallq
2017-01-08 20:45:32 +08:00
推荐 ElasticSearch ,之前用 mongo 性能太差
TangMonk
2017-01-08 20:46:59 +08:00
redis 处理比 postgis 还方便
Miy4mori
2017-01-08 22:10:14 +08:00
不建议用 mongo db ,因为丫的不支持 ACID ,推荐 PostGis
neoblackcap
2017-01-08 22:57:11 +08:00
@shiny 应用层目前的换算成本高罢了,毕竟地球是一个球体,地表两点的距离不是直线
billlee
2017-01-08 23:02:17 +08:00
@Miy4mori 搜索业务要毛线 ACID
shiny
2017-01-08 23:08:17 +08:00
@neoblackcap 看精度要求,精度不高可以 GeoHash ,索引做的恰当还是挺快的。
ETiV
2017-01-09 00:07:08 +08:00
调百度、高德的 API 不行么,自己整不明白还非得自己做。。。?
Miy4mori
2017-01-09 01:40:31 +08:00
@billlee 不但没有 ACID ,性能也差,虽然是搜索业务,有两者都兼顾的为什么不用呢?
Sharuru
2017-01-09 08:05:12 +08:00
如果楼主是类似生活 POI 兴趣点搜索的话,调地图 API 最快最容易。

如果涉及到自有 LBS , GIS 的话,还是推荐 PostgreSQL ,专业做这个。

毕竟,谁都不知道未来需求,稍微“未雨绸缪”下也是值得考虑的。

(不过,同样也得考虑学习成本,看回复不同数据库的选择和技术栈也有关系
Nitromethane
2017-01-09 09:54:10 +08:00
这种场景更考验的是如何设置缓存
推荐使用 redis 与传统结构性数据库配合
否则高并发场景下,仅仅凭数据库性能是远远不够的,除非你单机性能特别强特别强特别强

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

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

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

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

© 2021 V2EX