hbase⾮结构化数据库与结构化数据库⽐较
⽬的:了解hbase与⽀持海量数据查询的特性以及实现⽅式
传统关系型数据库特点及局限
传统数据库事务性特别强,要求数据完整性及安全性,造成系统可⽤性以及伸缩性⼤打折扣。对于⾼并发的访问量,数据库性能不是很好,类似于互联⽹这样的访问量容易造成宕机。
hbase属于什么数据库
hbase
hbase是基于列存储的数据库与传统的基于⾏存储的关系型数据库相⽐,可扩展性好。Hbase是⼀个⾯向列存储的分布式存储系统,它的优点在于可以实现⾼性能的并发读写操作,同时Hbase还会对数据进⾏透明的切分,这样就使得存储本⾝具有了⽔平伸缩性。
hbase的数据组织结构主要由主键以及列族构成,每个列族根据属性需要有多个列,列是允许可扩展的,⽐如想要增加某⼀列随时可以增加。
Hbase的优缺点
1 列的可以动态增加,并且列为空就不存储数据,节省存储空间.
2 Hbase⾃动切分数据,使得数据存储⾃动具有⽔平scalability.
3 Hbase可以提供⾼并发读写操作的⽀持
Hbase的缺点:
1 不能⽀持条件查询,只⽀持按照Row key来查询.
2 暂时不能⽀持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.
四.补充
1.数据类型,只有简单的字符类型,所有的类型都是交由⽤户⾃⼰处理,它只保存字符串。⽽关系有丰富的类型和存储⽅式。
2.数据操作:HBase只有很简单的插⼊、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系,⽽传统数据库通常有各式各样的函数和连接操作。
3.存储模式:HBase是基于列存储的,每个列族都由⼏个⽂件保存,不同的列族的⽂件时分离的。⽽传统的关系型数据库是基于表格结构和⾏模式保存的
4.数据维护,HBase的更新操作不应该叫更新,它实际上是插⼊了新的数据,⽽传统数据库是替换修改
5.可伸缩性,Hbase这类分布式数据库就是为了这个⽬的⽽开发出来的,所以它能够轻松增加或减少硬件的数量,并且对错误的兼容性⽐较⾼。⽽传统数据库通常需要增加中间层才能实现类似的功能
hbase的应⽤场景
话说什么情况需要HBase
半结构化或⾮结构化数据
对于字段不够确定或杂乱⽆章很难按⼀个概念去进⾏抽取的数据适合⽤HBase。以上⾯的例⼦为例,当业务发展需要存储author的email,phone,address信息时RDBMS需要停机维护,⽽HBase⽀持动态增加.
记录⾮常稀疏
RDBMS的⾏有多少列是固定的,为null的列浪费了存储空间。⽽如上⽂提到的,HBase为null的Column不会被存储,这样既节省了空间⼜提⾼了读性能。
多版本数据
如上⽂提到的根据Row key和Column key定位到的Value可以有任意数量的版本值,因此对于需要存储变动历史记录的数据,⽤HBase就⾮常⽅便了。⽐如上例中的author的Address是会变动的,业务上⼀般只需要最新的值,但有时可能需要查询到历史值。
超量
当数据量越来越⼤,RDBMS数据库撑不住了,就出现了读写分离策略,通过⼀个Master专门负责写操作,多个Slave负责读操作,服务器成本倍增。随着压⼒增加,Master撑不住了,这时就要分库了,把关联不⼤的数据分开部署,⼀些join查询不能⽤了,需要借助中间层。随着数据量的进⼀步增加,⼀个表的记录越来越⼤,查询就变得很慢,于是⼜得搞分表,⽐如按ID取模分成多个表以减少单个表的记录数。经历过这些事的⼈都知道过程是多么的折腾。采⽤HBase就简单了,只需要加机器即可,HBase会⾃动⽔平切分扩展,跟的⽆缝集成保障了其数据可靠性(HDFS)和海量数据分析的⾼性能(MapReduce)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。