转:Hbase与Oracle比较(列式数据库与行式数据库)
来源:互联网 发布:网络伤感情歌男女对唱 编辑:程序博客网 时间:2024/05/05 14:31
1 主要区别
1.1、Hbase适合大量插入同时又有读的情况
1.2、 Hbase的瓶颈是硬盘传输速度,Oracle的瓶颈是硬盘寻道时间。
Hbase本质上只有一种操作,就是插入,其更新操作是插入一个带有新的时间戳的行,而删除是插入一个带有插入标记的行。其主要操作是收集内存中一批数据,然后批量的写入硬盘,所以其写入的速度主要取决于硬盘传输的速度。Oracle则不同,因为他经常要随机读写,这样硬盘磁头需要不断的寻找数据所在,所以瓶颈在于硬盘寻道时间。
1.3、Hbase很适合寻找按照时间排序top n的场景
1.4、索引不同造成行为的差异。
1.5、Oracle 既可以做OLTP又可以做OLAP,但在某种极端的情况下(负荷十分之大),就不适合了。
2 :Hbase的局限:
1、只能做简单的Key value查询,复杂的sql统计做不到。
2、只能在row key上做快速查询。
3 传统数据库的行式存储
在数据分析的场景里面,我们经常是以某个列作为查询条件,返回的结果经常也只是某些列,不是全部的列。行式数据库在这种情况下的I/O性能会很差,以Oracle为例,Oracle会有一个很大的数据文件,在这个数据文件中,划分了很多block,然后在每个block中放入行,行是一行一行放进去,挤在一起,然后把block塞满,当然也会预留一些空间,用于将来update。这种结构的缺点是:当我们读某个列的时候,比如我们只需要读红色标记的列的时候,不能只读这部分数据,我必须把整个block读取到内存中,然后再把这些列的数据取出来,换句话说,我为了读表中某些列的数据,我必须把整个列的行读完,才可以读到这些列。如果这些列的数据很少,比如1T的数据中只占了100M, 为了读100M数据却要读取1TB的数据到内存中去,则显然是不划算。
4 列式存储
同一个列的数据会挤在一起,比如挤在block里,当我需要读某个列的时候,值需要把相关的文件或块读到内存中去,整个列就会被读出来,这样I/O会少很多。
同一个列的数据的格式比较类似,这样可以做大幅度的压缩。这样节省了存储空间,也节省了I/O,因为数据被压缩了,这样读的数据量随之也少了。 行式数据库适合OLTP,反倒列式数据库不适合OLTP。
转自:http://blog.csdn.net/allen879/article/details/40461227
- 转:Hbase与Oracle比较(列式数据库与行式数据库)
- Hbase与Oracle比较(列式数据库与行式数据库)
- Hbase与Oracle比较(列式数据库与行式数据库)
- 行式数据库与列式数据库
- 行式数据库与列式数据库
- 列式数据库与行式数据库
- 行式数据库与列式数据库
- 列式数据库HBase搭建
- 行式与列式数据库
- Hbase 与 传统关系数据库(RDBMS)的比较
- Hbase 与Oracle比较
- Oracle数据库(索引、视图、伪列与伪表)
- Oracle数据库(索引、视图、伪列与伪表)
- 行式数据库与列式数据区别
- SAP HANA内存数据库与oracle数据库的性能比较
- HBase 列族数据库
- Hbase总结(四)- Hbase与传统数据库的区别
- Hbase总结(四)- Hbase与传统数据库的区别
- maven注意事项
- 黑马程序员——JAVASE-集合(下)
- ssh 无密码登录
- Android studio 修改快捷键
- 第二个任务:海外push的bug(运营平台显示42.10%,广告分析显示42.11%)
- 转:Hbase与Oracle比较(列式数据库与行式数据库)
- MySQL的binlog数据如何查看
- Java 的 Excel 导入功能实现
- Windows编程之最简单窗口程序
- JVM类加载—编译与泛型
- 黑马程序员----Java异常体系结构
- NHibernate
- CocoaPods--第三方开源库的管理工具
- 谷歌官方建议笔记——多线程