对于个人而言,数据可视化是我们在日常工作中常常能够接触到的一项重要技能,通常,我们会使用Excel进行简单的图表制作,通过这些图表,我们进而就对这些数据有了一个直观的了解和认识。
而对于企业来说,想要“读懂”存储在服务器上的大量业务数据,绝不是Excel能够完成的,这需要数据处理、分析、可视化呈现等一整套解决方案。因此,在实施大数据战略,或者说部署数据分析产品时,很多企业都会有这样的疑问:如何处理海量的业务数据?借助什么样的分析手段才能发现数据价值?如何确保数据可视化分析过程中的实时性?在第九届中国数据库技术大会(DTCC 2018)现场,DataHuner CTO马珂就针对这些问题进行了讲解。
本次分享,马珂从企业内的真实业务场景出发并结合测试实例,逐步介绍大数据时代下,数据可视化分析的技术架构与组成。同时,马柯详细介绍了探索式分析、实时数据分析的技术原理及企业应对海量数据分析的处理方法。
谈谈数据库性能优化
近些年,数据库技术不断推陈出新,从传统的关系型数据库到NoSQL,或者说从行存储发展到列存储,数据库的查询方式发生了根本性的变化。
关系型数据库,基于存储结构,其在模型定义(ORM)、数据关联(TableJoin)、聚合计算(Group)等方面具有优势,关系型数据库的特性往往也是非关系型数据库的短板;而非关系型数据库在处理海量数据(千万行以上)方面则性能突出。
谈到数据库性能,从算法层面来讲,其实无论哪种数据存储结构,基于算法的优化都已达到极限。目前提升数据库性能的途径,主要集中在IO层面,例如DFS系统、MPP的架构。内存数据库(如Redis)虽然在性能上是一种质的提升,但其持久化所引发的一系列问题,可能会使架构复杂度增加,不一定适用于所有场景。
另外,非关系型数据库向关系型数据库查询(T-SQL)的兼容,例如Hive,确实已经取得了长足的发展,但目前看还不够成熟,暂时无法做到平滑迁移。
还有一个隐含的问题,我们可以以一种娱乐的心态观察一下,即:分布式计算。对于以统计学为基础的数据分析,是一种基于全量数据的计算。所以在这种前提下,分布式计算极有可能是一个伪命题。
在MPP架构中下的RDB中,分布式计算应当是耦合在某些查询当中的,例如count(*),这实际上是由分布式存储所带来的算法优化。是否也可以通过某种加权算法,来协调其他的聚合算法?然后用架构性能来抵消加权算法所带来的新的复杂度?我相信答案是肯定的。
可视化技术的演进
相对而言,数据分析技术有比较成熟、丰富的理论和实践支撑,而可视化技术则比较匮乏。从定义上来讲,数据可视化主要是为了增强数据的显示效果,方便用户以更加直观的方式查看数据,进而发现数据中隐藏的价值。
近几年,随着显示技术的突飞猛进,包括从显示器、投影仪,到现在的LED巨幅屏幕,VR/AR,全息技术,乃至移动设备和性能的升级,使得数据可视化领域有大量有趣的事情可以做。回到企业场景,我们可以把可视化分为两个层面的问题:即数据分析中的可视化:从报表到分析、数据展示中的可视化:从平面到多维。
大数据时代的到来,也让数据可视化技术得到了更多的关注,但面对海量数据,可视化技术目前仍然存在很多亟待解决的问题,包括海量数据的ETL处理、实时数据处理等。未来,随着人工智能和机器学习技术的快速发展,其与可视化的结合,相信也会是一个重要挑战。
探索式分析技术
数据分析当中的可视化,最直接的表现就是各类图表。其实,我们在借助Excel或其他工具生成图表时,实际上已经在可视化这条路上迈出了第一步。
在数据分析层面,传统的数据分析有明确的目的性,从数据来源、分析方式、输出结果等方面,都是有传统的业务逻辑支持的,按部就班地进行分析即可。但是进入集约化生产之后,如何调优生产、降低成本,这些事情就不是那么明确了。
与此同时,由于前期的数据积累,数据分析师所面对的数据体量也越来越大。如果我们将传统的数据分析称为粗放式分析,那么当前企业所面临的挑战,是对所拥有数据的精耕细作。这种集约化分析就是对数据金矿的深度挖掘,是企业的必经之路。其背后的分析方式,也就自然进入了探索式分析阶段。
在探索式分析中,可视化(或者说各类图表)此时是用户快速捕捉数据特点最有效的途径,在这种场景下,可视化对象是一个结果集(分析结果,小数据),虽然数据量较小,但人类依然无法直接处理。
同时,因为探索式分析需要协同决策,所以对可视化表现的合理性有较高的要求,背后应该有统一的绘图标准,来实现可视化方式的切换。狭义的数据可视化,也就是图表,我们将其抽象为以下几个部分:
坐标系
1. Rectangular Coord(Q-1, Q-All)
2. Polar Coord
3. GEO
度量(Metric)的图形表达
1. Size(Distance, Radian)
2. Direction
3. Extreme(SUM,MAX,MAXMIN)
4. 色彩饱和度
维度(Dimension)的图形表达
1. Delta(Position, Angle)
强调(基于维度)
1. Color
2. Animation
在这个体系下,可以将我们熟悉的几种图表进行建模。这里我们先不考虑“色彩饱和度”和“强调”两方面的参数。
柱图:
Rectangle: [0, 0, 400, 300]
Coordination = Rectangular:Q1
坐标系:第一象限
Metric = Size:Distance;
Direction =[Left, Up];
Extreme = MAXMIN
度量:距离的Size;左向右排列,下到上为正像;参考极值:最大最小值差。
Dimension = Delta:Position, Offset =[0, 0.8];
纬度:位置偏移,位置矫正:0,视觉矫正:0.8(该参数具体表现为柱图的宽度内缩)
饼图:
Rectangle: [0, 0, 200, 200]
Coordin+tion = Polar
坐标系:极坐标系
Metric = Size:Radian; Direction =[Clockwise]; Extreme = SUM
度量:弧度Size;顺时针排列;参考极值:总和
Dimension = Delta:Angle, Offset = [0,1];
纬度:角度偏移,位置矫正:0,视觉矫正:1
极柱图:
Rectangle: [0, 0, 300, 300]
Coordination = Polar
坐标系:极坐标
Metric = Size:Radian, Direction =[Clockwise]; Extreme = MAXMIN
度量:弧度尺寸,顺时针,差极值参考
Dimension = Delta:Position, Offset =[0, 0.8];
纬度:位置偏移,0位置矫正,0.8视觉矫正
在这种可视化体系下,我们首先可以对各类图表的适配能力进行归纳,并对图表的表现能力进行量化,从而形成基于数据集特点的图表推荐算法。前面提到,每一个图表实际是一个模型。我们在基于SaaS的数据分析产品中,会将这个模型与行业、用户使用习惯结合,借助机器学习,最后产生图表的AI算法。
实时的数据可视化分析
如果说探索式分析的可视化,是OLAP的可视化,那么实时数据可视化,可以说是OLTP的可视化。这种情况下,时间维度往往是基础维度,因为OLTP对实时性有较高的要求。所谓实时性,具体体现在时间切面的密度、采样精度等问题上,从而决定了数据窗口的大小。基于B/S的产品结构,我们对像素绘图的性能进行了测试。浏览器端的绘图分2D和3D两种,基本数据如下:
Mac Pro i7 8G Inter Graphic-card
类型|复杂度|FPS
Canvas 2D 400,000 11FPS
Canvas 3D 1,000,000 30FPS
这里面的复杂度,为一次最简绘图,即描绘一个点的动作。由于Canvas3D(WebGL)调用了显卡计算,所以点绘图方式和2D有所不同,这其中还包含了线绘图和自旋计算。WebGL接口所使用的GL是OpenES,与OpenGL同源。
当然,2D和3D绘图可比性不是很高,但通过这两组数据,我们可以基本了解在浏览器端,2D和3D绘图方面我们能够达到的性能上限。在我们实际遇到的客户场景中,有个上限8万点绘图,2FPS刷新率的案例。根据上面的测试数据,我们可以看到,2D性能完全可以满足需求,富裕的算力可以放在优化视觉效果和用户体验上。
此外,三维甚至多维空间中的可视化还处在萌芽的阶段,在这种场景下,会让数据可视化变得更加困难。未来,随着可视化技术的不断发展,我相信三维空间下的可视化理论会有大幅升级,同时由于显卡GPU的支持,其渲染能力也会大幅度提升。
今天的分享就到这里,感谢大家聆听。
网友评论