C-Store: A Column-oriented DBMS(5)

来源:互联网 发布:网页游戏发布站源码 编辑:程序博客网 时间:2024/06/05 07:25
7 元组移动者(Tuple Mover)
Tuple Mover需要做如下工作:将WS段上的元组块移至对应的RS段上,并更新链接索引。操作类似于一个在后台的寻找合适段对(segment pair)的操作。当寻找到一个时,在(WS,RS)段对上执行一个merge-out操作(MOP)。
MOP会找到所有在LWM(这个阶段不是全部进行只读事务,因此用来更新RS)当前或者之前时间内被选中的WS段的记录,将他们分为两部分:
一类是在LWM或之前被删除的,他们将被丢弃,因为用户已经没法用他们来执行查询了。
另一类没有被删除,或是在LWM之后才被删除的,这些会被移至RS内。
MOP先建立一个新RS段,命名为RS'。然后,MOP读RS段中的所有块,删除DRV中等同或更少于DRV的,再将其与WS中的列值合并。合并后的数据被写入RS'中。
【之前的具体过程没怎么看明白,略过一些细节,以后若精读会再修改】


8.C-store的查询处理
查询优化器将接收SQL查询,构建执行节点的查询计划。在这一节中,我们将描述出现在查询计划中的执行节点和查询优化器本身的结构。
8.1 查询优化器与查询计划的格式
存在10节点,每种接收一个类型的列族(Proj),列(Col),位串(Bits)结果的operands or produces。列族为多个具有相同基数和顺序的列,位串为0,1的串,指向的是value是否在对应的record subset中。此外,C-STORE查询操作符接受谓词(PRED),连接索引(JI),属性名(ATT)和表达式(EXP)作为参数。
连接索引和位串仅仅是特殊类型的列。因此,他们仅能包含在列族中,用作查询操作的输入。
我们下面简要总结每个操作:
一.Decompress:将压缩的列解压。
二.Select:相当于关系代数中的选择操作(SQL中的where)。但不是产生输入的限制,而是产生结果的一个位串的表示。
三.Mask:接收一个位串B和列族Cs。找到位串中为1的对应的列族。
四.Project:相当于对列族进行关系代数中的投影操作(SQL中的select)。
五.Sort:对列族中的列进行排序。
六.Aggregation Operators:在一个列上进行类似于SQL的aggregate运算,指定列族中的值在哪些组中。
七.Concat:combine一个或多个列族,按其中的一个列族排序。
八.Permute:根据链接索引改变一个列族。
九.Join:join:两个相关联的列族。
十.Bitstring Operators:BAnd是一个按位的AND运算,BOr,BNot同理。
同样的,C-store的查询计划又上述操作组成的一个树构成。
【对查询优化不是特别理解,不乱翻译最后一小节了。文章剩余部分为实验,无力翻译了。】
0 0
原创粉丝点击