hbase-2.4.0源码阅读说明
- 1 hbase作为数据库的特点
- 1.1 先天缺陷: 缺失核心功能的分布式数据库
- 1.2 主次不分: 为了提升写性能而严重降低读性能
- 1.3 复杂凌乱: 从设计到实现没有一个要突出的主线功能
- 2 源码阅读步骤和逻辑
最初在开始分析hadoop源码时,已做好了后续的源码阅读规划,hbase就是继hadoop之后要分析源码的软件.有关hbase的源码阅读这里要首先明确一下.
1 hbase作为数据库的特点
Hbase的全称是hadoop database,是构建在hdfs文件系统之上的数据库,因此与hadoop的联系最为紧密.谈及数据库,其历史和操作系统一样古老.与操作系统类似,我更倾向于把数据库划分到历史和哲学的范畴,而不是技术的范畴,所以这里要针对hbase这一特殊的数据库作一些说明.
1.1 先天缺陷: 缺失核心功能的分布式数据库
Hbase作为分布式数据库,最核心的缺陷是缺失查询功能.hbase不支持sql语句(或类似的查询引擎),只有一些简单的查询模式.所以作为数据库,这个缺陷是致命的,尽管是分布式的,但前提是数据库.
1.2 主次不分: 为了提升写性能而严重降低读性能
数据库的核心功能是查询,因此读性能至少不能低于写性能.hbase因为没有好的查询功能,因此也就牺牲了读数据的功能,增强了写数据的功能.这就很是矛盾,如果仅仅是为了写数据和存数据,hdfs文件系统本身就已足够,那么搭建于其上的hbase就显得很鸡肋了.
1.3 复杂凌乱: 从设计到实现没有一个要突出的主线功能
感觉hbase也是生不逢时.与cassandra相比,同样是使用合并策略来管理数据,但是cassandra有完善的sql功能,是典型的以数据库核心功能为目标来设计和实现的,从各方面来讲都要比hbase清晰和简洁.作为一款分布式数据库,可能hbase是最差的选择.
2 源码阅读步骤和逻辑
Hbase可以说是作为一款典型失败的分布式数据库,其设计和实现都存在着明显的局限,因此这里只从hbase自身的整个实现逻辑来摘取关键节点,对此进行源码上的分析,包括以下三部分:
1 put操作,借此说明wal和缓存
2 scan操作,借此说明索引及硬盘存储文件hfile