ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

数据库行存储和列存储相关知识点

2021-07-29 13:03:39  阅读:357  来源: 互联网

标签:知识点 存储 列式 行式 数据库 查询 数据


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

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

2、OLTP和OLAP
  在数据库中,数据处理可分为两类:联机事务处理OLTP(on-line transaction processing)和联机分析处理OLAP(On-Line Analytical Processing),OLTP是传统关系型数据库的主要应用,用来执行一些基本的、日常的事务处理,比如数据库增、删、改、查等等,而OLAP则是分布式数据库的主要应用,它对实时性要求不高,但处理的数据量大,通常应用于复杂的动态报表系统上。

OLTP和OLAP的主要区别:OLTP&OLAP
3、行存储和列存储的应用场景
  行存储的适用场景:

(1)适合随机的增、删、改、查操作;

(2)需要在行中选取所有属性的查询操作;

(3)需要频繁插入或更新的操作,其操作与索引和行的大小更为相关。

列存储的适用场景:

(1)查询过程中,可针对各列的运算并发执行,在内存中聚合完整记录集,降低查询响应时间;

(2)在数据中高效查找数据,无需维护索引(任何列都能作为索引),查询过程中能够尽量减少无关IO,避免全表扫描;

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

小结:
  在实际应用中我们会发现,行式数据库在读取数据时存在一个固有的缺陷,比如,所选择查询的目标即是只涉及少数几个字段,但由于这些目标数据埋藏在各行数据单元中,而行单元往往又特别大,应用程序必须读取每一条完整的行记录,从而使得读取效率大大较低,对此,行式数据库给出的优化方案是加索引,在OLTP类型的应用中,通过索引机制或给表分区等手段可以简化查询操作步骤,并提升查询效率。

但针对海量数据背景的OLAP应用(例如分布式数据库、数据仓库等),行存储的数据库就有些力不从心了,行式数据库建立索引和物化视图需要花费大量时间和资源,因此还是不划算的,无法从根本上解决查询性能和维护成本的问题,也不适用于数据仓库等应用场景,所以后来出现了基于列式存储的数据库。
  在这里插入图片描述

对于数据仓库和分布式数据库来说,大部分情况下它会从各个数据源汇总数据,然后进行分析和反馈,其大多数操作是围绕同一个字段(属性)进行的,而当查询某属性的数据记录时,列式数据库只需返回与列属性相关的值。在大数据量查询场景中,列式数据库可在内存中高效组装各列的值,最终形成关系记录集,因此可以显著减少IO消耗并降低查询响应时间,非常适合数据仓库和分布式的应用在这里插入图片描述

标签:知识点,存储,列式,行式,数据库,查询,数据
来源: https://blog.csdn.net/qq_44735381/article/details/119208686

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有