行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]

行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]1.为什么要按列存储列式存储(Columnarorcolumn-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表:ØRow-basedstoragestoresatableinasequenceofrows.ØColumn-basedstoragestoresatablein…

大家好,又见面了,我是你们的朋友全栈君。

1.为什么要按列存储

列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表

Ø  Row-based storage stores atable in a sequence of rows.

Ø  Column-based storage storesa table in a sequence of columns.

行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]

 行式存储下一张表的数据都是放在一起的,但列式存储下都被分开保存了

 

                             

行式存储

列式存储

优点

Ø  数据被保存在一起

Ø  INSERT/UPDATE容易

Ø  查询时只有涉及到的列会被读取

Ø  投影(projection)很高效

Ø  任何列都能作为索引

缺点

Ø  选择(Selection)时即使只涉及某几列,所有数据也都会被读取

Ø  选择完成时,被选择的列要重新组装

Ø  INSERT/UPDATE比较麻烦

ps:列式数据库方便projection
SQL Projection is the collective name for the columns that are Selected and returned from a query. In other words, the columns goes behind select in a query. In Oracle, a whole row is first fetched, then data values from the columns within that row are extracted into the known projection.

select某个字段就是projection。

注:关系型数据库理论回顾 – 选择(Selection)和投影(Projection)

行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]

 

 

 数据压缩:通过字典表压缩数据

下面才是那张表本来的样子。经过字典表进行数据压缩后,表中的字符串才都变成数字了。正因为每个字符串字典表里只出现一次了,所以达到了压缩的目的(有点像规范化和非规范化Normalize和Denomalize)

 行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]

 

 

 查询执行性能

通过一条查询的执行过程说明列式存储(以及数据压缩)的优点:

行存储(关系型数据库)与列存储(hbase,es聚合的doc_value)[通俗易懂]

关键步骤如下:

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159119.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月14日 上午11:36
下一篇 2022年7月14日 上午11:46


相关推荐

  • SMO算法笔记及个人理解

    SMO算法笔记及个人理解SMO算法介绍SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此优化问题的KKT条件,那么这个最优化问题的解就得到了。(KKT条件是该最优化问题的充分必要条件)。否则,选择两个变量,固定其他变量针对这两个变量构建一个二次规划问题。特点:将原始的二次规划问题分解为只含有两个变量的二次规划子问题,对子问题不断求解,使得所有的变量满足KKT条件包含两部分:1、求解两个变量二次规划的解析方法2、选择变量的启发式方法(1)第1个变量的选择:确定在当前的分类器中,违反K.

    2022年6月22日
    38
  • layui弹出层提交表单![通俗易懂]

    layui弹出层提交表单![通俗易懂]本文章使用layui框架,提交表单,如果使用其他的框架请右上角!首先设置弹出层如下图:layer.open({ type:2, title:"信息編輯", area:[‘45%’,’35%’], shade:0, sha…

    2022年5月6日
    591
  • 安装程序在计算机中识别出下列大容量存储设备「建议收藏」

    安装程序在计算机中识别出下列大容量存储设备「建议收藏」今天使用USB安装2003在一台lenovo笔记本发现提示安装程序在计算机中识别出下列大容量存储设备解决方案:BIOS硬盘更改为兼容oride即可 转载于:https://blog.51cto.com/vn98z/905299…

    2026年4月14日
    8
  • Automation服务器不能创建对象(金税盘)

    Automation服务器不能创建对象(金税盘)  1.安装防伪开票组件接口软件;  2.把接口的注册文件放到%防伪开票系统的安装目录%\BIN下  3.把%防伪开票系统的安装目录%\bin下的TaxCardX.dll文件复制至c:\windows\system32下  4.注册dll:在开始菜单中选择”运行”,输入”regsvr32TaxCardX.dll”5.  备注:此处电脑可能会提示不兼容,如:  …

    2022年6月1日
    38
  • 提示工程架构师视角:AI与提示工程未来的prompt架构师工作流程

    提示工程架构师视角:AI与提示工程未来的prompt架构师工作流程

    2026年3月15日
    3
  • React高阶组件Hook

    React高阶组件HookHook 是 react16 8 新增的 它可以让你在不编写 class 的情况下使用 state 以及其他 react 特性 Hook 特点 使你在无需修改组件的情况下复用状态逻辑 可将组件中互相关联的部分拆分成更小的函数 复杂组件将更容易理解 更简洁 更容易理解的代码先来看个例子 importReact useState from react exportfuncti

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号