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。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。