HBase相对于关系数据库能解决的问题是什么



回答问题的点也可以从行式数据库与列式数据库的区别着手~~~

列式存储(Columnar or column-based)是相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表:

Ø  Row-based storage stores atable in a sequence of rows.

Ø  Column-based storage storesa table in a sequence of columns.

 

行式存储下一张表的数据都是放在一起的,但列式存储下都被分开保存了。所以它们就有了如下这些优缺点:

行式存储:

优点:数据被保存在一起了,insertupdate更加容易

缺点:选择(selection)时即时只涉及某几列,所有数据也都会被读取

列式存储:

优点:查询时只有涉及到的列会被读取;投影(projection)很高效;任何列都能作为索引

缺点:选择完成时,被选择的列要重新组装,insert/update会比较麻烦

 

 

HBase与关系数据的区别?

其实就是关系数据库与HBase各自的优缺点。

关系数据库的缺憾:

1). 扩展困难

2). 维护复杂

HBase就是解决可伸缩行的问题。通过简单增加节点来获取线性扩展性。不支持SQL。

HBase与RDBMS的区别?

1). 表的设计:HBase的表可以很高,很宽,可伸缩性很强。而且表的模式是物理存储的直接反映。

2). 拓扑: HBase能水平分区并在上千个节点上自动复制。

3). 应用形式: 开发者必须承担更多的责任来正确地利用HBase的检索和存储方式。

4). RDBMS 遵循固定的模式,如“codd 12 规则”,强调事务的“强一致性”、参照完整性、SQL支持、数据的逻辑与物理形式相对独立。等等。适用于中小规模的数据,但对于数据的规模和并发读写方面进行大规模扩展时,RDBMS会性能大大降低,分布式更为困难,因为其需要放弃很多RDBMS的易用的特性。


HBase适用于上亿、上千亿级的数据,如果是只有上千、上百万级别是数据,传统的RDBMS是更好的选择。

HBase需要更多硬件,如果硬件较少,如5个,干不成什么好事。

如果从RDBMS移植到HBase,需要消除RDBMS的很多额外特性,如列数据类型、第二索引、事务、高级查询等。

猜你喜欢

转载自blog.csdn.net/wyqwilliam/article/details/81063517