首先申明,里面对技术背景和后续技术发展方向的内容,来自于个人技术上的思考和判断,并非引经据典,仅供参考。
3 Dremel
3.1背景
大规模交互性数据分析处理在整个行业中应用越来越广泛,对于交互型分析对于数据处理的响应时间要求比较高,而原有Bigtable数据库设计上并没有考虑对于交互式场景要求,对于大大规模交互数据分析处理响应性不够,因此Dremel就应运而生,Dremel解决大规模交互数据分析的实时性问题,可以做到秒级的数据响应,GOOGLE在测试中宣称,可以在3秒钟的时间处理1PB数据。
在大规模交互数据分析中,会有这样一种场景,需要参加数据分析的原始数据量非常大,但是最终结果集数据量会很小,往往是一个分析结果或者是汇总型的数据,这种场景就是大型交互时数据分析的典型场景。从GOOGLE分布式数据库产品的战略定位看,Dremel和Bigtable的定位有所不同,Dremel更适合对于交互式场景,而Bigtable通常会跟MapReduce配置,做为大数据处理搭配处理,当然Dremel同样可以与MAPReduce结合使用。因此Dremel并不是取代Bigtable的一种分布式数据库,而是一种补充,从技术演进角度看,由于Dremel数据库公开时间晚于Bigtable,因此做为Google第二代分布式数据库代表之一。
3.2 Dremel的数据模型
3.2.1 Dremel嵌套列数据模型
Dremel采用是嵌套列数据模型,该数据模型把嵌套数据拆分为列结构加以存储,在查询时把数据重建为嵌套数据,原有列存储数据库通常属于关系型数据库,在嵌套类型的数据处理还未采用这种结构,GOOGLE创造性的把嵌套数据处理为列数据库,并且技术指标还能大幅提升,满足大型数据的交互式查询要求,不得不说这个GOOGLE的一个新创造,但为什么是这样的列嵌套结构,而不是其他数据结构,这点GOOGLE并没有进行介绍说明,因此这一点理解上面有一定困难,不过在后续介绍中,会发现这种结构在数据查询处理时的优势和特点