本文是对《POLYTOPE:A Flexible Sampling System for Answering Exploratory Queries》一文的浅显翻译与理解,如有侵权即刻删除。
Title
《POLYTOPE:A Flexible Sampling System for Answering Exploratory Queries》
——World Wide Web2020
Author: Zhigang Wu
总结
文章认为数据分析领域对数据库的查询采样方法都是试图通过单个采样策略来覆盖整个数据集,事实上并不能够应对所有用户查询的模式。因此,文章提出了POLYTOPE算法,通过对数据集进行细分并用以不同的采样策略,使得用户查询得到的结果更加准确。
具体而言,该算法分为三个步骤:(1)将数据集按照用户不同的查询模式细分为多个子数据集;(2)独立地为每个子集生成其最优样本集;(3)自动选择最优样本。其结构如下:
1 数据集细分
文章认为,最频繁访问的子数据集的分组模式意外地隐藏了其他独立的模式,这些模式应该在其相应的子数据集中占主导地位。(对应传统系统对整个数据库进行偏向单个问题的采样策略。)
因此,文章为数据集构造了采样树,按照不同的查询需求,将数据有规律地划分为多个采样块,在后续进行检索的过程中,能够根据树的索引快速找到对应位置,其示例如下:
其中,非叶节点包含一个属性和几个分割数据集的切点,叶节点记录参考这个特定子数据集的相关查询工作量。而后,在划分数据集切分点时,文章首先通过获取 where 子句的边界以及从基础数据集中选择符合查询条件的随机样本点,将每个查询转化为点。按照出现频率最高的查询内容,依次对树进行切分,如上图所示。
2 线下生成最优样本集
文章为每个采样块生成若干个样本集,从而应对不同的采样策略。例如,对整个数据集而言,其采样比例为s,那么就会将s按照k个采样策略划分,每个策略对应采样比例为r。还将采样尺寸视为一类优化问题进行求解。
3 线上查询选择最优样本
首先根据查询索引找到对应的采样块,而后通过函数计算散度来动态地选择最优样本,最终将查询匹配写过写回到采样树中。