CN111984679A - 硬件加速数据库的访问方法、装置、主机、***及介质 - Google Patents
硬件加速数据库的访问方法、装置、主机、***及介质 Download PDFInfo
- Publication number
- CN111984679A CN111984679A CN202010633604.5A CN202010633604A CN111984679A CN 111984679 A CN111984679 A CN 111984679A CN 202010633604 A CN202010633604 A CN 202010633604A CN 111984679 A CN111984679 A CN 111984679A
- Authority
- CN
- China
- Prior art keywords
- protocol
- database
- hardware acceleration
- rpc
- serialization
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开实施例涉及一种硬件加速数据库的访问方法、装置、主机、***及介质,通过在基于RPC协议的硬件加速数据库访问架构中,采用序列化速率更高的数据结构序列化协议代替RPC协议中原生的Protocol Buffer协议,提高了数据的序列化速度,降低了数据的传输时延。
Description
技术领域
本公开实施例涉及计算机技术领域,尤其涉及一种硬件加速数据库的访问方法、装置、主机、***及介质。
背景技术
在相关技术中,硬件加速数据库是一种可由硬件加速***独立完成数据库访问任务,不需要主机的中央处理器(central processing unit,简称CPU)过多参与的数据库。当硬件加速***执行的计算机编程语言是除Java以外的其他编程语言(比如C语言、C++)时,主机中的用户Java程序可以通过调用远程过程调用(Remote Procedure Call,简称RPC)协议,将用户Java程序的指令传输给硬件加速数据库的硬件加速***,从而实现用户Java程序对硬件加速数据库的跨语言访问。
但是,相关技术存在数据库访问效率低,数据传输耗时长的问题。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种硬件加速数据库的访问方法、装置、主机、***及介质。
本公开实施例第一方面提供了一种硬件加速数据库的访问方法,该方法包括:
第一主机获取第一主机中的用户Java程序向Java数据库连接(Java DatabaseConnectivity,简称JDBC)的应用程序接口(Application Programming Interface,简称API)发送的数据库操作指令;调用用户端RPC协议中内置的数据结构序列化协议对数据库操作指令中的数据进行序列化处理,生成第一RPC消息;将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***基于服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作;其中,硬件加速***执行的编程语言与用户Java程序执行的编程语言不同,数据结构序列化协议的序列化速率高于Protocol Buffer协议。
本公开实施例第二方面提供了一种硬件加速数据库的访问方法,该方法包括:
硬件加速数据库的硬件加速***接收第一主机发送的第一RPC消息,第一RPC消息为第一主机采用用户端RPC协议中内置的数据结构序列化协议对用户Java程序向JDBC API发送的数据库操作指令中的数据进行序列化处理得到的;采用服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理;根据反序列化处理的结果执行相应的数据库访问操作;其中,硬件加速***执行的编程语言与用户Java程序执行的编程语言不同,数据结构序列化协议的序列化速率高于Protocol Buffer协议。
本公开实施例第三方面提供了一种数据库访问装置,该装置包括:
获取模块,用于获取第一主机中的用户Java程序向JDBC API发送的数据库操作指令;
数据序列化模块,用于调用用户端RPC协议中内置的数据结构序列化协议对数据库操作指令中的数据进行序列化处理,生成第一RPC消息;
第一发送模块,用于将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***基于服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作;
其中,硬件加速***执行的编程语言与用户Java程序执行的编程语言不同,数据结构序列化协议的序列化速率高于Protocol Buffer协议。
本公开实施例第四方面提供了一种数据库访问装置,该装置包括:
接收模块,用于接收第一主机向硬件加速数据库的硬件加速***发送的第一RPC消息,第一RPC消息为第一主机采用用户端RPC协议中内置的数据结构序列化协议对用户Java程序向JDBC API发送的数据库操作指令中的数据进行序列化处理得到的;
数据反序列化模块,用于采用服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理;
访问执行模块,用于根据反序列化处理的结果执行相应的数据库访问操作;
其中,硬件加速***执行的编程语言与用户Java程序执行的编程语言不同,数据结构序列化协议的序列化速率高于Protocol Buffer协议。
本公开实施例第五方面提供了一种主机,包括:
处理器;存储器;以及计算机程序;其中,计算机程序存储在存储器中,并被配置为由处理器执行以实现上述第一方面的方法。
本公开实施例第六方面提供了一种硬件加速***,包括:
处理器;存储器;以及计算机程序;其中,计算机程序存储在存储器中,并被配置为由处理器执行以实现上述第二方面的方法。
本公开实施例第七方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行以实现上述第一方面或第二方面的方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
在本公开实施例中,第一主机通过获取用户Java程序向JDBC API发送的数据库操作指令,并采用自身装载的用户端RPC协议中的数据结构序列化协议对获取到的数据库操作指令中的数据进行序列化处理,生成第一RPC消息,通过将第一RPC消息发送给硬件加速数据库的硬件加速***,使得硬件加速***基于服务端RPC协议中的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作,从而实现了第一主机对硬件加速数据库的跨语言访问。并且在本公开实施例中,用户端RPC协议和服务端RPC协议中的原生Protocol Buffer协议被替换成了另一种序列化速率更高的数据结构序列化协议,因而能够提高数据库访问过程中的数据序列化速度,降低第一主机和硬件加速***之间的数据传输时延。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的一种用户Java程序调用JDBC访问数据库的***架构示意图;
图2是相关技术提供的一种基于JNI访问硬件加速数据库的***架构示意图;
图3是相关技术提供的一种基于RPC协议跨语言访问硬件加速数据库的***框架示意图;
图4是本公开实施例提供的一种硬件加速数据库的访问方法的流程图;
图5是本公开实施例提供的一种硬件加速数据库的访问方法的***架构图;
图6是本公开实施例提供的又一种硬件加速数据库的访问方法的***架构图;
图7是本公开实施例提供的又一种硬件加速数据库的访问方法的流程图;
图8是本公开实施例提供的又一种硬件加速数据库的访问方法的***架构图;
图9是本公开实施例提供的又一种硬件加速数据库的访问方法的流程图;
图10是本公开实施例提供的一种数据库访问装置的结构示意图;
图11是本公开实施例提供的一种数据库访问装置的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
为了便于理解本公开的技术方案,首先对本公开涉及的专业技术进行解释:
JDBC技术:JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC驱动程序共分为四种类型,其中访问速度最快,纯粹用Java实现的是本地协议驱动。这类JDBC直接在客户端和数据库之间通信,但目前几乎只有数据库厂商才能提供这种类型的JDBC驱动,且针对不同的数据库需要使用不同的驱动程序。
Protocol Buffer技术:Protocol Buffer是一种数据结构序列化协议。经常应用于透过管道(pipeline)或存储数据进行的通信程序的开发。Protocol Buffer包含一个接口描述的语言,用于描述一些数据结构,并提供程序工具,该些程序工具用于产生这些数据结构或解析数据流。
gRPC技术:是Google发起的一个开源远程过程调用***。该***基于HTTP/2协议传输,使用Protocol Buffer作为接口描述语言。在该框架下多种语言服务之间可以跨平台进行交互。
JNI技术:JNI是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用或库,也可以被其他程序调用。本地程序一般用C,C++或汇编语言编写,并且编译为基于本机硬件和操作***的程序。当一些工作无法用Java来解决时,JNI允许程序员用其他编程语言来解决问题。
FlatBuffers技术:是一种基于内存的数据结构序列化协议,在反序列化的时候不需要额外的开辟临时内存,使得它在读取序列化数据的时候速度很快。FlatBuffer支持多种编程语言。
AVRO:是一种数据结构序列化的***。它可以提供丰富的数据结构类型,快速可压缩的二进制数据形式,存储持久数据的文件容器以及RPC协议。
Hesssian:是一种数据结构序列化协议。Hessian采用的是二进制RPC协议,适合于发送二进制数据。
JSON:是一种轻量级的数据交换格式。它采用与编程语言无关的文本格式,但是也使用了类C语言(包括C,C++,C#,Java,JavaScript,Perl,Python等)的习惯,简洁和清晰的层次结构使得JSON成为理想的数据交换语言,具有良好的可读性。
MessagePack:一个类似JSON的序列化和反序列化协议,和JSON相比速度更快,所占内存更小,结构更紧凑,适合在性能要求高的条件下作为JSON的替代。其本身支持多语言,跨平台使用。
图1是相关技术提供的一种用户Java程序调用JDBC访问数据库的***架构示意图。如图1所示,在相关技术中数据库一般可以执行Java程序代码,JDBC提供的应用程序接口可以支持服务器-客户机(Client-Server,简称C/S)两层模型。在C/S两层模型中用户Java程序可以通过调用JDBC API直接向数据库发送诸如查询或更新数据库等数据库操作指令。数据库接收到数据库操作指令后执行相应的操作,并通过JDBC API向用户Java程序返回访问结果。但是在图1中,对数据库的全部操作均需要数据库所在主机的CPU来执行,占用了CPU大量的处理资源。
为了节约主机CPU的处理资源,相关技术提供了一种硬件加速数据库。该数据库与现有数据库存在明显不同。在硬件加速数据库中数据库的硬件加速***可以独立计算,并独立完成对数据库的所有访问任务,而不需要CPU过多参与。并且在相关技术中硬件加速***的硬件驱动程序一般采用C语言、C++或者Python编写。这种情况下,用户Java程序对硬件加速数据库的访问一般通过JNI技术来实现。示例的,图2是相关技术提供的一种基于JNI访问硬件加速数据库的***架构示意图。如图2所示,在该***架构中用户Java程序通过将数据库操作指令发送给JDBC API,由JDBC API调用JNI将以Java语言表达的数据库操作指令转换成以C++语言表达的指令,使得硬件加速***能够根据转换后的指令对数据库进行访问操作。与发起访问类似的,在硬件加速***完成对数据库的访问后,硬件加速***需要采用JNI将以C++语言表达的访问结果转换为以Java语言表达的访问结果,并通过JDBC API将访问结果返回给用户Java程序。但是JNI并不完美,其在实际应用中至少存在如下缺陷:
1、JNI仅支持本地通信,访问硬件加速数据库的用户Java程序必须与硬件加速数据库在同一主机上,导致硬件加速数据库布设的灵活性较差,不能跨平台对硬件加速数据库进行访问,降低了硬件加速数据库的使用价值。
2、JNI转换编程语言(比如,Java语言与C/C++之间的转换)的耗时较长,导致访问数据库的效率较低。
3、JNI的兼容性较差,当JNI被迁移到其他主机时,需要对JNI进行重新配置以使JNI能够支持所在主机的处理器架构,耗时耗力,成本较高。
4、JNI创建使用过程复杂,需要生成的文件较多,不易维护和优化。
针对JNI存在的上述问题,相关技术提供了一种基于RPC协议的改进方案。示例的,图3是相关技术提供的一种基于RPC协议跨语言访问硬件加速数据库的***框架示意图,如图3所示,在相关技术提供的改进方案中,当主机获取到用户Java程序发送的数据库操作指令后,从数据库操作指令中提取用于指示具体操作内容的数据,并调用预先配置的用户端RPC协议,按照协议中的Protocol Buffer协议对数据进行序列化处理,生成RPC消息。然后基于HTTP/2协议传输将RPC消息发送给硬件加速数据库的硬件加速***。硬件加速***通过调用服务端RPC协议中的Protocol Buffer协议对RPC消息中的结构体进行反序列化处理,并根据反序列化得到的数据驱动硬件驱动程序,执行相应的数据库访问操作,并在得到访问结果后,将访问结果反馈给用户Java程序。在图3所示的改进方案中通过RPC技术取代JNI技术,解决了图2方案中由JNI带来的问题。但是该改进方案仍旧不完美,实际上相关技术常常会因为Protocol Buffer协议存在序列化、反序列化速率较慢,数据传输前需要打包,数据被接收到后需要解包的问题,导致主机和硬件加速***之间数据传输耗时较长。
针对相关技术存在的上述问题,本公开实施例在图3所示方案的基础上进行了改进,通过采用序列化、反序列化速率更高的数据结构序列化协议代替RPC中的ProtocolBuffer协议,提高了硬件加速数据库访问过程中的数据序列化和反序列化的速率,降低了数据传输时延。
图4是本公开实施例提供的一种硬件加速数据库的访问方法的流程图。如图4所示,本实施例中硬件加速***执行的编程语言与用户Java程序执行的编程语言不同,其中,用户Java程序执行的是Java语句,硬件加速***执行的是如下语句中的一种:C语言语句、C++语句。本实施例提供的方法包括:
步骤401、第一主机获取第一主机中的用户Java程序向JDBC API发送的数据库操作指令。
步骤402、第一主机调用用户端RPC协议中内置的数据结构序列化协议对数据库操作指令中的数据进行序列化处理,生成第一RPC消息。
步骤403、第一主机将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***基于服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作。
本实施例所称的数据库操作指令至少包括如下中的一种:查询指令、***指令、删除指令、数据修改指令,以及用于对数据库***进行设置的指令。
本实施例中,用户端RPC协议和服务端RPC协议中内置的数据结构序列化协议是同一种协议,该数据结构序列化协议的序列化、反序列化速率高于Protocol Buffer协议。比如,在一种实施方式中,本实施例所称的数据结构序列化协议可被具体为如下中的一种:FlatBuffers、AVRO、MessagePack、Hessian、自定义序列化协议。
以FlatBuffers为例,当使用FlatBuffers作为用户端RPC协议和服务端RPC协议的数据结构序列化协议时,需要编写.fbs文件,该.fbs文件是生成RPC协议的必须文件,.fbs文件中定义了RPC消息的格式,传输的数据结构体以及数据类型三类信息。实际中可以根据需要对该三类信息进行具体的设定,比如,在一种可行的设定方式中可以根据JDBC与数据库交互的情况将RPC消息划分为如下几种:建立连接消息,发送“Select”类型语句指令消息,发送“Update”类型语句指令消息,以及其他操作或设置数据库的消息。定义这些消息包括定义消息的名称、采用的数据结构以及发送或接收这些消息所需要的RPC方法。根据上述所写的.fbs文件,使用FlatBuffers的可执行工具flatc,即可生成用于生成用户端RPC协议的java文件和用于生成服务端RPC协议的C/C++的头文件。当然这里虽然是以FlatBuffers协议为例进行的示例说明,但本领域技术人员可以理解的是使用其他数据结构序列化协议替换Protocol Buffer协议的方法与上述FlatBuffers协议的方法是类似的,在这里不在赘述。
示例的,图5是本公开实施例提供的一种硬件加速数据库的访问方法的***架构图。如图5所示,在图5所示的架构中用户Java程序和硬件加速数据库可以同在一个主机上,比如都设置在第一主机上,也可以在不同的主机上,比如可以将用户Java程序装载在第一主机上,将硬件加速数据库装载在第二主机上。硬件加速数据库包括硬件加速***和数据库,其中硬件加速***的硬件驱动程序执行C++程序。用户端RPC协议和服务端RPC协议被具体为gRPC框架下的协议,在用户端RPC协议和服务端RPC协议中采用FlatBuffers协议对数据进行序列化和反序列化处理。
在图5所示的***中第一主机被配置为拦截并获取用户Java程序向JDBC API发送的数据库操作指令。
第一主机拦截到用户Java程序发送的数据库操作指令后,从数据库操作指令中提取用于指示具体操作内容的数据,并调用预先配置的用户端RPC协议,按照协议中重新定义的FlatBuffers序列化方式对数据进行序列化,生成第一RPC消息。然后基于HTTP/2协议传输将第一RPC消息发送给硬件加速数据库的硬件加速***。相应的硬件加速***通过调用服务端RPC协议中的FlatBuffers协议对第一RPC消息中的数据进行反序列化处理,进而根据反序列化得到的数据驱动硬件驱动程序,执行相应的数据库访问操作,比如当数据库操作指令为查询指令时,则根据查询指令中用于指示具体查询内容数据,在数据库中执行数据查询处理。再比如,当数据库操作指令为删除指令时,可以根据删除指令中携带的用于指示具体删除对象的数据在数据库中执行删除操作。
当然,虽然图5是以FlatBuffers协议为例进行的说明,但是并不妨碍本领域技术人员理解,在采用其他数据结构序列化协议时,对硬件加速数据库的访问方法与FlatBuffers的情况类似,比如,图6是本公开实施例提供的又一种硬件加速数据库的访问方法的***架构图,在图6所示***架构中,也可以采用自定义的序列化协议替换用户端RPC协议和服务端RPC协议中原生的Protocol Buffer协议。其中,采用自定义序列化协议实现硬件加速数据库访问的方法可以参照上述采用FlatBuffers协议的情况,在这里不在赘述。
本实施例中,第一主机通过获取用户Java程序向JDBC API发送的数据库操作指令,并采用自身装载的用户端RPC协议中的数据结构序列化协议对获取到的数据库操作指令中的数据进行序列化处理,生成第一RPC消息,通过将第一RPC消息发送给硬件加速数据库的硬件加速***,使得硬件加速***基于服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作,从而实现了第一主机对硬件加速数据库的跨语言访问。并且在本实施例中,用户端RPC协议和服务端RPC协议中的原生Protocol Buffer协议被替换成了另一种序列化速率更高的数据结构序列化协议,因而能够提高数据库访问过程中的数据序列化速度,降低第一主机和硬件加速***之间的数据传输时延。
图7是本公开实施例提供的又一种硬件加速数据库的访问方法的流程图,如图7所示,本实施例提供的方法包括如下步骤:
步骤701、第一主机获取第一主机中的用户Java程序向JDBC API发送的数据库操作指令。
步骤702、第一主机调用用户端RPC协议中内置的数据结构序列化协议对数据库操作指令中的数据进行序列化处理,生成第一RPC消息。
步骤703、第一主机将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***基于服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作。
步骤704、第一主机接收硬件加速***反馈的第二RPC消息,第二RPC消息是硬件加速***依据第一RPC消息执行数据库访问操作后,根据数据结构序列化协议对访问结果进行序列化处理得到的。
步骤705、第一主机基于用户端RPC协议中配置的数据结构序列化协议对第二RPC消息中的数据进行反序列化处理,得到访问结果。
步骤706、第一主机将访问结果发送给用户Java程序。
以FlatBuffers协议为例,图8是本公开实施例提供的又一种硬件加速数据库的访问方法的***架构图。在图8中,硬件加速***在接收到第一RPC消息后,根据第一RPC消息对数据库进行访问操做,在得到访问结果后,采用自身装载的服务端RPC协议中的FlatBuffers协议对访问结果进行序列化处理,生成第二RPC消息,然后基于HTTP/2协议传输将第二RPC消息发送给第一主机,第一主机在接收到RPC消息后,基于自身装载的用户端RPC协议中的FlatBuffers协议从第二RPC消息中反序列化得到硬件加速***的访问结果,从而将该访问结果返回给用户Java程序结束本次数据库访问流程。
在本实施例中图8仅用于示例说明,而不是对本公开的唯一限定。
本实施例中,硬件加速***在获得访问结果后,通过诸如FlatBuffers等序列化速率更高的数据结构序列化协议代替RPC协议中的Protocol Buffer协议对访问结果进行序列化处理,能够提高访问结果的序列化速度,缩短访问结果返回用户Java程序的时间,减小了时间延迟。
图9是本公开实施例提供的又一种硬件加速数据库的访问方法的流程图,如图9所示,该方法包括如下步骤:
步骤901、硬件加速数据库的硬件加速***接收第一主机发送的第一RPC消息。
其中,第一RPC消息为第一主机采用用户端RPC协议中内置的数据结构序列化协议对用户Java程序向JDBC API发送的数据库操作指令中的数据进行序列化处理得到的。
本实施例所称的硬件加速数据库可以被配置在第一主机或者第二主机上。
本实施例所称的硬件加速***执行的编程语言与所述用户Java程序执行的编程语言不同。
步骤902、采用服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理。
本实施例所称的数据结构序列化协议的序列化速率高于Protocol Buffer协议。
在一种可行的实施方式中,本实施例所称的数据结构序列化协议包括如下中的一种:FlatBuffers、AVRO、MessagePack、Hessian。
步骤903、根据反序列化处理的结果执行相应的数据库访问操作。
在一种可行的实施方式中,本实施例在执行数据库访问操作之后,还可以包括如下方法:
基于服务端RPC协议中内置的数据结构序列化协议对访问结果进行序列化处理得到第二RPC消息;将第二RPC消息发送给第一主机,以使第一主机基于所述用户端RPC协议中内置的数据结构序列化协议对第二RPC消息中的数据进行反序列化处理,得到访问结果,并将访问结果发送给用户Java程序。
本实施例的执行方式和有益效果与图4和图7实施例类似,在这里不再赘述。
图10是本公开实施例提供的一种数据库访问装置的结构示意图,如图10所示,装置100包括:
获取模块110,用于获取第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令。
数据序列化模块120,用于调用用户端远程过程调用RPC协议中内置的数据结构序列化协议对数据库操作指令中的数据进行序列化处理,生成第一RPC消息。
第一发送模块130,用于将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***基于服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作。
其中,硬件加速***执行的编程语言与用户Java程序执行的编程语言不同,数据结构序列化协议的序列化速率高于Protocol Buffer协议。
在一种实施方式中,所述数据结构序列化协议包括如下中的一种:FlatBuffers、AVRO、MessagePack、Hessian。
在一种实施方式中,装置100还可以包括:
接收模块,用于接收硬件加速***反馈的第二RPC消息,第二RPC消息是硬件加速***依据第一RPC消息执行数据库访问操作后,根据所述数据结构序列化协议对访问结果进行序列化处理得到的。
数据反序列化模块,用于基于数据结构序列化协议对第二RPC消息中的数据进行反序列化处理,得到访问结果。
第二发送模块,用于将访问结果发送给用户Java程序。
在一种实施方式中,硬件加速数据库设置在第二主机中。
本实施例提供的装置能够执行图4或图7实施例的方法,其执行方式和有益效果类似在这里不在赘述。
图11是本公开实施例提供的一种数据库访问装置的结构示意图,如图11所示,装置200包括:
接收模块210,用于接收第一主机向硬件加速数据库的硬件加速***发送的第一RPC消息,第一RPC消息为第一主机采用用户端RPC协议中内置的数据结构序列化协议对用户Java程序向JDBC API发送的数据库操作指令中的数据进行序列化处理得到的。
数据反序列化模块220,用于采用服务端RPC协议中内置的数据结构序列化协议,对第一RPC消息中的数据进行反序列化处理。
访问执行模块230,用于根据反序列化处理的结果执行相应的数据库访问操作。
其中,硬件加速***执行的编程语言与用户Java程序执行的编程语言不同,数据结构序列化协议的序列化速率高于Protocol Buffer协议。
在一种实施方式中,所述数据结构序列化协议包括如下中的一种:FlatBuffers、AVRO、MessagePack、Hessian。
在一种实施方式中,装置200还可以包括:
数据序列化模块,用于基于服务端RPC协议中内置的数据结构序列化协议对访问结果进行序列化处理得到第二RPC消息。
发送模块,用于将第二RPC消息发送给第一主机,以使第一主机基于用户端RPC协议中内置的数据结构序列化协议对第二RPC消息中的数据进行反序列化处理,得到访问结果,并将访问结果发送给用户Java程序。
在一种实施方式中,硬件加速数据库设置在第二主机中。
本实施例提供的装置能够执行图9实施例的方法,其执行方式和有益效果类似在这里不在赘述。
本公开实施例还提供一种主机包括处理器、存储器以及计算机程序;其中,该计算机程序存储在存储器中,并被配置为由处理器执行以实现图4或图7实施例的方法。
本公开实施例还提供一种硬件加速***包括处理器、存储器以及计算机程序;其中,该计算机程序存储在存储器中,并被配置为由处理器执行以实现图9实施例的方法。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现上述图4-图9中任一实施例的方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (19)
1.一种硬件加速数据库的访问方法,其特征在于,包括:
第一主机获取所述第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令;
调用用户端远程过程调用RPC协议中内置的数据结构序列化协议对所述数据库操作指令中的数据进行序列化处理,生成第一RPC消息;
将所述第一RPC消息发送给硬件加速数据库的硬件加速***,以使所述硬件加速***基于服务端RPC协议中内置的所述数据结构序列化协议,对所述第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作;
其中,所述硬件加速***执行的编程语言与所述用户Java程序执行的编程语言不同,所述数据结构序列化协议的序列化速率高于ProtocolBuffer协议。
2.根据权利要求1所述的方法,其特征在于,所述数据结构序列化协议包括如下中的一种:FlatBuffers、AVRO、MessagePack、Hessian。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述第一RPC消息发送给硬件加速数据库的硬件加速***之后,所述方法还包括:
接收所述硬件加速***反馈的第二RPC消息,所述第二RPC消息是所述硬件加速***依据所述第一RPC消息执行数据库访问操作后,根据所述数据结构序列化协议对访问结果进行序列化处理得到的;
基于所述数据结构序列化协议对所述第二RPC消息中的数据进行反序列化处理,得到所述访问结果;
将所述访问结果发送给所述用户Java程序。
4.根据权利要求1所述的方法,其特征在于,所述硬件加速数据库设置在第二主机中。
5.一种硬件加速数据库的访问方法,其特征在于,包括:
硬件加速数据库的硬件加速***接收第一主机发送的第一RPC消息,所述第一RPC消息为所述第一主机采用用户端RPC协议中内置的数据结构序列化协议对用户Java程序向JDBCAPI发送的数据库操作指令中的数据进行序列化处理得到的;
采用服务端RPC协议中内置的所述数据结构序列化协议,对所述第一RPC消息中的数据进行反序列化处理;
根据所述反序列化处理的结果执行相应的数据库访问操作;
其中,所述硬件加速***执行的编程语言与所述用户Java程序执行的编程语言不同,所述数据结构序列化协议的序列化速率高于Protocol Buffer协议。
6.根据权利要求5所述的方法,其特征在于,所述数据结构序列化协议包括如下中的一种:FlatBuffers、AVRO、MessagePack、Hessian。
7.根据权利要求5或6所述的方法,其特征在于,所述根据所述反序列化处理的结果执行相应的数据库访问操作之后,所述方法还包括:
基于所述服务端RPC协议中内置的所述数据结构序列化协议对访问结果进行序列化处理得到第二RPC消息;
将所述第二RPC消息发送给所述第一主机,以使所述第一主机基于所述用户端RPC协议中内置的所述数据结构序列化协议对所述第二RPC消息中的数据进行反序列化处理,得到所述访问结果,并将所述访问结果发送给所述用户Java程序。
8.根据权利要求5所述的方法,其特征在于,所述硬件加速数据库设置在第二主机中。
9.一种数据库访问装置,其特征在于,包括:
获取模块,用于获取所述第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令;
数据序列化模块,用于调用用户端远程过程调用RPC协议中内置的数据结构序列化协议对所述数据库操作指令中的数据进行序列化处理,生成第一RPC消息;
第一发送模块,用于将所述第一RPC消息发送给硬件加速数据库的硬件加速***,以使所述硬件加速***基于服务端RPC协议中内置的所述数据结构序列化协议,对所述第一RPC消息中的数据进行反序列化处理,并根据反序列化处理结果执行相应的数据库访问操作;
其中,所述硬件加速***执行的编程语言与所述用户Java程序执行的编程语言不同,所述数据结构序列化协议的序列化速率高于Protocol Buffer协议。
10.根据权利要求9所述的装置,其特征在于,所述数据结构序列化协议包括如下中的一种:FlatBuffers、AVRO、MessagePack、Hessian。
11.根据权利要求9或10所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收所述硬件加速***反馈的第二RPC消息,所述第二RPC消息是所述硬件加速***依据所述第一RPC消息执行数据库访问操作后,根据所述数据结构序列化协议对访问结果进行序列化处理得到的;
数据反序列化模块,用于基于所述数据结构序列化协议对所述第二RPC消息中的数据进行反序列化处理,得到所述访问结果;
第二发送模块,用于将所述访问结果发送给所述用户Java程序。
12.根据权利要求9所述的装置,其特征在于,所述硬件加速数据库设置在第二主机中。
13.一种数据库访问装置,其特征在于,包括:
接收模块,用于接收第一主机向硬件加速数据库的硬件加速***发送的第一RPC消息,所述第一RPC消息为所述第一主机采用用户端RPC协议中内置的数据结构序列化协议对用户Java程序向JDBC API发送的数据库操作指令中的数据进行序列化处理得到的;
数据反序列化模块,用于采用服务端RPC协议中内置的所述数据结构序列化协议,对所述第一RPC消息中的数据进行反序列化处理;
访问执行模块,用于根据所述反序列化处理的结果执行相应的数据库访问操作;
其中,所述硬件加速***执行的编程语言与所述用户Java程序执行的编程语言不同,所述数据结构序列化协议的序列化速率高于Protocol Buffer协议。
14.根据权利要求13所述的装置,其特征在于,所述数据结构序列化协议包括如下中的一种:FlatBuffers、AVRO、MessagePack、Hessian。
15.根据权利要求13或14所述的装置,其特征在于,所述装置还包括:
数据序列化模块,用于基于所述服务端RPC协议中内置的所述数据结构序列化协议对访问结果进行序列化处理得到第二RPC消息;
发送模块,用于将所述第二RPC消息发送给所述第一主机,以使所述第一主机基于所述用户端RPC协议中内置的所述数据结构序列化协议对所述第二RPC消息中的数据进行反序列化处理,得到所述访问结果,并将所述访问结果发送给所述用户Java程序。
16.根据权利要求13所述的装置,其特征在于,所述硬件加速数据库设置在第二主机中。
17.一种主机,其特征在于,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现权利要求1-4中任一项所述的方法。
18.一种硬件加速***,其特征在于,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现权利要求5-8中任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010633604.5A CN111984679B (zh) | 2020-07-02 | 2020-07-02 | 硬件加速数据库的访问方法、装置、主机、***及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010633604.5A CN111984679B (zh) | 2020-07-02 | 2020-07-02 | 硬件加速数据库的访问方法、装置、主机、***及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984679A true CN111984679A (zh) | 2020-11-24 |
CN111984679B CN111984679B (zh) | 2021-06-04 |
Family
ID=73438341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010633604.5A Active CN111984679B (zh) | 2020-07-02 | 2020-07-02 | 硬件加速数据库的访问方法、装置、主机、***及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984679B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112633783A (zh) * | 2021-03-10 | 2021-04-09 | 成都卓杭网络科技股份有限公司 | 一种机房运维控制*** |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106648934A (zh) * | 2016-12-27 | 2017-05-10 | 中科天玑数据科技股份有限公司 | 一种Impala与HBase之间的高效数据传输方法及*** |
CN107493286A (zh) * | 2017-08-23 | 2017-12-19 | 杭州安恒信息技术有限公司 | 一种基于安全鉴权的rpc远程过程调用方法 |
CN108805798A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于深度学习框架的细粒度计算通信执行 |
CN109690524A (zh) * | 2016-09-15 | 2019-04-26 | 甲骨文国际公司 | 分布式事件处理***中的数据序列化 |
CN109885389A (zh) * | 2019-02-19 | 2019-06-14 | 山东浪潮云信息技术有限公司 | 一种基于容器的并行深度学习调度训练方法及*** |
US20190188314A1 (en) * | 2017-12-20 | 2019-06-20 | Roku, Inc | Mass insertion into single-threaded databases |
CN110399415A (zh) * | 2019-07-23 | 2019-11-01 | 江苏鼎速网络科技有限公司 | 一种数据反序列化装置及计算终端 |
CN110430222A (zh) * | 2019-09-12 | 2019-11-08 | 北京许继电气有限公司 | 一种基于协议方式的服务接口实现方法 |
CN110915173A (zh) * | 2017-07-10 | 2020-03-24 | 芬基波尔有限责任公司 | 用于计算节点和存储节点的数据处理单元 |
US20200128027A1 (en) * | 2016-08-10 | 2020-04-23 | Netskope, Inc. | Systems and methods of detecting and responding to ransomware on a file system |
CN111131219A (zh) * | 2019-12-19 | 2020-05-08 | 北京轻元科技有限公司 | 基于FlatBuffers的物联网高效数据传输方法 |
-
2020
- 2020-07-02 CN CN202010633604.5A patent/CN111984679B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200128027A1 (en) * | 2016-08-10 | 2020-04-23 | Netskope, Inc. | Systems and methods of detecting and responding to ransomware on a file system |
CN109690524A (zh) * | 2016-09-15 | 2019-04-26 | 甲骨文国际公司 | 分布式事件处理***中的数据序列化 |
CN106648934A (zh) * | 2016-12-27 | 2017-05-10 | 中科天玑数据科技股份有限公司 | 一种Impala与HBase之间的高效数据传输方法及*** |
CN108805798A (zh) * | 2017-05-05 | 2018-11-13 | 英特尔公司 | 用于深度学习框架的细粒度计算通信执行 |
CN110915173A (zh) * | 2017-07-10 | 2020-03-24 | 芬基波尔有限责任公司 | 用于计算节点和存储节点的数据处理单元 |
CN107493286A (zh) * | 2017-08-23 | 2017-12-19 | 杭州安恒信息技术有限公司 | 一种基于安全鉴权的rpc远程过程调用方法 |
US20190188314A1 (en) * | 2017-12-20 | 2019-06-20 | Roku, Inc | Mass insertion into single-threaded databases |
CN109885389A (zh) * | 2019-02-19 | 2019-06-14 | 山东浪潮云信息技术有限公司 | 一种基于容器的并行深度学习调度训练方法及*** |
CN110399415A (zh) * | 2019-07-23 | 2019-11-01 | 江苏鼎速网络科技有限公司 | 一种数据反序列化装置及计算终端 |
CN110430222A (zh) * | 2019-09-12 | 2019-11-08 | 北京许继电气有限公司 | 一种基于协议方式的服务接口实现方法 |
CN111131219A (zh) * | 2019-12-19 | 2020-05-08 | 北京轻元科技有限公司 | 基于FlatBuffers的物联网高效数据传输方法 |
Non-Patent Citations (6)
Title |
---|
BOGDANSIMION 等: "Speeding up Spatial Database Query Execution using GPUs", 《PROCEDIA COMPUTER SCIENCE》 * |
MUHAMMAD ADNA PRADANA 等: "Flatbuffers Implementation on MQTT Publish/Subscribe Communication as Data Delivery Format", 《2019 6TH INTERNATIONAL CONFERENCE ON ELECTRICAL ENGINEERING, COMPUTER SCIENCE AND INFORMATICS (EECSI)》 * |
何嘉俊: "基于机器视觉的运动员长时跟踪***研究", 《中国优秀硕士学位论文全文数据库 社会科学Ⅱ辑》 * |
张可: "《物理网及其数据处理》", 31 July 2018 * |
王彬: "《Java面向对象程序设计》", 31 January 2018 * |
胡波 等: "HBase架构中RPC客户端的通信性能优化", 《计算机科学》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112633783A (zh) * | 2021-03-10 | 2021-04-09 | 成都卓杭网络科技股份有限公司 | 一种机房运维控制*** |
Also Published As
Publication number | Publication date |
---|---|
CN111984679B (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109308224B (zh) | 跨平台数据通信、跨平台数据处理的方法、装置及*** | |
CN111625585B (zh) | 硬件加速数据库的访问方法、装置、主机及存储介质 | |
US5327559A (en) | Remote and batch processing in an object oriented programming system | |
US7346842B1 (en) | Methods and apparatus for incorporating a partial page on a client | |
US7509649B2 (en) | System and method for conversion of generic services' applications into component based applications for devices | |
US20030135543A1 (en) | Web-based system and method | |
US20030016237A1 (en) | System for and method of emulating a database system | |
US20030226110A1 (en) | Method for dynamically generating structured documents | |
CN110502212B (zh) | 一种面向多语言的高并发在线开发支撑方法 | |
WO2017156916A1 (zh) | 数据访问方法和装置 | |
US20060200488A1 (en) | System and method for providing post hoc access to legacy applications and data | |
JPH08339355A (ja) | 分散形システムでの処理タスク実行呼び出し方法及び装置 | |
US10244068B2 (en) | System and method for providing distributed caching in a transactional processing environment | |
US10244067B1 (en) | Web service gateway | |
CN111381983A (zh) | 虚拟试验靶场验证***的轻量级消息中间件***及方法 | |
EP1246059B1 (en) | Dynamic interface aggregation on demand | |
CN114844814B (zh) | 一种压力测试方法及装置 | |
CN111984679B (zh) | 硬件加速数据库的访问方法、装置、主机、***及介质 | |
CN116521181B (zh) | 基于游戏***的脚本数据处理方法、装置、设备及介质 | |
CN106453250B (zh) | 一种大数据rpc的处理方法 | |
CN110555178B (zh) | 数据代理方法及装置 | |
CN115061678A (zh) | 一种基于浏览器代理服务的代码编译方法及客户端 | |
CN115328679A (zh) | 异构函数库的自动化集成方法、计算设备及其*** | |
CN114047939A (zh) | 一种数据处理方法及中间件 | |
JP4669245B2 (ja) | フレームワーク間連携プログラム、フレームワーク間連携方法、フレームワーク間連携装置、およびフレームワーク間連携システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 100094 room 801, 8 / F, building 3, yard 1, 81 Beiqing Road, Haidian District, Beijing Patentee after: YUSUR TECHNOLOGY Co.,Ltd. Address before: Room 715, Institute of computing, Chinese Academy of Sciences, Haidian District, Beijing 100086 Patentee before: YUSUR TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |