面对大规模数据和不同的应用场景,传统数据库组件存在业务类型不敏感、查询优化能力弱等问题。因此,目前一类研究通过将传统数据库组件用机器学习算法替代,来实现更高的查询和存储效率。
主导的学习组件,是query-based,workload-driven,以一堆有代表性的queryset去实际运行,产生训练集。这种方式的问题,在于训练成本很高,并且当workload变化时需要不断迭代。本文是采用另一种思路,data-driven,就是直接对于数据建模,并且模型可以同态的变化,接受insert,update,delete。
data-driven好处,和workload无关,你workload,查询变了,不会有影响,适用面也比较广,但是问题在于数据如果很大这个成本也是非常的高。
不同于Workload-driven的机器学习模型需要大量查询语句进行训练,Benjamin提出利用机器学习拟合关系型数据的数据分布情况,并可以基于这个模型进行基数估计、连接顺序选择等。和Naru动机相似,他们设计了一个Sum-Product Network(SPN)学习所有列(X1,X2,…,Xn)的联合概率分布。但不同于AR模型,SPN采用了一个树形结构:每个中间节点对应sum操作,将整个数据表分成两个数据组;每个叶子节点代表数据组中某一列的数据分布,用直方图表示,假设节点之间独立分布,同组的叶子节点间用product操作表示。对于范围查询,SPN直接改变对应叶子节点的范围,自底向上计算出根节点的选择度;对于join查询,他们先过滤掉不能被join的数据行,然后用product操作计算join列的选择度,可能存