千万级别以上的地图兴趣点(POI)的快速查找测试
2016-08-23 11:32
991 查看
近期,终于有点时间,将之前的地图兴趣点爬虫程序(http://blog.csdn.net/sparkexpert/article/details/51554813)完善了下,并用了七天的时间爬取了覆盖全国的任一地区的所有类别的兴趣点数据。
数据下载还是一个艰难的过程,不过幸运的是,采用了新方法之后,基本上很少需要人工去干预,当然也会有网络的限制,但是基本上同时开辟5个下载通道,速度一直是嗖嗖的。
下载完成后,由于没有直接处理,只是下载了JSON格式的文本数据,约占磁盘空间60G以上。而汇总的POI个数则有好几千万。(目前有些超出范围还下载得不全,主要原因是网站服务端的限制,只允许下载前几页。当然这个也有办法处理,只是目前没有太计较于这些。)
那么下载数据之后,就在琢磨如何能够快速查找数据,像百度谷歌等各种地图网站加载数据是非常快的,那么如何去实现这个步骤呢。本文主要就是解决这个问题。
于是采用redis的HASH来进行每个兴趣点的存储。处理过程中会过滤掉一些重复的键值,但这个过滤是有条件的,如报刊亭,可能有很多同样的键值,但是它们都是独立的,就需要在这些后缀添加个0,1,2,.....
下附一张在redis客户端查找的个数。这张图只是在导入过程中随便截的图。实际上已经是好几千万了。
为了验证查询效率,进行了查找,一种是直接查找某个城市的某种类别的数据,如图所示:
可以说,用redis来做地图POI缓存,速度还是特别快的。在下面的状态栏实时显示的了查询所占用的时间,非常少的时间就返回结果了。
为了更好地测试对全部信息的查找,如在不限制城市,不限制类别进行查找,其结果如下:
发现总的测试时间也就5秒多一些,这还是在一台非常普通的PC上的测试。而真正要做地图服务器,则可以采用大内存高性能服务器,完全可以做得毫秒级响应。
不过采用这种列式数据库有个不好的地方,就是没有办法在上面直接做附近POI查询。(这在键值上也没有办法做到。)这估计还得依靠以前近格网索引的办法才能实现吧。(不过要是限制在某个城市,某种类别的,用redis肯定也能够做到,毕竟在小数据上做查询效率还是很高的)
数据下载还是一个艰难的过程,不过幸运的是,采用了新方法之后,基本上很少需要人工去干预,当然也会有网络的限制,但是基本上同时开辟5个下载通道,速度一直是嗖嗖的。
下载完成后,由于没有直接处理,只是下载了JSON格式的文本数据,约占磁盘空间60G以上。而汇总的POI个数则有好几千万。(目前有些超出范围还下载得不全,主要原因是网站服务端的限制,只允许下载前几页。当然这个也有办法处理,只是目前没有太计较于这些。)
那么下载数据之后,就在琢磨如何能够快速查找数据,像百度谷歌等各种地图网站加载数据是非常快的,那么如何去实现这个步骤呢。本文主要就是解决这个问题。
于是采用redis的HASH来进行每个兴趣点的存储。处理过程中会过滤掉一些重复的键值,但这个过滤是有条件的,如报刊亭,可能有很多同样的键值,但是它们都是独立的,就需要在这些后缀添加个0,1,2,.....
下附一张在redis客户端查找的个数。这张图只是在导入过程中随便截的图。实际上已经是好几千万了。
为了验证查询效率,进行了查找,一种是直接查找某个城市的某种类别的数据,如图所示:
可以说,用redis来做地图POI缓存,速度还是特别快的。在下面的状态栏实时显示的了查询所占用的时间,非常少的时间就返回结果了。
为了更好地测试对全部信息的查找,如在不限制城市,不限制类别进行查找,其结果如下:
发现总的测试时间也就5秒多一些,这还是在一台非常普通的PC上的测试。而真正要做地图服务器,则可以采用大内存高性能服务器,完全可以做得毫秒级响应。
不过采用这种列式数据库有个不好的地方,就是没有办法在上面直接做附近POI查询。(这在键值上也没有办法做到。)这估计还得依靠以前近格网索引的办法才能实现吧。(不过要是限制在某个城市,某种类别的,用redis肯定也能够做到,毕竟在小数据上做查询效率还是很高的)
相关文章推荐
- SuperMap iMobile for Android 地图添加POI兴趣点
- 地图POI(兴趣点)数据的爬虫(突破限制)
- 地图 POI(兴趣点)
- echarts全国地图显示到城市级别
- 怎样玩转千万级别的数据(表分区)
- 【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件
- 天地图专题三:根据标注点的范围确定天地图的中心点和缩放级别
- mysql数据库千万级别数据的查询优化和分页测试
- 单表千万级别大数据量更新方案
- java使用poi解析2007以上的word文档中的表格与图片
- 创建自己的 OSM.Planet 街道级别地图服务器,汉化地名避免万国语
- 连载:告诉你如何设计一个日访问量千万级别的系统,谈oracle的高级设计和开发(2)
- 由于某种错误导致数据表数据巨大(千万级别),删除后对该数据操作速度极慢的原因及解决方法
- 怎样玩转千万级别的数据(表分区)
- JAVA使用POI如何导出百万级别数据
- 老李分享:如何搭建千万级别用户的应用系统 3
- 设置 百度地图 的显示的地图中心 和缩放级别
- 千万用户级别应用系统背后的SOA组件化容器
- 微信小程序:高德地图搜索周边poi接口实践
- java海量数据处理(千万级别)(2)-海量数据FTP下载