问题定义
解决大型时空数据集的交互式的可视分析和探索。能够实时进行的操作总是有限的,所以实现两个interactive的操作就够了。
为了达到实时性,预计算是一种常用的思路(突然想到Games202,漫反射,镜面反射没懂,全局环境光LVM)。就像解决全局光照,通常会花大量时间先渲染好光照贴图,然后在运行时查询贴图。这样问题就变成了设计合适的数据结构,并将一些耗时的操作进行预处理。
总而言之,作者提出一种新的数据结构,减小内存占用,支持实时切片,以及cdf,分位数统计量的查询。
这图就把工作介绍了,除了切片,机场延误时间的分位数(4号那天50%延误时间在50min)。
related work
巧妙的提升了工作的价值,mean std这些统计量不行,分布,行!通过分布能查看出异常事件。
常用的两种策略:采样(思想都是相通的,可惜自己是想不出啥创新。这在RayTracing,反走样中特别基本的思想,虽然思想就这,但是具体怎么做就是另一回事了)+ 预计算。
需求还有一个困难在于需要更新动态的更新,多个数据集融合?
t-digest 数据结构
A new data structure for accurate online accumulation of rank-based statistics such as quantiles and trimmed means. The t-digest algorithm is also very friendly to parallel programs making it useful in map-reduce and parallel streaming applications implemented using, say, Apache Spark.
t-digest精度分配不是均匀的。能够高效的对基于rank的数据进行查询。
hashcube
把raw数据看成一维数组,递归的按照每个维度进行排序,划分子数组,递归。这样,在每个维度上有一个索引链表(相当于),查询时在每一维找到满足条件的枢纽,将这些东西合并起来,实际上将p-digest合并,得到一个result表。
我的理解是:索引的每个细分枢纽都指定一个pdigest,然后最后需要将这些满足条件的pdigest合并成一个,合并的同时既要保证效率,又要维护结果的顺序统计量误差不能太大。
作者改进:
digest用数组实现,同时针对数据特点,做了一些小优化。
索引方式:添加次要枢纽数组,使得在查找上更方便也更麻烦,通过一些复用减轻memory。