Dremel学习总结2
文章目录
- 一、Dremel数据重组
- 1.什么是数据重组
- 2.Dremel的数据重组
- 实现原理
- 1.通过DocId 和 Name.Language.Country 这两个字段的重建
- 2.R1数据重组过程
一、Dremel数据重组
1.什么是数据重组
数据库使用较长一段时间后,因为一些增,删,改等操作,使得数据的分布索引及相关数据会变得比较凌乱,从而影响数据库的效率。 数据库重组即是将数据库的相关信息重新组织。
2.Dremel的数据重组
将查询设计的列取出,按照原始记录的顺序组装起来,以实现高效地从列式存储数据中组装出记录,对数据处理工具来说非常重要。
核心思想:使用有限状态机(finite state machine, FSM) 读取每个字段的值和level,顺序地追加到输出流中。FSM为每种字段都关联一个field reader。
状态转变:FSM 为每种字段都关联一个field reader。通过重复深度(repetition level)来标记。一旦reader抓取到值,就去看下一值的重复深度来决定状态如何变化、跳转到哪个reader。
实现原理
1.通过DocId 和 Name.Language.Country 这两个字段的重建
步骤如下:
1.FSM委托Reader1读取DocId第一行,通过r=0重建记录。
2. 检查DocId第二行,发现r=0,则Reader1停在当前“游标”位置。 FSM将状态变化到Name.Language.Country。
3. FSM委托Reader2读取Name.Language.Country第一行,通过r=0 重建记录。
4. FSM委托Reader2读取Name.Language.Country第二行。通过 r=2(说明Language字段重复,即Language有多个)重建记录。
5. FSM委托Reader2读取Name.Language.Country第三行。通过r=1 和d=1(说明只有Name字段不是NULL)重建记录。
6. 第四行r=1.d=3重建记录。
7. 检查到第五行,发现r=0,Reader2停在当前位置。FSM再次发生状 态变化,继续重建文档2的记录。
8. FSM委托Reader1继续读取DocId第二行(之前Reader1就停在这里 了)。
9. DocId中没有数据了,FSM状态变化,Reader2继续读取Country的 最后一行数据,重建出记录。
2.R1数据重组过程
特点:
1.r=0,则说明下一行与当前行所表示的字段一定不在同一路径,否则必然会在某一Level上有共同的字段(路径的部分重叠)。
2.因为Name.Language.Code是required 不是repeated,读取后不管下一行的r值是多少都要去读Name.Language.Country。同理Name.Language.Country也是读完不管怎样都跳到下一字段。
3.中间部分的NULL能保持结构无损,而后面部分的NULL能提示文档是否结束。
Dremel学习总结2相关推荐
- Dremel学习总结1
文章目录 前言 一.Dremel是什么? 二.数据模型 三.嵌套式的列存储 1.特点与区别 2.记录的无损表示 3.列式储存 前言 虽然 MapReduce 在处理数据时的确有其便捷性.但是当利用 M ...
- 学习笔记(3):海量数据的交互式分析工具-Dremel
产生背景 Google公开了MapReduce计算框架之后,由于其强大的数据分析和处理能力,很快被视为数据分析的一个实际标准,各种围绕MapReduce框架的开发层出不穷.但互联网的发展,数据种类和应 ...
- Dremel的学习与理解
Dremel刚出来的时候还是非常小心翼翼的避免和MapReduce冲突的.从无数的宣传资料和ppt上可以看到,他们出来演讲的时候都会说自己是MapReduce的一个补充,是为少量到中等规模的数据查询服 ...
- 调度框架学习笔记(3)—— 集群调度框架的架构演进过程
本章是 The evolution of cluster scheduler architectures 文章的学习笔记.这篇文章讨论了这些年调度架构是如何发展的以及为什么会这样发展. 首先介绍一下这 ...
- 史上最全的“大数据”学习资源
2019独角兽企业重金招聘Python工程师标准>>> 资源列表: 关系数据库管理系统(RDBMS) 框架 分布式编程 分布式文件系统 文件数据模型 Key -Map 数据模型 键- ...
- 干货丨不可错过的大数据学习资源推荐
今天为大家推荐一些翻译整理的大数据相关的非常棒的学习资源,希望能给大家一些帮助. 关系数据库管理系统(RDBMS) MySQL:世界最流行的开源数据库: PostgreSQL:世界最先进的开源数据库: ...
- 辛湜推荐的数据库领域的一些学习材料
之前林仕鼎曾整理过系统架构领域的学习资料,这几天Spark核心团队成员辛湜(Reynold Xin)公开了他整理的一份数据库学习资料列表,很有价值,Hacker News上引起了不少讨论.简要编译如下 ...
- Google Dremel 原理 - 如何能3秒分析1PB
摘自:http://www.yankay.com/google-dremel-rationale/ 简介 Dremel 是Google 的"交互式"数据分析系统.可以组建成规模上千 ...
- 最全的“大数据”学习资源
关系数据库管理系统(RDBMS) 框架 分布式编程 分布式文件系统 文件数据模型 Key -Map 数据模型 键-值数据模型 图形数据模型 NewSQL数据库 列式数据库 时间序列数据库 类SQL处理 ...
最新文章
- 重磅!2020年度国家杰青、优青填报界面取消“论文收录与被引统计表”
- 什么是XLNet,它为什么比BERT效果好?
- 构建布局良好的windows程序
- DHCP服务器的搭建
- 【毕业求职季】-听说你想去大厂看学姐,带你看看网易java面经
- K8s 从懵圈到熟练 – 镜像拉取这件小事
- 【原】postman常用设置全局变量的js片段
- navigator.geolocation的应用 - 将定位信息显示在百度地图上
- HTML是万维网核心语言的第几代,Html5相关的知识点总结
- MS SQL 数据库状态为SUSPECT的处理方法
- 遍历Java中的列表的方法
- 怎样调整服务器C盘空间
- 【图像增强】基于matlab对数图像处理模型+去雾+暗原色先验图像增强【含Matlab源码 1012期】
- arm平台linux移植ethtool工具
- skype安卓手机版_安卓手机版电视直播播放器
- SPSS实现两变量相关分析
- windows10彻底关闭自动更新
- python实现热力图_基于 Folium 的 Python 热力图实现
- python去除空行_Python中去除文件空行(strip)
- 基于UCOSII的RS485通信(STM32F107)
热门文章
- 隐藏win10任务栏输入法M图标
- 解读PureMVC框架
- Centos7安装HighGo DB V6企业版
- Golang 调用MySQL存储过程
- 基于winform的打印标签模板设计器以及打印辅助类
- PPT文字很多的排版,PPT图片很多的排版,PPT图文排版
- Ubuntu16.04无法连接Wifi解决方案 (绝对有效)
- 2022-04-05 学习记录--React-React UI组件库-ant-design(蚂蚁金服)—— 按需引入样式 + 自定义主题
- 开发后台界面用 div好,还是frame 框架 好?
- python text函数_python可视化text()函数使用详解