大数据

001 列式存储的概念

2019-02-19  本文已影响17人  __destory__

为什么需要列式存储

相对于传统型数据库行式存储而言,区别如下

例如图片如下,


列式存储和行式存储的区别.png

从图中可看到,行式的,一行数据在一起,后面跟着其他行;而列式,第一列放在一起,后面跟着第二列等等。

优缺点比较

  1. 优点,行式数据放在一起,容易insert和update,列式查询时候涉及到的列会读取,投影效率高,任何列都可以进行索引。
  2. 缺点,行式如果选择部分列,但是其他列的数据一样被查出来,列式,查询一条数据,被选择出的列,需要重新组合成一条数据,insert和update比较麻烦

数据压缩

列式存储,因为列在一起,他们的类型固定,可以方便进行压缩,考虑如下的压缩方式,


列式存储的压缩方式.png

可以看到,建立Customers和material的字典表(橘黄色部分),字典表通过index标记对应的值,前提条件,值不重复。那么原来的表,就可以按照列,进行重新编码,只保留字典表的index部分,实现压缩的效果。

查询性能

通过一张图来描述,


列式存储查询过程.png

步骤如下,查询Customer 为miller,material 为 refrigerator

  1. 通过字典表,可以查找miller的index4,material的index是3,一次字符串比较
  2. 使用数字到数据中比较,一样的标记1,不一样的标记0,得到两组bit数据。
  3. 两个bit组进行位运算and
  4. 如果最终and的结果不为0,则可以算出来是第几行,如图是第6行。
上一篇 下一篇

猜你喜欢

热点阅读