美文网首页大数据
001 列式存储的概念

001 列式存储的概念

作者: __destory__ | 来源:发表于2019-02-19 15:48 被阅读17次

    为什么需要列式存储

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

    • 行式存储,存储一个表,通过行的序列构成
    • 列式存储,存储一个表,通过列的序列构成

    例如图片如下,


    列式存储和行式存储的区别.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行。

    相关文章

      网友评论

        本文标题:001 列式存储的概念

        本文链接:https://www.haomeiwen.com/subject/uqhfyqtx.html