背景
在大数据时代的背景下,数据是显得如此丰富和可爱。而理所当然的,大数据的存储和计算就是其相关业务的两大亮点了。总结业界一些处理大数据的方式,做了如下比较。
此次,我主要介绍Google Dremel。值得一提的是,Drill是Dremel的开源版本,Google自己的OpenDremel也整合到了Drill中,不过Drill还在Apache孵化器里,得到阶段性的成果还需要一段时间。
Dremel是一种交互式的大数据处理模型,是Google在后Hadoop时代驱动大数据的新的三驾马车之一。Dremel得益于其列式存储结构和其并行查询的方式,能在秒级时间内内处理PB级的数据量。参考: http://www.youkuaiyun.com/article/2012-08-21/2808870-Google-Hadoop-versus-Dremel
论文: http://research.google.com/pubs/pub36632.html
数据模型
Dremel使用的数据模型是一种基于列的嵌套式数据模型。目前,业界大数据的结构化存储描述基本上都是嵌套式的,比如json、xml和protocol buffer等。而列式存储,也有比较多的相关理论支持。如下图所示,基于记录的存储方式,一条记录的各个列会连续地写在一起;而在列式存储方式中,记录结构会被转换成树状结构,不同记录的相同列的数据会写在一起(树结构对应于数据嵌套格式)。很显然,拆分过的列式存储方式更便于查询,尤其在查找字段较少的时候。
Figure: Record-wise VS. columnar representation of nested data