起源
HBase作为列族数据库最长被人诟病的特性包括:
- 无法轻易建立“二级索引”
- 难以执行求和、计数、排序等操作
比如,在旧版本(<0.92)HBase中,统计数据表的总行数,需要使用Counter方法,执行一次MapReduce Job才能得到。虽然HBase在数据存储层中集成了MapReduce,能够有效用于数据表的分布式计算。然而在很多情况下,做一些简单的相加或者聚合计算的时候,如果直接将计算过程放置在server端,能够减少通讯开销,从而获得很好的性能提升。
于是,HBase在0.92之后引入了协处理器(coprocessors),实现一些激动人心的新特性:能够轻易建立二次索引、复杂过滤器(谓词下推)以及访问控制等。
协处理器的主要分类
ObServer
- observer类似于传统数据库中的触发器,当发生某些事件的时候这类协处理器会被server端调用。observer coprocessor就是一些散布在HBase server端代码中的hook钩子,在固定的事件发生时被调用。比如:put操作之前就有钩子函数prePut,该函数在put操作执行之前会被Region Server调用;在put操作之后则有postPut钩子函数
- 以HBase2.0版本为例,它提供了三种观察者接口:
- RegionObserver:提供客户端的数据操纵事件的钩子:Get、Put、Delete、Scan等
- WALObserver:提供WAL相关操作的钩子。
- MaserObserver:
- 以HBase2.0版本为例,它提供了三种观察者接口: