Bridging the Archipelago between Row-Stores and Column-Stores for Hybrid Workloads
Carnegie Mellon University(2016)
一个中间层,可以混合 OLTP/OLAP, 行好处:NSM(n-ary)读取单行多属性快,DSM(decomposition)列好处:更好的向量化,适用于读取 attributes 少的,不适合单条大量插入,要把一行拆分到不同列中。
物理上,根据 query 的统计,对不同列做组合,最新的 NSM, 随着时间可以重新生成组合。
有个逻辑层把操作映射到物理层。根据 index 或者 sequential scan 把匹配的 tuples 构造逻辑层,期间的操作都在逻辑层。直到最终的返回再去物理层取。查询或者插入流程都同 flink 那种并行。
事务:MVCC
拆分算法很简单:采集 where.select, 根据 where 分组,k-means 分组,打分排序,从高到底直到将所有的列都分组结束。
比 DMS 更快的插入速度,获取更多 attribuetes 是更好的查询速度
比 NSM 更快的查询速度(利用并发和预取等)
讲道理分类按照时长,一个大 OLAP 的前 n 行要随机读取(热数据缓存还可以缓解这个问题,插入好太多了),OLTP 的影响应该都是正向的,插入最新的不变,查询按维度聚合并且加了 OLTP 没有的并行(在不能并行且查询维度多时候肯定还是不如 NFS),总体还是正向的,本身 OLTP 对时间敏感,全读且修改一个老数据 / 查询一个老数据代价是原来的分组倍,有并行优化,也还 OK。