前言
在传统运用中,我们主要以线上MySQL库为主,T+1备份到线下的Oracle库的方式实现数据存储的最优方案,这些传统数据库是基于表格结构和行存储,其没有建立索引将耗费大量的I/O并且建立索引和物化试图需要耗费大量的时间和资源;而HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,这样的好处是数据即是索引,访问查询涉及的列大量降低系统的I/O,并且每一列由一个线索来处理,可以实现查询的并发处理,HBase支持海量存储、PB级处理,在高并发的场景相比传统关系型数据库有较大的优势。
1.HBase简介:
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。------百度百科
2.HBase的优缺点:
Hbase的优点:
1.列可以动态增加,并且当列为空的时候就不存储,节省存储空间。
2.Hbase自动切分数据,使得数据存储自动具有水平扩展能力。
3.Hbase可以支持高并发顺序读写操作(因为其有内存的缓存机制)。
Hbase的缺点:
1.不能支持条件查询,只支持按照row key来查询
2.暂时不能支持Master server的故障切换,当Master宕机后,这个存储系统都会挂掉。
3.HBase与传统关系型数据库(RDBMS,全称为 Relational Database Management System)的区别:
1.数据类型:Hbase只有简单的数据类型,只保留字符串;传统数据库有丰富的数据类型。
2.数据操作:Hbase只有简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系;传统数据库通常有各式各样的函数和连接操作。
3.存储模式:Hbase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的,这样的好处是数据即是索引,访问查询涉及的列大量降低系统的I/O,并且每一列由一个线索来处理,可以实现查询的并发处理;传统数据库是基于表格结构和行存储,其没有建立索引将耗费大量的I/O并且建立索引和物化试图需要耗费大量的时间和资源。
4.数据维护:Hbase的更新实际上是插入了新的数据;传统数据库只是替换和修改。
5.可伸缩性:Hbase可以轻松的增加或减少硬件的数目,并且对错误的兼容性比较高;传统数据库需要增加中间层才能实现这样的功能。
6.事务:Hbase只可以实现单行的事务性,意味着行与行之间、表与表之前不必满足事务性;传统数据库是可以实现跨行的事务性。
4.HBase与传统关系型数据库(RDBMS,全称为 Relational Database Management System)的关系:
HBase能够支持列式存储、支持非结构化数据存储、可扩展性好,在实际运用中,我们通常在此基础上搭建Hive分析平台,支撑业务分析部门的要求,同时可以将数据T+1T定时增量同步到数仓,支撑其他数据运用服务。
参考文章1:Hbase和传统数据库之间的区别
参考文章2:Hbase和Hive以及传统数据库的区别