在Spark之上基于搜索引擎技术,实现索引和搜索功能。 架构
既有搜索引擎的查询速度,又有Spark强大的分析计算能力。 工具
可对多个字段进行关键字全匹配或模糊匹配检索,并可对检索结果集进行分组、排序、计算等统计分析操做。 oop
采用标签标记技术-让大数据化小 性能
优势 大数据
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,即便数据重复值不多,咱们也能够一个数字来表明原始值,由于原始值有可能比较大,但数值确能够很好的压缩。
基本的处理过程以下图所示:
按照时间逆序排序能够说是不少日志系统的硬指标。在延云YDB系统中,咱们改变了传统的暴力排序方式,经过索引技术,能够超快对数据进行单列排序,不须要全表暴力扫描,这个技术咱们称之为blockSort,目前支持tlong,tdouble,tint,tfloat四种数据类型。
因为blockSort是借助搜索的索引来实现的,因此,采用blockSort的排序,不须要暴力扫描,性能有大幅度的提高。
blockSort的排序,并不是是预计算的方式,能够全表进行排序,也能够基于任意的过滤筛选条件进行过滤排序。
1.将原先的一次查询化为两次或屡次查询。
2.第一次查询仅读取必备的列,如排序的列,须要group by与统计的列。
3.第一次查询不会获取数据的真实值,仅仅读取数据标签
4.全部的计算都完成后,由于数据进行过排序或汇总,剩余的记录数很少
这个时候在将标签从字典中转换为真实值,其余列的值也跟着读取过来。