列存储

行式存储与列式存储

微笑、不失礼 提交于 2019-11-27 07:23:41
一、概述 传统的关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储形式存在。 列式存储(Column-based)是相对于行式存储来说的,新兴的 Hbase、HP Vertica、EMC Greenplum 等分布式数据库均采用列式存储。在基于列式存储的数据库中, 数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。 二、 行式存储 行式存储的适用场景包括: 1、适合随机的增删改查操作; 2、需要在行中选取所有属性的查询操作; 3、需要频繁插入或更新的操作,其操作与索引和行的大小更为相关。 实操中我们会发现,行式数据库在读取数据的时候会存在一个固有的“缺陷”,比如,所选择查询的目标即使只涉及少数几项属性,但由于这些目标数据埋藏在各行数据单元中,而行单元往往又特别大,应用程序必须读取每一条完整的行记录,从而使得读取效率大大降低。对此,行式数据库给出的优化方案是加“索引”。在OLTP类型的应用中,通过索引机制或给表分区等手段,可以简化查询操作步骤,并提升查询效率。 但针对海量数据背景的OLAP应用(例如分布式数据库、数据仓库等等),行式存储的数据库就有些“力不从心”了

HBase的学习之路(一)

半腔热情 提交于 2019-11-26 00:00:47
阅读声明:以下内容是结合网上材料及工作所写的个人理解,如有不当,欢迎大家指正~~~谢谢啦 一、HBase的介绍 HBase的定义与作用   HBase是一个 分布式 的、 面向列 的 非关系型 (也就是基于key-value存储)的 数据库 。   HBase的作用:为HDFS提供 低延迟 的数据查询能力。    注意 :HBase不是计算型的框架,就是用于存储数据,提供低延迟的数据存储,所以MR(Hive)的计算功能是HBase替代不了的。 低延迟   客户端读取的延迟时间要控制在秒级甚至是毫秒级给出响应;通过MapReduce或Hive也可以从HDFS中读取数据,但是MR或Hive的查询延迟一般在分钟级别。   分析MR或者Hive其原理得知中间过程如下:   ①手写复杂Hql--->②解析成MRJob--->③MRJob的任务分配---->④执行查询---->⑤返回结果   时间大多数都消耗在①②③过程中( 底层涉及大量磁盘IO ) HBase的低延迟   HBase之所以能做到低延迟的数据查询,是因为底层(后续会分析底层设计)充分利用了缓存机制,以及复杂的数据结构和精妙的算法来实现的。 二、HBase的特点 ①分布式架构     HBase是通过集群来存储数据,最终的数据还是会存储到HDFS中。 ②面向列存储      由上图我们可以分析:     1)如果是基于行存储