关于HBase中读多写多得不同应用场景

一、关于索引方面的作用:

不管是本地索引还是全局索引,在功能上没有任何差别,都是为了加快某个列的查询!

适合的情景不同!

因为当向hbase的表中插入数据时,数据在更新时,也需要更新索引!

本地索引:

索引以列族的形式存储在表中,在更新数据和更新索引时,只需要向数据所在的regionserver发请求即可!适合多写的场景!

全局索引:

索引以表的形式存储在hbase中,索引所在的region,也是由一个regionserver负责的!

如果表中的数据由102的rs负责,索引所在的region由103的rs负责!

在插入数据时,需要向102的rs发请求,还需要向103的rs发送写请求!

在多写少读的场景下,加重了rs的请求压力和网络负载!

适合的是多读的场景!

二、RowKey设计时

在做Rowkey设计时,请先考虑业务是读比写多、还是读比写少,HBase本身是为写优化的,即便是这样,也可能会出现热点问题,而如果我们读比较多的话,除了考虑Rowkey设计原则外,还可以考虑HBase的Coprocessor甚至elastic search结合的方法,无论哪种方式,都建议做实际业务场景下数据的压力测试以得到最优结果。
原文地址:https://www.cnblogs.com/atBruce/p/12555464.html