让数据飞——极海大数据可视化技术研究

      数据时代每天都会产生海量的数据信息,其中80%以上为地理信数据。目前地理数据不仅涉及规划、水利、能源矿产、气象环保、国土房产等行业中获取,而且已经成为国家数字城市与智慧城市建设核心平台的重要支撑。在这样的时代背景下,如何对海量数据进行可视化已经成为了当下最为迫切的需求,传统的基于单一数据存储介质的方法在面对一定的数据规模时性能上已经难以满足用户需求,可视化的等待时间很长;       极海针对海量地理数据的快速可视化技术做了一次全面的升级,提出了一套高效的技术方案。

传统的解决方案

      在面对千万级别甚至亿级别的数据量时,传统地理信息服务商更多是通过扩展硬件,购买高性能服务器的方式来解决现有的需求,而对海量数据的存储则依旧采用传统的关系型数据表或者一些主流的NoSQL例如Hadoop的HDFS等,当我们对地理数据进行可视化的时候,采用的是瓦片的组织方式,对每一个瓦片内的数据都是实时计算,在数据存储介质中找到该瓦片内的数据并渲染最终将所有的瓦片组织成一副地图。       当数据量达到千万甚至亿级的时候,对每一个瓦片数据的计算就成为了可视化的拦路虎,数据量导致了每一个瓦片计算时间的陡增,从而使得整个数据可视化的效率降低。极海在对千万级以上的数据进行测试时发现,当地图缩放层级低于12级时,每一个瓦片的计算加可视化时间长达秒级的,这对用户来说是不可容忍的,我们一般认为单张瓦片的渲染时间在100ms以内是比较理想的(上述的数值都是在相同的硬件环境下测试)。

极海快速可视化方案

      通过对上述案例分析,发现最终导致可视化速度变慢的罪归祸首是数据量增大时,渲染每一个瓦片时从数据存储介质中查找该瓦片内的数据并可视化的时间变长了。因此针对这个痛点,极海快速可视化解决方案对每一个瓦片内数据进行预生成,在用户访问时直接将预生成的瓦片数据提供给用户,抹去了实时计算的等待时间,这是一种典型的以空间换取时间的解决方式。并且由于采用了矢量瓦片的编码方式,预生成的数据所带来的空间占用也是最低的。区别于传统关系表的数据组织方式,预生成的矢量瓦片数据采用的是以“瓦片索引——>瓦片数据”的数据组织方式:

      这种方式在实际存储过程中对每一个瓦片会生成一个对应的HASH值,ZXY瓦片的数据表中实际存放的是瓦片索引与HASH值的对应关系,由于在获取瓦片的过程中有些瓦片中不包含数据,则将被绘制成默认的背景色,这在任何层级都是相同的,所以所有层级的背景色瓦片只需存储一张即可,极海的实现方式正是采用了这种思想,在空间换取时间的博弈中将空间的代价压缩至最小,同时为了保障服务的高可用,极海采用了分布式小文件存储系统存储预生成的瓦片       这种方式很好的解决了用户在对大数据量进行可视化时高时延痛点,并最大程度地保障了可视化的性能。为用户实现在毫秒级的时间内对海量地理数据的可视化提供了一套可行的技术方案。

gujy

继续阅读此作者的更多文章