• 行式存储和列式存储


    传统的关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储形式存在。

    列式存储(Column-based)是相对于行式存储来说的,新兴的 Hbase、HP Vertica、EMC Greenplum 等分布式数据库均采用列式存储。在基于列式存储的数据库中, 数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。

     

    列式存储,各列独立存储,且数据类型已知,可以针对该列的数据类型、数据量大小等因素动态选择压缩算法,以提高物理存储利用率;如果某一行的某一列没有数据,那在列存储时,就可以不存储该列的值,这将比行式存储更节省空间。

    列式数据库可在内存中高效组装各列的值
    最终形成关系记录集
    因此可以显著减少IO消耗
    并降低查询响应时间
    非常适合数据仓库和分布式的应用

       

         存储方式:

             

       

         

      字典表压缩: 经过字典表进行数据压缩后,表中的字符串变成数字了

        

        查询流程:

           

        

          关键步骤如下:

        1.     去字典表里找到字符串对应数字(只进行一次字符串比较)。

        2.     用数字去列表里匹配,匹配上的位置设为1。

        3.     把不同列的匹配结果进行位运算得到符合所有条件的记录下标。

        4.     使用这个下标组装出最终的结果集

               

  • 相关阅读:
    设置一个字符串中的个别字符的特殊格式
    在代码中设置字体加粗的方法
    删除字符串中某字符
    xib下这种方式创建cell
    UILabel 字体下方加下划线
    iPhone4 8.3 系统下字体下方去除下划线
    elasticsearch 深入 —— normalizer
    elasticsearch 基础 —— Common Terms Query常用术语查询
    elasticsearch 基础 —— Jion父子关系
    elasticsearch 深入 —— Top Hits Aggregation
  • 原文地址:https://www.cnblogs.com/long-yuan/p/13552659.html
Copyright © 2020-2023  润新知