前言:
在大数据领域有一个非常著名的产品-hbase,其有别于传统的rdbms,被称之为列式数据库。那么什么是列式数据库呢?既然有列,那是不是也有行式数据库呢?
行式数据库:可以简单的理解为是传统的rdbms这些数据库,存放的是结构化的数据,非常有利于全表数据的扫描,但是相对来说,对于个别字段的扫描,就不那么方便了。
列式数据库:列式数据库是对行式数据库的一个改进,将部分列(或者说有关联的一些列)存放到单独的一个文件中,其他列存在其他多个文件中,我们在进行 查询的时候,只需要读取这些常用的列即可完成工作,这样减少了文件IO的读写,提高读写的效率(不用再像行式数据库那样进行全表的扫描,然后过滤相关字段)。
一、hbase简介
1.是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,
2.HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,(利用zookeeper作为协调工具)。
3.特点
(1)hbase自身的特点
①高可靠性
②高性能
③面向列
④可伸缩
(2)hbase中表的特点
①可以纵向扩展
②可以横向扩展
二、hbase体系结构
1.逻辑结构(重点)
①表(table)
划分数据集合的概念,和传统的db中的表的概念是一样的。
②行键(rowkey)
一行数据的唯一标识,若想要操作hbase表中的一条数据,必须通过行键来定位,行键在hbase底层是使用字节数组进行存放的,所以方便我们使用rowkey来进行排序。
一行数据的唯一标示,要想操作(read/write)一条数据,必须通过行健,其在hbase底层都是使用字节数组进行存放,所以方便我们使用rk进行排序,
③列族(columnFamily)
简单的认为是一系列“列”的集合,列族是以单独的文件来进行存储的。
④列限定符(column Qualifier)
通常称之为列。列里边的数据定位通过列限定符,每个列族可以有一个或多个列成员(ColumnQualifier)。列成员不需要再定义表时规定,后期新加就可以了,可以动态注入。每个新加的列都会附带一个时间戳。在单元格中可以存放多个版本的数据。
⑤单元格(cell)
cell由行键,列族:限定度,时间戳唯一决定的,cell中的数据时没有类