HBase封装easy-hbase的原理是怎样的

HBase封装easy-hbase的原理是怎样的?这是在Hbase使用中常见的问题。基于HBase原生API的封装,同时可以用Spring和Spring Boot集成,以达到简化代码的目的,从而使代码的复用性和可读性有所提高,从而达到提高开发效率的目的。

在处理大数据的业务架构中经常会用到HBase,在开发过程中均使用原生的HBase Api来实现逻辑,对于原生API,在业务上实施并不是什么难事,但存在的问题就是在复用性和可读性上不是很理想,在此情况下,根据现有业务和现在HBase的常用方式上封装了这个简易的ORM,尚学堂•百战程序员指出其实,称之为ORM也并不一定十分恰当,也可以理解为一种轻量级的工具框架,也就是我们用到的easy-hbase,这种框架现在也在被广泛使用。

在设计思路上,它是基于现有HBase存储业务的逻辑和使用方式来进行设计,因为HBase使用列簇设计不宜过多,所以一般为单个固定列簇。

HBase存储的基础数据表,比如某个订单或者某个帖子之类的,rowKey类似为主键,然后固定单个列簇里面,某个column就是基础数据的一个字段,value就是对应的值,这个实际上和关系型数据库有点类似了,这样我们需要一个封装,根据主键返回一堆字段,再映射成我们需要的对象。

由于HBase是非关系型数据库,它的查询都是基于rowKey来进行的。一些关联查询需要建立相应的索引来实现,比如某个用户的发帖列表,用户相关key为rowKey,column为Long最大值-发帖时间,value为帖子rowKey,这部分数据的column和value都不是固定的,区别于2的固定column值。

HBase存储的基础单位也是字节,这点跟redis都是一致的,但是不同于redis客户端将value固定为String的字节数组,HBase提供的api是允许不同类型如Integer|Long|String等操作的,为方便管理和代码封装,实际业务上会规定尽量使用String来存储有关数据,特殊情况下用Long(主要是为了计数器的原子操作)。

HBase基础数据表查询会返回指定PO,而一些索引表查询会返回不同的column和value,另外在条件查询时,我们有时候会限制返回我们需要的column或者是只取指定value(或者别的笔记关系:大于或不等于等)的column,我们需要一个基础的单元格类来承载这些功能。一般基础数据相同的属性,我们可能会放多份,区分正序或者倒叙等,还有复杂索引的数据其也没特定的table,所以我们设计的时候是将HBase的table以参数的形式传入,而非注解,建议这些配置在统一的地方维护。

以上就是HBase封装easy-hbase的原理,这是大致上的一种描述,在实际中的应用也要根据实际的项目需要而定。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180403A0SCYI00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券