基于spark之上的即席分析-技术原理

一.YDB的本质? 

Spark之上基于搜索引擎技术,实现索引和搜索功能。 架构

既有搜索引擎的查询速度,又有Spark强大的分析计算能力。 工具

可对多个字段进行关键字全匹配或模糊匹配检索,并可对检索结果集进行分组、排序、计算等统计分析操做。 oop

二.多种技术组合-万亿数据秒级查询 

 

三.总体架构 

 

 

 

四.倒排索引与跳跃表 

1. 倒排索引与跳跃表基本原理 

 

 

2.与开源的倒排索引系统相比 

 

五.采用标签代替原始值-进行分组与排序 

采用标签标记技术-让大数据化小 性能

优势 大数据

1. 重复值仅存储一份,能够减小存储空间占用。 搜索引擎

2. 标签值采用定长存储,可随机读取。 spa

3. Group by分组计算的时候,使用标签代替原始值,数值型计算速度比字符串的计算速度快不少。 .net

4. 标签值的大小原始值的大小是对应的,故排序的时候也仅读取标签进行排序。 日志

5. 标签比原始值占的内存少。 排序

缺点 

1. 若是数据重复值很低,存储空间相反比原始数据大。 

2. 若是重复值很低,且查询逻辑须要大量的根据标签值获取原始值的操做的时候,性能比原始值慢。

下图为替换示例,示意图: 

 

 

在真实的数据中,数据确定是有重复的,好比说类目,性别,年龄,成交金额等信息,传统的分析工具存储的是原始的值,好比说咱们有1千亿条数据,那么就要存储一千亿条记录,那么进行统计的时候,一条一条的读出这些类目确定要慢的不得了。 

还记得机器人总动员中的WALL-E么?当数据规模达到必定程度之后,若是仍是直接对原始值进行读取,对大数据的搬运工做将会特别的消耗体力,并且工做效率很低。 

 

ydb对原始数据作了一些处理,基本思路是:虽然你有1千亿的数据,可是你的类目不会那么多,典型的系统通常是几万个类目,2~3个性别值,故ydb在存储的时候虽然有1千亿条记录,可是只会存储几万个类目,2个性别,这根原始的千亿条记录在数据规模上但是相差千万倍,那么在以后的统计(count,sum,avg等)势必会比传统的分析工具快上千倍万倍。 

ydb的这种方式咱们称为标签技术,就是将数据的真实值用一个数值标签来替换数据自己,原始数据每一个值咱们只存储一份,这样当有大量重复值的数据,能够节省不少IO,即便数据重复值不多,咱们也能够一个数字来表明原始值,由于原始值有可能比较大,但数值确能够很好的压缩。 

基本的处理过程以下图所示: 

 

六.采用blockSort快速排序 

按照时间逆序排序能够说是不少日志系统的硬指标。在延云YDB系统中,咱们改变了传统的暴力排序方式,经过索引技术,能够超快对数据进行单列排序,不须要全表暴力扫描,这个技术咱们称之为blockSort,目前支持tlong,tdouble,tint,tfloat四种数据类型。 

因为blockSort是借助搜索的索引来实现的,因此,采用blockSort的排序,不须要暴力扫描,性能有大幅度的提高。 

blockSort的排序,并不是是预计算的方式,能够全表进行排序,也能够基于任意的过滤筛选条件进行过滤排序。 

七.两段式查询 

1.将原先的一次查询化为两次或屡次查询。 

2.第一次查询仅读取必备的列,如排序的列,须要group by与统计的列。 

3.第一次查询不会获取数据的真实值,仅仅读取数据标签 

4.全部的计算都完成后,由于数据进行过排序或汇总,剩余的记录数很少 

这个时候在将标签从字典中转换为真实值,其余列的值也跟着读取过来。

相关文章
相关标签/搜索