Hive:行式存储和列式存储的比较

1,760 阅读1分钟

行式存储:

优点:数据被保存在一起了,insert和update更加容易

缺点:选择(selection)时即时只涉及某几列,所有数据也都会被读取

列式存储:

优点:查询时只有涉及到的列会被读取;投影(projection)很高效;任何列都能作为索引

缺点:选择完成时,被选择的列要重新组装,insert/update会比较麻烦

----------------

列式存储和行式存储

首先我们看一下一张表的存储格式

1.1 行式存储

1.2 列式存储

1.3列式存储和行式存储的比较

行式存储

优点:

相关的数据是保存在一起,比较符合面向对象的思维,因为一行数据就是一条记录

这种存储格式比较方便进行INSERT/UPDATE操作

缺点:

如果查询只涉及某几个列,它会把整行数据都读取出来,不能跳过不必要的列读取。当然数据比较少,一般没啥问题,如果数据量比较大就比较影响性能

由于每一行中,列的数据类型不一致,导致不容易获得一个极高的压缩比,也就是空间利用率不高

不是所有的列都适合作为索引

列式存储

优点:

查询时,只有涉及到的列才会被查询,不会把所有列都查询出来,即可以跳过不必要的列查询

高效的压缩率,不仅节省储存空间也节省计算内存和CPU

任何列都可以作为索引

缺点:

INSERT/UPDATE很麻烦或者不方便

不适合扫描小量的数据

end