网站会有频繁的如下搜索请求: 离 <邮编 xxx> <1 公里> 内所有的 <餐馆>
以上:
1
drroot OP mongoDB?
|
2
Wangxf 2017-01-08 05:05:21 +08:00
不知道为啥这么多人推荐 mongo ?仅仅因为是 js 近亲?要说成本的话大学基本是都学过数据库啊,我记得我们学的还是 mssql 。。转换成 mysql 应该也没那么麻烦吧。。
|
3
ericls 2017-01-08 05:06:49 +08:00 via iPhone
Postgres 做这个也很方便
|
4
shiny 2017-01-08 05:58:13 +08:00 via iPhone
距离是可以换算的,没那么麻烦吧
|
5
beginor 2017-01-08 06:34:04 +08:00 via Android 1
数据量大而且查询频繁的话,建议使用空间数据类型,前提是要有经纬度,建立空间索引,非常适合楼主这种空间查询。
主流的关系数据库都支持空间索引, MongoDB 貌似只支持 GeoRSS , 不知道是否支持空间索引。 |
6
Return2legacy 2017-01-08 06:46:07 +08:00 via Android
mysql 5.7 以上
|
7
aijam 2017-01-08 08:28:41 +08:00
ElasticSearch
|
8
srlp 2017-01-08 08:31:51 +08:00
能装在内存的话(既然你有频繁查询), http://cristian.regolo.cc/2015/07/07/introducing-the-geo-api-in-redis.html
mongodb 不太适合。 |
9
loading 2017-01-08 09:14:55 +08:00 via Android
数据库主要功能不是运算!
|
11
cstj0505 2017-01-08 09:22:14 +08:00 via iPhone
绝对是 postgresql 啊,速度快,原生支持点的数据类型,还提供相应函数, postgis 支持地理位置的处理。专业的都用这个
|
12
skydiver 2017-01-08 09:43:55 +08:00 via iPad
支持 gis 最好的就是 pg 了吧
|
13
k9982874 2017-01-08 10:25:10 +08:00 via iPad
mongod 和 redis 都有 geo api
|
14
mko0okmko0 2017-01-08 10:48:05 +08:00
任意直线距离,大部分常规资料库都一样快阿.
还以为是在问以道路为准的. 如果是在一个路网内.依照交通和道路状况.计算出两点之间最短交通路径.这个才是比较需要考虑图论资料库或是有特殊要化的. |
15
cstj0505 2017-01-08 10:51:12 +08:00 via iPhone
@mko0okmko0 你说的这些也不需要图数据库, postgresql+postgis 完全满足要求,还提供对应的函数和索引。
|
16
liprais 2017-01-08 10:53:21 +08:00
postgis +1
|
17
jedyu 2017-01-08 11:03:03 +08:00
postgis 不二选择
|
18
lights 2017-01-08 11:23:55 +08:00
|
19
blacklee 2017-01-08 11:47:32 +08:00
Postgres 。
我刚刚把一个用了两年多, 5500W+数据量的系统,从 MySQL 导入到 Postgres 。 |
20
Warder 2017-01-08 12:23:43 +08:00 via Android
做 gis 相关数据的应该都知道 postgres
|
22
xjp 2017-01-08 14:25:16 +08:00 via iPhone
mongodb 和 redis 都支持地理位置查询 之前项目我们用 mongodb 的
|
23
fasling 2017-01-08 14:40:17 +08:00 via Android
可以直接用 PostgreSQL ,如果仅仅是这么一个需求的话可以参考地图分图幅的办法给每个餐馆和邮编分配一个网格号码,根据网格就可以直接遍历。这在空间数据处理里很常见。
|
24
BobbyLu 2017-01-08 17:10:42 +08:00
PostgreSQL 似乎对地理位置数据有特殊的优化
|
25
hao123yinlong 2017-01-08 20:39:34 +08:00
推荐 PostgreSQL ,千万用户,地理位置存储目前使用的 Mongo ,准备切 PG
|
26
fivesmallq 2017-01-08 20:45:32 +08:00 via iPhone
推荐 ElasticSearch ,之前用 mongo 性能太差
|
27
TangMonk 2017-01-08 20:46:59 +08:00 via Android
redis 处理比 postgis 还方便
|
28
Miy4mori 2017-01-08 22:10:14 +08:00 via Android
不建议用 mongo db ,因为丫的不支持 ACID ,推荐 PostGis
|
29
neoblackcap 2017-01-08 22:57:11 +08:00
@shiny 应用层目前的换算成本高罢了,毕竟地球是一个球体,地表两点的距离不是直线
|
31
shiny 2017-01-08 23:08:17 +08:00
@neoblackcap 看精度要求,精度不高可以 GeoHash ,索引做的恰当还是挺快的。
|
32
ETiV 2017-01-09 00:07:08 +08:00
调百度、高德的 API 不行么,自己整不明白还非得自己做。。。?
|
34
Sharuru 2017-01-09 08:05:12 +08:00 via Android
如果楼主是类似生活 POI 兴趣点搜索的话,调地图 API 最快最容易。
如果涉及到自有 LBS , GIS 的话,还是推荐 PostgreSQL ,专业做这个。 毕竟,谁都不知道未来需求,稍微“未雨绸缪”下也是值得考虑的。 (不过,同样也得考虑学习成本,看回复不同数据库的选择和技术栈也有关系 |
35
Nitromethane 2017-01-09 09:54:10 +08:00
这种场景更考验的是如何设置缓存
推荐使用 redis 与传统结构性数据库配合 否则高并发场景下,仅仅凭数据库性能是远远不够的,除非你单机性能特别强特别强特别强 |