天天看点

Hbase原理、Hbase列式存储特点、Hbase表结构 021. 数据库分类2. Hbase基本概念3. 行式存储和列式存储对比(通俗易懂讲解)4. Hbase表结构

1. 数据库分类

  • 关系型数据库 Mysql、Oracle
  • 非关系型数据库 Redis、Mangdb、Hbase
  • 面向主题的是数据仓库,面向事务的是数据库

2. Hbase基本概念

Hbase官方地址

  • Hbase是bigtable的开源java版本,是建立在hdfs之上。
  • 提供高可靠性、高性能性、列存储、可伸缩、实时读写nosql的数据库系统
    • 介于关系型数据库和非关系型数据库之间,仅能通过主键(row key)和主键的range来检索数据,仅支持单行事务(可通过hive来实现多表join等复杂操作)。
    • 主要用来存储结构化和半结构化的松散数据。
      • Hbase查询数据功能很简单,不支持join等复杂操作,不支持复杂的事务(行级的事务)
      • Hbase中支持的数据类型:byte[]
      • 与hadoop一样,hbase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,用来增加计算和存储能力。
  • Hbase中的表特点:
    • 大:一个表可以有上十亿行,上百万列。
    • 面向列:面向列(族)的存储和权限控制,列(族)独立检索。
    • 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
  • 和行式数据库的区别
    • 行式数据库在分析的时候,将id,name,age,sex,score;完整的信息读入内存,造成大量的内存和IO浪费。
    • 列式数据库的思维是把行式数据库全部拆开,按照列的方式重新组合存储,一列所有的行的数据存放在一起。带来的好处就是,要分析男女就直接访问所有的男女信息,要分析销售额,就直接访问消费额相关的数据。
      Hbase原理、Hbase列式存储特点、Hbase表结构 021. 数据库分类2. Hbase基本概念3. 行式存储和列式存储对比(通俗易懂讲解)4. Hbase表结构

3. 行式存储和列式存储对比(通俗易懂讲解)

3.1 行列对比

  • 行式存储倾向于结构固定,列式存储倾向于结构弱化。 (行式存储相当于套餐,即使一个人来了也给你上八菜一汤,造成浪费;列式存储相等于自助餐,按需自取,人少了也不浪费)
  • 行式存储一行数据只需一份主键,列式存储一行数据需要多份主键。
  • 行式存储存的都是业务数据,列式存储除了业务数据外,还要存储列名。
  • 行式存储更像一个Java Bean,所有字段都提前定义好,且不能改变;列式存储更像一个Map,不提前定义,随意往里添加key/value。

3.2 Hbase中专业术语

  • 单元格:

    一个行键、列族、列修饰符、数据和时间戳组合起来叫做一个单元格(Cell)。 以下为一个单元格

    Hbase原理、Hbase列式存储特点、Hbase表结构 021. 数据库分类2. Hbase基本概念3. 行式存储和列式存储对比(通俗易懂讲解)4. Hbase表结构
  • 行数据:

    一个行键、一到多列(包括数据)组合起来叫做一行(Row)。下图中所有1001的数据合起来相当于Hbase中的一行,1002的相当于另一行

    Hbase原理、Hbase列式存储特点、Hbase表结构 021. 数据库分类2. Hbase基本概念3. 行式存储和列式存储对比(通俗易懂讲解)4. Hbase表结构

4. Hbase表结构

Hbase原理、Hbase列式存储特点、Hbase表结构 021. 数据库分类2. Hbase基本概念3. 行式存储和列式存储对比(通俗易懂讲解)4. Hbase表结构
  • 表(table):用于存储管理数据,具有稀疏的、面向列的特点。Hbase中得到每一张表,就是所谓的大表(Bigtable),可以有上亿行,上百万列。
  • 行键(RowKey):类似于MySQL中的主键,Hbase根据行键来快速检索数据,一个行键对应一条记录。与MySQL主键不同的是,Hbase的行键是天然固有的,每一行数据存在行键。
  • 列族(ColumnFamily):是列的集合,列族在表定义时需要指定,而列在插入数据时动态指定。列中的数据都是以二进制形式存在,没有数据类型。在物理存储结构上,每个表中的每个列族单独以一个文件存储。一个表可以有多个列簇。

    列族是hbase创建表必备的,一张表必须有的是主键和列族

如果喜欢本文章,请用小手点个赞~

继续阅读