掌桥专利:专业的专利平台
掌桥专利
首页

一种基于Protobuf协议的HBASE数据库解析方法及系统

文献发布时间:2023-06-19 11:19:16


一种基于Protobuf协议的HBASE数据库解析方法及系统

技术领域

本发明涉及通信协议领域,具体而言,涉及一种基于Protobuf协议的 HBASE数据库解析方法及系统。

背景技术

Protocol Buffers是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或RPC数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

Hbase是Hadoop database的简称,也就是基于Hadoop数据库,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等。

Protobuf是一种跨语言和平台、可扩展的、灵活高效的用于序列化数据的协议,适用于通信协议传输、数据存储等对存储体积、实时性要求高的领域。HBASE数据库使用Protobuf协议进行通信,使得数据流能够高效、快捷的传输,但由于Protobuf协议数据结构的复杂性,使得对HBASE的行为解析的难度增大。

发明内容

本发明的目的在于提供一种基于Protobuf协议的HBASE数据库解析方法,其能够通过Protobuf协议定义了.proto文件,编译成相对应的多个数据结构解析接口。此方法既高效的能够在抓取到HBASE通信协议后迅速解析,同时利用了Protobuf的特性,使得数据结构即使由于HBASE版本不同而有所差异,解析接口依然能解析对应的数据结构,解决了基于Prootbuf 协议下,HBASE通信协议解析困难的问题。

本发明的另一目的在于提供一种基于Protobuf协议的HBASE数据库解析系统,其能够运行一种基于Protobuf协议的HBASE数据库解析方法。

本发明的实施例是这样实现的:

第一方面,本申请实施例提供一种基于Protobuf协议的HBASE数据库解析方法,其包括获取HBASE数据结构的定义文件,对定义文件进行预处理生成代码文件;编译链接生成的代码文件,生成接口库文件;解析装置链接接口库文件,根据数据结构生成对应的数据结构解析接口;通过解析出的数据结构体成员的数值还原HBASE的操作行为。

在本发明的一些实施例中,上述获取HBASE数据结构的定义文件,对定义文件进行预处理生成代码文件包括:HBASE数据库与客户端的通信按照文件定义的数据结构进行序列化和反序列化。

在本发明的一些实施例中,上述还包括通过创建.proto文件,定义数据结构的名称和类型,数据结构与HBASE数据库的通信数据结构保持一致性。

在本发明的一些实施例中,上述编译链接生成的代码文件,生成接口库文件包括:通过protoc编译器编译定义好的.proto文件,生成接口库文件。

在本发明的一些实施例中,上述解析装置链接接口库文件,根据数据结构生成对应的数据结构解析接口包括:对HBASE数据库通信数据进行抓包。

在本发明的一些实施例中,还包括审计HBASE的操作行为对管理端口和数据读写端口同时抓包,审计到完整的操作行为。

在本发明的一些实施例中,上述通过解析出的数据结构体成员的数值还原HBASE的操作行为包括:对数据流量进行结构体解析赋值,得到数据结构中的值;对数据结构中的值进行重组还原。

第二方面,本申请实施例提供一种基于Protobuf协议的HBASE数据库解析系统,其包括预处理模块,用于获取HBASE数据结构的定义文件,对定义文件进行预处理生成代码文件;第一生成模块,用于编译链接生成的代码文件,生成接口库文件;第二生成模块,用于解析装置链接接口库文件,根据数据结构生成对应的数据结构解析接口;输出模块,用于通过解析出的数据结构体成员的数值还原HBASE的操作行为。

在本发明的一些实施例中,上述还包括重组还原模块,用于对数据流量进行结构体解析赋值,得到数据结构中的值,对数据结构中的值进行重组还原。

在本发明的一些实施例中,上述包括:用于存储计算机指令的至少一个存储器;与上述存储器通讯的至少一个处理器,其中当上述至少一个处理器执行上述计算机指令时,上述至少一个处理器使上述系统执行:预处理模块、第一生成模块、第二生成模块及输出模块。

相对于现有技术,本发明的实施例至少具有如下优点或有益效果:

通过Protobuf协议定义了.proto文件,编译成相对应的多个数据结构解析接口。此方法既高效的能够在抓取到HBASE通信协议后迅速解析,同时利用了Protobuf的特性,使得数据结构即使由于HBASE版本不同而有所差异,解析接口依然能解析对应的数据结构,解决了基于Prootbuf协议下, HBASE通信协议解析困难的问题。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的一种基于Protobuf协议的HBASE数据库解析方法步骤示意图;

图2为本发明实施例提供的一种基于Protobuf协议的HBASE数据库解析方法详细步骤示意图;

图3为本发明实施例提供的一种基于Protobuf协议的HBASE数据库解析系统模块示意图。

图标:10-预处理模块;20-第一生成模块;30-第二生成模块;40-输出模块。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的各个实施例及实施例中的各个特征可以相互组合。

实施例1

请参阅图1,图1为本发明实施例提供的一种基于Protobuf协议的 HBASE数据库解析方法步骤示意图,其如下所示:

步骤S100,获取HBASE数据结构的定义文件,对定义文件进行预处理生成代码文件;

在一些实施方式中,在Protobuf协议中.proto文件是对数据结构的定义文件,HBASE数据库与客户端的通信按照文件定义的数据结构进行序列化和反序列化。解析装置通过创建.proto文件,定义多个数据结构的名称和类型,这些数据结构与HBASE数据库的通信数据结构保持一致性。

步骤S110,编译链接生成的代码文件,生成接口库文件;

在一些实施方式中,使用Protobuf提供的protoc编译器,编译定义好的.proto文件,生成库文件。

步骤S120,解析装置链接接口库文件,根据数据结构生成对应的数据结构解析接口;

在一些实施方式中,解析装置链接库文件,针对不同的数据结构生成多个数据结构解析接口。当有一条流量被解析装置获取到,系统将抓取到的字节流分成两部分,一部分为此字节流的序列化结构体名称,另一部分为该名称序列化的数据结构。解析装置解析第一部分获取数据结构体的名称,然后根据结构体名称将第二部分字节流导入对应的数据结构解析接口,通过解析接口能够快速将字节流中包含的数据赋值给相应的数据结构。

步骤S130,通过解析出的数据结构体成员的数值还原HBASE的操作行为。

在一些实施方式中,HBASE数据库中的通信解析结构与本身的操作行为并不完全相同,所以最后解析装置会通过解析出的数据结构体成员的数值, 还原HBASE的操作行为。

实施例2

请参阅图2,图2为本发明实施例提供的一种基于Protobuf协议的 HBASE数据库解析方法详细步骤示意图,其如下所示:

步骤S200,HBASE数据库与客户端的通信按照文件定义的数据结构进行序列化和反序列化;

步骤S210,通过创建.proto文件,定义数据结构的名称和类型,数据结构与HBASE数据库的通信数据结构保持一致性;

步骤S220,通过protoc编译器编译定义好的.proto文件,生成接口库文件;

步骤S230,对HBASE数据库通信数据进行抓包;

步骤S240,审计HBASE的操作行为对管理端口和数据读写端口同时抓包,审计到完整的操作行为;

步骤S250,对数据流量进行结构体解析赋值,得到数据结构中的值;

步骤S260,对数据结构中的值进行重组还原。

在一些实施方式中,HBase里边也有表、行和列的概念。一行数据由一个行键和一个或多个相关的列以及它的值所组成,在HBase里边,定位一行数据会有一个唯一的值,这个叫做行键(RowKey)。而在HBase的列不是我们在关系型数据库所想象中的列。

HBase的列(Column)都得归属到列族(Column Family)中。在HBase 中用列修饰符(Column Qualifier)来标识每个列。在HBase里边,先有列族,后有列。例如有两个列族,分别是UserInfo和OrderInfo。在UserInfo 下有两个列,分别是UserInfo:name和UserInfo:age,在OrderInfo下有两个列,分别是OrderInfo:orderId和OrderInfo:money。UserInfo:name 的值为:三歪。UserInfo:age的值为24。OrderInfo:orderId的值为23333。OrderInfo:money的值为30。这些数据的主键(RowKey)为1。HBase表的每一行中,列的组成都是灵活的,行与行之间的列不需要相同,即,一个列族下可以任意添加列,不受任何限制。数据写到HBase的时候都会被记录一个时间戳,这个时间戳被我们当做一个版本。比如说,我们修改或者删除某一条的时候,本质上是往里边新增一条数据,记录的版本加一了而已。

Protobuf可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。还可以在无需重新部署程序的情况下更新数据结构。只需使用Protobuf对数据结构进行一次描述,即可利用各种不同语言或从各种不同数据流中对结构化数据轻松读写。Protobuf具有非常棒的特性,即“向后”兼容性好,不必破坏已部署的、依靠“老”数据格式的程序就可以对数据结构进行升级。这样程序就可以不必担心因为消息结构的改变而造成的大规模的代码重构或者迁移的问题。因为添加新的消息中的 field并不会引起已经发布的程序的任何改变。Protobuf语义更清晰,无需类似XML解析器的东西(因为Protobuf编译器会将.proto文件编译生成对应的数据访问类以对Protobuf数据进行序列化、反序列化操作)。使用 Protobuf无需学习复杂的文档对象模型,Protobuf的编程模式比较友好,简单易学,同时它拥有良好的文档和示例,对于喜欢简单事物的人们而言, Protobuf比其他的技术更加有吸引力。

故而,本发明提供了一种基于Protobuf协议的HBASE数据库解析方法,在Protobuf协议中.proto文件是对数据结构的定义文件,HBASE数据库与客户端的通信按照文件定义的数据结构进行序列化和反序列化。解析装置通过创建.proto文件,定义多个数据结构的名称和类型,这些数据结构与 HBASE数据库的通信数据结构保持一致性。

然后使用Protobuf提供的protoc编译器,编译定义好的.proto文件,生成库文件。

解析装置对HBASE数据库通信包进行抓包,审计HBASE的操作行为需要对两个端口(一个管理端口,一个数据读写端口)同时抓包,才能审计到完整的操作行为。

解析装置链接库文件,针对不同的数据结构生成多个数据结构解析接口。当有一条流量被解析装置获取到,系统将抓取到的字节流分成两部分,一部分为此字节流的序列化结构体名称,另一部分为该名称序列化的数据结构。解析装置解析第一部分获取数据结构体的名称,然后根据结构体名称将第二部分字节流导入对应的数据结构解析接口,通过解析接口能够快速将字节流中包含的数据赋值给相应的数据结构。

HBASE数据库中的通信解析结构与本身的操作行为并不完全相同,所以最后解析装置会通过解析出的数据结构体成员的数值,还原HBASE的操作行为。

本发明利用Protobuf协议定义了.proto文件,编译成相对应的多个数据结构解析接口。此方法既高效的能够在抓取到HBASE通信协议后迅速解析,同时利用了Protobuf的特性,使得数据结构即使由于HBASE版本不同而有所差异,解析接口依然能解析对应的数据结构,解决了基于Prootbuf 协议下,HBASE通信协议解析困难的问题。

实施例3

请参阅图3,图3为本发明实施例提供的一种基于Protobuf协议的 HBASE数据库解析系统模块示意图,其如下所示:

预处理模块10,用于获取HBASE数据结构的定义文件,对定义文件进行预处理生成代码文件;

第一生成模块20,用于编译链接生成的代码文件,生成接口库文件;

第二生成模块30,用于解析装置链接接口库文件,根据数据结构生成对应的数据结构解析接口;

输出模块40,用于通过解析出的数据结构体成员的数值还原HBASE的操作行为。

还包括存储器、处理器和通信接口,该存储器、处理器和通信接口相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器可用于存储软件程序及模块,处理器通过执行存储在存储器内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口可用于与其他节点设备进行信令或数据的通信。

其中,存储器可以是但不限于,随机存取存储器 (Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory, EEPROM)等。

处理器可以是一种集成电路芯片,具有信号处理能力。该处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器 (Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

可以理解,图3所示的结构仅为示意还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。图3中所示的各组件可以采用硬件、软件或其组合实现。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

综上所述,本申请实施例提供的一种基于Protobuf协议的HBASE数据库解析方法及系统,通过Protobuf协议定义了.proto文件,编译成相对应的多个数据结构解析接口。此方法既高效的能够在抓取到HBASE通信协议后迅速解析,同时利用了Protobuf的特性,使得数据结构即使由于HBASE 版本不同而有所差异,解析接口依然能解析对应的数据结构,解决了基于Prootbuf协议下,HBASE通信协议解析困难的问题。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

相关技术
  • 一种基于Protobuf协议的HBASE数据库解析方法及系统
  • 一种使用Protobuf描述的物联网协议解析方法
技术分类

06120112880902