Hbase数据库设计

使用Hbase的优势

  • HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.所谓非结构化数据存储就是说HBase是基于列的而不是基于行的模式,这样方便读写你的大数据内容。
  • HBase是介于Map Entry(key & value)和DB Row之间的一种数据存储方式。就点有点类似于现在流行的Memcache,但不仅仅是简单的一个key对应一个 value,你很可能需要存储多个属性的数据结构,但没有传统数据库表中那么多的关联关系,这就是所谓的松散数据。
  • 简单来说,你在HBase中的表创建的可以看做是一张很大的表,而这个表的属性可以根据需求去动态增加,在HBase中没有表与表之间关联查询。你只需要 告诉你的数据存储到Hbase的那个column families 就可以了,不需要指定它的具体类型:char,varchar,int,tinyint,text等等。但是你需要注意HBase中不包含事务此类的功能。
  • Apache HBase 和Google Bigtable 有非常相似的地方,一个数据行拥有一个可选择的键和任意数量的列。表是疏松的存储的,因此用户可以给行定义各种不同的列,对于这样的功能在大项目中非常实用,可以简化设计和升级的成本。

Hbase存储结构

  • HBase 是基于列的数据库,下面是关系型数据库和hbase数据库存储的对比。

    • 行式存储,如图,其特点如下:

        1. 数据是按行存储的
        1. 没有索引的查询使用大量I/O
        1. 建立索引和物化视图需要花费大量时间和资源
        1. 面对查询的需求,数据库必须被大量膨胀才能满足性能要求
          201703225425_923
    • 列式存储,如图,其特点如下:

        1. 数据按列存储——每一列单独存放
        1. 数据即是索引
        1. 只访问查涉及的列——大量降低系统IO
        1. 每一列由一个线索来处理——查询的并发处理库
        1. 数据类型一致,数据特征相似——高效压缩
          201703222922_820

Hbase与关系型数据库的对比

Hbase是基于列的,传统关系型数据库是基于表格结构和行存储。下面是Hbase与关系型数据库RDBMS的对应关系,如表:
QQ20170909-202849@2x

Hbase中表结构设计

  • 以传统关系数据库表的设计模式,设计Hbase中的表。需要对传统关系型数据库表的一对多,多对多关联关系做转换。
    (1)本系统中的File和Folder实体对应关系数据库中的两张表hd_file、hd_folder,如图:
    201703229425_673
    (2)Hbase中设计表,实现目录和文件的存储,即将上述File和Folder实体的关系型数据库表hd_file和hd_folder转换为Hbase的非关系型基于列的表结构存储,一张表即可实现,表名使用File,表的每一行表示一个文件或目录,如表:
    hb

更多内容:http://www.toocruel.net/hbase-design/

猜你喜欢

转载自blog.csdn.net/too_cruel/article/details/79494834