[发明专利]一种基于HBase的Lob数据的存储方法及装置有效
| 申请号: | 201510144162.7 | 申请日: | 2015-03-30 |
| 公开(公告)号: | CN104750815B | 公开(公告)日: | 2017-11-03 |
| 发明(设计)人: | 贾德星;徐正礼;魏金雷 | 申请(专利权)人: | 浪潮集团有限公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 济南信达专利事务所有限公司37100 | 代理人: | 李世喆 |
| 地址: | 250100 山东*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 hbase lob 数据 存储 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,特别涉及一种基于HBase的Lob数据的存储方法及装置。
背景技术
HBase(分布式存储系统)是一个分布式、面向列的开源数据库,可实现几十亿、上百亿的数据存储。当对处理大对象(Large Object,LOB)数据,如文档、音乐、视频等数据进行存储时,可能会存在如下问题:
1、HBase在进行底层存储时是以KeyValue形式进行存储的,当客户端向服务器端更新数据时,服务器端先把待更新的KeyValue对象存储在内存(MemStore)中,当内存中的存储的KeyValue对象达到阈值时,再将该达到阈值的KeyValue对象存储为StoreFiel,因此,如果KeyValue值过大,容易造成服务器端内存溢出;
2、HBase表在进行数据存储时,会根据行关键字(RowKey)拆分为多个分区(Region),每个分区包括多个HFile文件。而由于Lob数据列值很大,所以HFile文件容易超出分区限制,从而进行拆分并形成大量的分区,而每个分区只有很少的行,过多的分区数量使得对HBase表数据的扫描(Scan)效率比较低。
针对上述问题,在客户端需要存储Lob数据时往往会结合HDFS(分布式文件系统)进行辅助,客户端将Lob数据存储到HDFS中,而将其他结构化数据存储到HBase中。由于客户端在针对Lob数据和其他结构化数据存储时,需要利用这两种数据库(HBase和HDFS)分别进行存储,需要客户端分别针对每一种数据库的存储方式进行大量编程处理,因此,该存储方式实用性较低。
发明内容
有鉴于此,本发明提供一种基于HBase的Lob数据的存储方法及装置,在保证实用性的前提下实现大对象数据存储的问题。
本发明提供了一种基于HBase的Lob数据的存储方法,根据HTable对象扩展LobTable对象;设置用于识别Lob数据的Qualifier;设置HBase所对应的服务器向HDFS转存数据的转存进制,还包括:
客户端在向LobTable对象发送存储请求时,LobTable在确定所述存储请求中包括Qualifier时,确定所述存储请求携带Lob数据,则创建LobPut对象;
客户端将所述存储请求中携带的Lob数据写入LobPut对象提供的Lob输出流中;
LobPut对象接收写入了Lob数据的Lob输出流,并在每次接收到的满足第一阈值的数据块时,将满足该第一阈值的数据块生成相应的Put对象,其中,Put对象包括相应数据块在Lob数据中的块号;
将生成的Put对象提交至服务器端,以使服务器端根据提交的Put对象中所包括的块号的顺序,利用设置的转存机制,将各个Put对象对应的数据块依次转存至HDFS的Lob文件中。
优选地,
进一步包括:客户端调用LobTable对象向服务器端提交scan请求,其中,所述查询请求用于查询服务器端的Lob数据,并接收服务器端针对所述查询请求返回的Result,所述Result包括所述查询请求所查询的Lob数据的Row Key;LobTable对象将所述Result封装为LobResult对象,LobResult对象根据所查询的Lob数据的Row Key生成LobGet对象,以使LobGet对象根据所查询的Lob数据所对应的每一块数据块在Lob数据中的起始地址向服务器端分块读取Lob数据。
本发明还提供了一种基于HBase的大对象数据的存储方法,创建LobCorprocessor,设置HBase所对应的服务器向HDFS转存数据的转存进制,还包括:
服务器端利用Lob Corprocessor分块接收客户端分块提交的各个Put对象,其中,每个Put对象包括相应数据块在其对应Lob数据中的块号;
根据首次接收到的Put对象所对应数据块,确定HDFS系统的Lob文件中当前是否包括与该数据块相关的数据,若是,利用设置的转存机制将首次接收到的Put对象所对应的数据块,对与其相关的数据进行更新;若否,利用设置的转存机制,将首次接收到的Put对象所对应的数据块,创建至Lob文件中;
并根据提交的Put对象中所包括的块号的顺序,利用设置的转存机制,将后续接收到的Put对象分别对应的数据块转存入Lob文件中,并根据每个数据块的块号将各个数据块组合为Lob数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮集团有限公司,未经浪潮集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510144162.7/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





