Google Dremel 理解

在阅读参考2中的翻译的时候,对论文中说的如何把嵌套结构转化成在Dremel实际的存储的格式有些许疑惑,在看了参考1后才恍然大悟,于是要在这里把文献中的几个图是怎么生成的具体过程做一个详细操作

在这里,首先明确定义:
r:Repetition Level 是记录该列的值是在哪一个级别上重复的,对于非重复的列,可以忽略

d: Definition Level 是定义的深度,用来记录该列是否是”想象”出来的。所以对于非NULL的记录,是没有意义的,其值必然为相同。对于那种required的列,在计算深度的时候可以在路径上忽略此列


在Document的Schema中,有6个存储数据的字段, 跟别是 docid, url,forward, backword, code, country

 

Docid, 因为是根,所以 r 和 d 都是0

Name.url(它的路径是 name.url 其中name是repeated的,url是optional的,在路径上只考虑name)

  在r1中

    对于http://A,它首次出现,在它之前路径Name.url没有出现,所以r值是0,而http://A 不是 NULL, 是真实存在的,所以d值是2

    对于http://B,在其路径上Name重复出现了,而且url非repeated,所以这里要计算Name的级别,相对于根,Name的等级是1,r值是1, 非NULL, d值还是2

    对于第三个Name,url是NULL,此时在之前已经出现,r值是1, 是NULL,考虑url非required,是我们想象出来的数据,所以d值是1

  同理,在r2中

    对于http://C,路径 Name.url没出现过,r值是0,同上,d值是2

Links.Forward(它的路径是 Links.Forward, 只有forward是repeated的,所以这里 r值要么是0, 要么是1)

  在r1中

    对于20, 路径Links.Forward没出现过,r值是0,links是optinal,非required,所以d是2

    对于40,路径Links.Forward出现了,只有forward是repeated的,所以r=1, d=2

    。。。。

    。。。。未完

参考:

1.Google Dremel 原理 - 如何能3秒分析1PB http://www.open-open.com/lib/view/open1351132589539.html

2. 经典论文翻译导读之《Dremel: Interactive Analysis of WebScale Datasets》 http://www.importnew.com/?s=dremel

 

转载于:https://www.cnblogs.com/burkun/p/3834524.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值