技术答疑HBase封装easy-hbase的原理是怎样的

Posted 程序员交流学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术答疑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的原理,这是大致上的一种描述,在实际中的应用也要根据实际的项目需要而定。



以上是关于技术答疑HBase封装easy-hbase的原理是怎样的的主要内容,如果未能解决你的问题,请参考以下文章

Apache Phoenix(一)答疑

hbase技术原理

HBase原理|还不知道HBase冷热分离的技术原理?看这一篇就够了!

大数据技术之HBase原理分析

网易视频云技术分享:HBase高可用原理与实践

HBase笔记:对HBase原理的简单理解