CN111625585B - 硬件加速数据库的访问方法、装置、主机及存储介质 - Google Patents
硬件加速数据库的访问方法、装置、主机及存储介质 Download PDFInfo
- Publication number
- CN111625585B CN111625585B CN202010443777.0A CN202010443777A CN111625585B CN 111625585 B CN111625585 B CN 111625585B CN 202010443777 A CN202010443777 A CN 202010443777A CN 111625585 B CN111625585 B CN 111625585B
- Authority
- CN
- China
- Prior art keywords
- database
- hardware acceleration
- rpc
- message
- protocol
- 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.)
- Active
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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本公开涉及硬件加速数据库的访问方法、装置、主机及存储介质,通过采用RPC技术取代相关技术中的JNI技术,能够将用户Java程序发送的数据库操做指令中的数据携带在RPC消息中直接发送给硬件加速数据库,而不用进行编程语言的转换,节省了JNI转换编程语言的时间,提高了数据库的访问效率。并且RPC技术支持远程通信,这样就允许用户Java程序和硬件加速数据库可以设置在不同的主机中,提高了硬件加速数据库布设的灵活性和跨平台访问性能。另外,RPC技术的兼容性较强,容易迁移到其他主机上,且RPC协议的创建使用过程较简单,维护和优化的成本较低。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种硬件加速数据库的访问方法、装置、主机及存储介质。
背景技术
在相关技术中,硬件加速数据库是一种可由硬件加速***独立完成数据库访问任务,不需要主机的中央处理器(central processing unit,简称CPU)过多参与的数据库。当硬件加速***执行的计算机编程语言是除Java以外的其他编程语言(比如C语言、C++)时,主机中的Java程序通常需要调用Java本地接口(Java Native Interface,简称JNI)在Java程序和硬件加速***之间进行编程语言的转换操作,使得Java程序能够访问硬件加速数据库。
但是在相关技术中也存在JNI转换编程语言耗时长,兼容性差,创建使用过程复杂,数据库访问效率较低的问题,并且JNI不支持远程通信,在使用JNI技术时,要求Java程序、JNI和硬件加速数据库必须在同一主机上,这对硬件加速数据库的设置和分布造成了限制。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种硬件加速数据库的访问方法、装置、主机及存储介质。
本公开第一方面提供了一种硬件加速数据库的访问方法,该方法包括:第一主机获取第一主机中的用户Java程序向Java数据库连接(Java Database Connectivity,简称JDBC)的应用程序接口(Application Programming Interface,简称API)发送的数据库操作指令;调用用户端的远程过程调用(Remote Procedure Call,简称RPC)协议,生成数据库操作指令对应的第一RPC消息;将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***依据服务端的RPC协议,对第一RPC消息进行解析,并根据解析结果执行相应的数据库访问操作;其中硬件加速***执行的编程语言与用户Java程序执行的编程语言不同。
本公开第二方面提供了一种数据库访问装置,该装置包括:
指令获取模块,用于获取第一主机中的用户Java程序向JDBC API发送的数据库操作指令;
第一消息生成模块,用于调用用户端的RPC协议,生成数据库操作指令对应的第一RPC消息;
第一消息发送模块,用于将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***依据服务端的RPC协议,对第一RPC消息进行解析,并根据解析结果执行相应的数据库访问操作;
其中硬件加速***执行的编程语言与用户Java程序执行的编程语言不同。
本公开的第三方面提供了一种主机,该主机包括:
处理器;
存储器;以及
计算机程序;
其中,计算机程序存储在存储器中,并被配置为由处理器执行以实现本公开第一方面提供的方法。
本公开的第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行以实现本公开第一方面提供的方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开基于RPC技术良好的跨语言行和跨平台性,采用RPC技术代替相关技术在访问硬件加速数据库时采用的JNI技术,在第一主机获取到用户Java程序向JBDC API发送的数据库操作指令时,采用用户端的RPC协议生成数据库操作指令对应的第一RPC消息,并将第一RPC消息发送给硬件加速数据库的硬件加速***,硬件加速***接收到第一RPC消息后基于服务端的RPC协议对第一RPC消息进行解析,并根据解析结果执行相应的数据库访问操作,从而实现了用户Java程序对硬件加速数据库的跨语言访问。由于本公开中的数据库操作指令可以由第一RPC消息传输给硬件加速数据库,不需要进行编程语言转换处理,因而能够节省相关技术使用JNI技术进行编程语言转换的耗时,提高了数据库的访问效率。并且,RPC技术支持远程通信,在使用RPC技术代替JNI技术后,硬件加速数据库可以采用分布式的方式进行布设,使得用户Java程序可以跨平台访问硬件加速数据库,而不需要像相关技术那样,用户Java程序和硬件加速数据库必须被局限在同一主机上,因而本公开还能提高硬件加速数据库布设的灵活性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的一种用户Java程序调用JDBC访问数据库的***架构示意图;
图2是相关技术提供的一种基于JNI访问硬件加速数据库的***架构示意图;
图3是本公开实施例提供的一种硬件加速数据库的访问方法的流程图;
图4是本公开实施例提供的一种基于RPC协议跨语言访问硬件加速数据库的***框架示意图;
图5是本公开实施例提供的一种基于RPC协议跨语言访问硬件加速数据库的***框架示意图;
图6是本公开实施例提供的一种硬件加速数据库的访问方法的流程图;
图7是本公开实施例提供的一种与硬件加速数据库建立连接的方法的流程图;
图8是本公开实施例提供的一种数据库访问装置的结构示意图;
图9是本公开实施例提供的一种主机的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
为了便于理解本公开的技术方案,首先对本公开涉及的专业技术进行解释:
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允许程序员用其他编程语言来解决问题。
图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技术来实现Java程序与C/C++硬件驱动程序之间的通信。示例的,图2是相关技术提供的一种基于JNI访问硬件加速数据库的***架构示意图。如图2所示,在该***架构中用户Java程序调用JDBC API将数据库操作指令发送给JDBC API,JDBCAPI通过***配置的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创建使用过程复杂,需要生成的文件较多,不易维护和优化。
针对相关技术存在的上述问题,本公开实施例提供了一种硬件加速数据库的访问解决方案。该方案通过采用RPC技术取代相关技术中的JNI技术,能够将用户Java程序发送的数据库操做指令中的数据携带在RPC消息中直接发送给硬件加速数据库,而不用进行编程语言的转换。相对于相关技术,本公开实施例能够节省JNI转换编程语言的时间,提高数据库的访问效率。并且,RPC技术支持远程通信,这样就允许用户Java程序和硬件加速数据库可以设置在不同的主机中,硬件加速数据库可以采用分布式的方式进行布设,提高了硬件加速数据库布设的灵活性和跨平台访问性能。另外,RPC技术的兼容性较强,容易迁移到其他主机上,且RPC协议的创建使用过程较简单,维护和优化的成本较低。
图3是本公开实施例提供的一种硬件加速数据库的访问方法的流程图。如图3所示,本实施例中硬件加速***执行的编程语言与用户Java程序执行的编程语言不同,其中,用户Java程序执行的是Java语句,硬件加速***可以示例性的理解为执行C语言语句或C++语句中的一种。本实施例提供的方法包括:
步骤301、第一主机获取第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令。
步骤302、第一主机调用用户端的远程过程调用RPC协议,生成数据库操作指令对应的第一RPC消息。
步骤303、将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***依据服务端的RPC协议,对第一RPC消息进行解析,并根据解析结果执行相应的数据库访问操作。
示例的,图4是本公开实施例提供的一种基于RPC协议跨语言访问硬件加速数据库的***框架示意图。如图4所示,在图4所示的架构中用户Java程序和硬件加速数据库可以同在一个主机上也可以在不同的主机上,其中用户Java程序装载在第一主机上。硬件加速数据库包括硬件加速***和数据库,其中硬件加速***的硬件驱动程序执行C++程序。用户端的RPC协议和服务端的RPC协议被具体为gRPC框架下的协议,用于序列化/反序列化结构体型数据。用户端的RPC协议和服务端的RPC协议传输的结构体基于protocol buffers预先定义。
图4所示的***中第一主机被设置为拦截并获取用户Java程序调用JDBC发送的数据库操作指令,该数据库操作指令至少包括如下中的一种:查询指令、***指令、删除指令、数据修改指令,以及用于对数据库***进行设置的指令。
第一主机拦截到用户Java程序发送的数据库操作指令后,从数据库操作指令中提取用于指示具体操作内容的数据,并调用预先配置的用户端的gRPC协议,按照协议定义的序列化方式对数据进行序列化,生成第一RPC消息。然后基于HTTP/2协议传输将第一RPC消息发送给硬件加速数据库的硬件加速***。硬件加速***通过调用服务端的gRPC协议对第一RPC消息中的结构体进行反序列化处理,进而根据反序列化得到的数据驱动硬件驱动程序,执行相应的数据库访问操作,比如当数据库操作指令为查询指令时,则根据查询指令中用于指示具体查询内容数据,在数据库中执行数据查询处理。再比如,当数据库操作指令为删除指令时,可以根据删除指令中携带的用于指示具体删除对象的数据在数据库中执行删除操作。当然这里仅为示例说名而不是对本公开的唯一限定。
当然这里需要说明的是:虽然以上仅对用户Java程序发起访问的过程进行了的说明,但是并不妨碍本领域技术人员领会硬件加速***结束数据库反问后采用与发起过程类似的过程向用户Java程序反馈访问结果。
示例的,图5是本公开实施例提供的一种基于RPC协议跨语言访问硬件加速数据库的***框架示意图。如图5所示,在图4示例的基础上,当硬件加速***结束对数据库的访问后,通过调用服务端的gRPC对访问的结果信息进行序列化处理,生成携带有结果信息的第二RPC消息,并基于HTTP/2协议传输将第二RPC消息传输给第一主机,第一主机调用用户端的gRPC对第二RPC消息中的数据进行反序列化处理,第一主机在反序列化得到访问的结果信息后,通过JDBC API将结果信息反馈给用户Java程序。其中,硬件加速***反馈的结果信息中可以包括查询结果或者数据库访问操作影响的数据行数。比如,在一个可行的实施方式中当用户Java程序发送的是查询指令时,硬件加速***可以将查询的结果作为结果信息反馈给用户Java程序,当用户Java程序发送的是查询指令以外的其他指令,比如删除指令、数据修改指令或***指令时,硬件加速***可以将访问操作影响的数据行数作为访问结果携带在结果信息中反馈给用户Java程序,例如,硬件加速***对数据库的数据表当中的5行数据进行了修改、删除或***操作,那么硬件加速***访问操作影响的数据行数作为访问操作的结果信息返回给用户Java程序。当然这里仅为示例说明而不是对本公开的唯一限定。
本实施例通过采用RPC技术取代相关技术中的JNI技术,能够将用户Java程序发送的数据库操做指令中的数据携带在RPC消息中直接发送给硬件加速数据库,而不用进行编程的转换,相对于相关技术,能够节省JNI转换编程语言的时间,提高数据库的访问效率。并且,RPC技术支持远程通信,这样就允许用户Java程序和硬件加速数据库可以设置在不同的主机中,硬件加速数据库可以采用分布式的方式进行布设,提高了硬件加速数据库布设的灵活性和跨平台访问性能。另外,RPC技术的兼容性较强,容易迁移到其他主机上,且RPC协议的创建使用过程较简单,维护和优化的成本较低。
图6是本公开实施例提供的一种硬件加速数据库的访问方法的流程图,如图6所示,本实施例提供的方法包括:
步骤601、第一主机获取第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令。
步骤602、第一主机调用用户端的RPC协议,根据数据库操作指令的类型生成相应类型的第一RPC消息,其中用户端的RPC协议中包括指令类型与RPC消息类型之间的关联关系。
步骤603、第一主机将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***依据服务端的RPC协议,对第一RPC消息进行解析,并根据解析结果执行相应的数据库访问操作,其中,硬件加速***执行的编程语言与用户Java程序执行的编程语言不同。
本实施例中,用户端的RPC协议和服务端的RPC协议可以被示例性的理解为gRPC框架下的协议,用于序列化/反序列化结构体型数据。RPC协议和服务端的RPC协议在使用前需要定义需要传输的结构体,结构体携带在RPC消息中进行传输。本实施例中用户端的RPC协议主要用于传输用户向JDBC API发送的数据库操作指令。
示例的,本实施例可以对用户调用JDBC API所发指令进行分类,构建相应的结构体,不同的结构体定义不同类型的RPC消息进行传输。本实施例中涉及到的各类RPC消息以及各类RPC消息中传输的结构体可以由protocol buffer协议的.proto文件定义。用户端对应的.proto文件可以被编译生成对应的Java文件,用于生成用户端的RPC协议,服务端对应的.proto文件可以被编译生成.h和.c类型的文件,用于生成服务端的RPC协议。
本实施例中,指令类型与RPC消息类型之间的关联关系可以被预先配置到用户端的RPC协议和服务端的RPC协议中,使得用户端的RPC协议和服务端的RPC协议可以按照结构体的结构进行反序列化得到结构体中传输的数据。
在本实施例中指令类型可以被划分为查询指令和非查询指令;其中,非查询指令可以包括删除指令、***指令、数据修改指令,以及用于对数据库***进行设置的指令。第一RPC消息可以根据指令类型划分为两类,其中一类第一RPC消息用于传输查询指令,另一类第一RPC消息用于传输非查询指令。
举例来说,用户在通过JDBC API与硬件加速数据库进行交互的时候,主要会有两类结构化查询语言(Structured Query Language,简称SQL)指令,一类为查询(Select)指令,这类指令会以“Select”开头,并从数据库中取回一个结果集;另一类为非Select指令,比如以“Update”,“Insert”,“Delete”开头的指令,这些指令会返回该条指令所影响的数据行数。针对这两类指令可以分别定义两类第一RPC消息。第一类第一RPC消息会向硬件加速***发送一条含有“Select”的消息,同时等待硬件加速***通过第二RPC消息返回的结果集;第二类RPC消息会向硬件加速***发送一条不含有“Select”的语句,并等待硬件加速***通过第二RPC消息返回指令影响的数据行数。另外与发起过程类似的,硬件加速***在反馈访问的操作结果时,可以根据指令类型的不同采用不同类型的第二RPC消息返回相应的操作结果。
另外值得说明的是,本实施例对数据库操作指令进行分类,采用不同类型的第一RPC消息传输相应类型指令的方式仅是本公开众多实现方式中的一种,并不是本公开的全部实现方式,比如在另一种可能的实施方式中可以不对第一RPC消息进行分类,而是直接在第一RPC消息中携带“Select”、“Update”,“Insert”,“Delete”等信息,以表示指令所指示的具体操作。
本实施例通过对用户Java程序发送的数据库操作指令进行分类,并采用对应类型的第一RPC消息进行传输,使得数据库操作指令的传输更加规范化,便于维护和优化。
图7是本公开实施例提供的一种与硬件加速数据库建立连接的方法的流程图。如图7所示,该方法包括:
步骤701、第一主机获取用户Java程序向JDBC API发送的数据库连接请求。
步骤702、第一主机调用用户端的RPC协议,生成数据库连接请求对应的第三RPC消息。
步骤703、第一主机将第三RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***根据所述第三RPC消息建立连接。
本实施例的执行方式和有益效果与图3和图4所示的实施例类似,在这里不在赘述。
图8是本公开实施例提供的一种数据库访问装置的结构示意图,该装置可以被理解为上述实施例所称的第一主机或者第一主机中的部分功能模块。如图8所示,数据库访问装置80包括:
指令获取模块81,用于获取第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令;
第一消息生成模块82,用于调用用户端的RPC协议,生成数据库操作指令对应的第一RPC消息;
第一消息发送模块83,用于将第一RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***依据服务端的RPC协议,对第一RPC消息进行解析,并根据解析结果执行相应的数据库访问操作;其中硬件加速***执行的编程语言与用户Java程序执行的编程语言不同。
在一种实施方式中,第一消息生成模块82,用于:
调用用户端的RPC协议,根据数据库操作指令的类型生成相应类型的第一RPC消息,其中用户端的RPC协议中包括指令类型与RPC消息类型之间的关联关系。
在一种实施方式中,指令类型包括查询指令和非查询指令;其中,非查询指令包括删除指令、***指令、数据修改指令以及用于对数据库***进行设置的指令。
在一种实施方式中,装置还可以包括:
接收模块,用于接收硬件加速***反馈的第二RPC消息,第二RPC消息中包括硬件加速***依据第一RPC消息执行数据库访问操作得到的结果信息;
解析模块,用于基于用户端的RPC协议,从第二RPC消息中解析得到结果信息;
访问结果反馈模块,用于将结果信息发送给用户Java程序。
在一种实施方式中,结果信息包括查询结果或者数据库访问操作影响的数据行数。
在一种实施方式中,装置还可以包括:
连接请求获取模块,用于获取用户Java程序向JDBC的API发送的数据库连接请求;
第二消息生成模块,用于调用用户端的RPC协议,生成数据库连接请求对应的第三RPC消息;
第二消息发送模块,用于将第三RPC消息发送给硬件加速数据库的硬件加速***,以使硬件加速***根据第三RPC消息建立连接。
在一种实施方式中,用户端的RPC协议和服务端的RPC协议均为基于gRPC框架生成的协议。
在一种实施方式中,硬件加速数据库设置在第二主机或者第一主机中。
在一种实施方式中,硬件加速***执行的编程语言包括如下中的一种:C语言、C++。
本实施例提供的装置能够执行图3、图6、图7中任一实施例所示的方法,其执行方式和有益效果类似,在这里不在赘述。
图9是本公开实施例提供的一种主机的结构示意图,如图9所示,主机90包括:处理器91;
存储器92;以及
计算机程序921;
其中,所述计算机程序921存储在所述存储器92中,并被配置为由所述处理器91执行以实现上述实施例的方法。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例的方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (18)
1.一种硬件加速数据库的访问方法,其特征在于,包括:
第一主机获取所述第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令;
调用用户端的远程过程调用RPC协议,生成所述数据库操作指令对应的第一RPC消息;
将所述第一RPC消息发送给硬件加速数据库的硬件加速***,以使所述硬件加速***依据服务端的RPC协议,对所述第一RPC消息进行解析,并根据解析结果执行相应的数据库访问操作;其中,所述硬件加速数据库包括所述硬件加速***和数据库,所述硬件加速***独立计算,并独立完成对所述数据库的所有访问任务;
其中所述硬件加速***执行的编程语言与所述用户Java程序执行的编程语言不同;
所述调用用户端的远程过程调用RPC协议,生成所述数据库操作指令对应的第一RPC消息,包括:
调用用户端的RPC协议,根据所述数据库操作指令的类型生成相应类型的第一RPC消息,其中所述用户端的RPC协议中包括指令类型与RPC消息类型之间的关联关系。
2.根据权利要求1所述的方法,其特征在于,所述指令类型包括查询指令和非查询指令;
其中,所述非查询指令至少包括如下指令中的一种:删除指令、***指令、数据修改指令以及用于对数据库***进行设置的指令。
3.根据权利要求1所述的方法,其特征在于,所述第一主机将所述第一RPC消息发送给硬件加速数据库的硬件加速***之后,所述方法还包括:
接收所述硬件加速***反馈的第二RPC消息,所述第二RPC消息中包括所述硬件加速***依据所述第一RPC消息执行数据库访问操作得到的结果信息;
基于所述用户端的RPC协议,从所述第二RPC消息中解析得到所述结果信息;
将所述结果信息发送给所述用户Java程序。
4.根据权利要求3所述的方法,其特征在于,所述结果信息包括查询结果或者所述数据库访问操作影响的数据行数。
5.根据权利要求1所述的方法,其特征在于,所述第一主机获取所述第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令之前,所述方法还包括:
获取用户Java程序向JDBC API发送的数据库连接请求;
调用用户端的RPC协议,生成所述数据库连接请求对应的第三RPC消息;
将所述第三RPC消息发送给所述硬件加速数据库的硬件加速***,以使所述硬件加速***根据所述第三RPC消息建立连接。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述用户端的RPC协议和所述服务端的RPC协议均为基于gRPC框架生成的协议。
7.根据权利要求1-5中任一项所述的方法,其特征在于,所述硬件加速数据库设置在第二主机或者所述第一主机中。
8.根据权利要求1-5中任一项所述的方法,其特征在于,所述硬件加速***执行的编程语言包括如下中的一种:C语言、C++。
9.一种数据库访问装置,其特征在于,包括:
指令获取模块,用于获取第一主机中的用户Java程序向Java数据库连接JDBC的应用程序接口API发送的数据库操作指令;
第一消息生成模块,用于调用用户端的RPC协议,生成所述数据库操作指令对应的第一RPC消息;
第一消息发送模块,用于将所述第一RPC消息发送给硬件加速数据库的硬件加速***,以使所述硬件加速***依据服务端的RPC协议,对所述第一RPC消息进行解析,并根据解析结果执行相应的数据库访问操作;其中,所述硬件加速数据库包括所述硬件加速***和数据库,所述硬件加速***独立计算,并独立完成对所述数据库的所有访问任务;
其中所述硬件加速***执行的编程语言与所述Java程序执行的编程语言不同;
所述第一消息生成模块,用于:
调用用户端的RPC协议,根据所述数据库操作指令的类型生成相应类型的第一RPC消息,其中所述用户端的RPC协议中包括指令类型与RPC消息类型之间的关联关系。
10.根据权利要求9所述的装置,其特征在于,所述指令类型包括查询指令和非查询指令;
其中,所述非查询指令至少包括如下指令中的一种:删除指令、***指令、数据修改指令以及用于对数据库***进行设置的指令。
11.根据权利要求9所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收所述硬件加速***反馈的第二RPC消息,所述第二RPC消息中包括所述硬件加速***依据所述第一RPC消息执行数据库访问操作得到的结果信息;
解析模块,用于基于所述用户端的RPC协议,从所述第二RPC消息中解析得到所述结果信息;
访问结果反馈模块,用于将所述结果信息发送给所述用户Java程序。
12.根据权利要求11所述的装置,其特征在于,所述结果信息包括查询结果或者所述数据库访问操作影响的数据行数。
13.根据权利要求9所述的装置,其特征在于,所述装置还包括:
连接请求获取模块,用于获取用户Java程序向JDBC API发送的数据库连接请求;
第二消息生成模块,用于调用用户端的RPC协议,生成所述数据库连接请求对应的第三RPC消息;
第二消息发送模块,用于将所述第三RPC消息发送给所述硬件加速数据库的硬件加速***,以使所述硬件加速***根据所述第三RPC消息建立连接。
14.根据权利要求9-13中任一项所述的装置,其特征在于,所述用户端的RPC协议和所述服务端的RPC协议均为基于gRPC框架生成的协议。
15.根据权利要求9-13中任一项所述的装置,其特征在于,所述硬件加速数据库设置在第二主机或者所述第一主机中。
16.根据权利要求9-13中任一项所述的装置,其特征在于,所述硬件加速***执行的编程语言包括如下中的一种:C语言、C++。
17.一种主机,其特征在于,包括:
处理器;
存储器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现权利要求1-8中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010443777.0A CN111625585B (zh) | 2020-05-22 | 2020-05-22 | 硬件加速数据库的访问方法、装置、主机及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010443777.0A CN111625585B (zh) | 2020-05-22 | 2020-05-22 | 硬件加速数据库的访问方法、装置、主机及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111625585A CN111625585A (zh) | 2020-09-04 |
CN111625585B true CN111625585B (zh) | 2021-08-31 |
Family
ID=72271085
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010443777.0A Active CN111625585B (zh) | 2020-05-22 | 2020-05-22 | 硬件加速数据库的访问方法、装置、主机及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625585B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112633783A (zh) * | 2021-03-10 | 2021-04-09 | 成都卓杭网络科技股份有限公司 | 一种机房运维控制*** |
CN113326033B (zh) * | 2021-06-09 | 2023-08-11 | 北京八分量信息科技有限公司 | 一种带有多种语言API的key-value存储*** |
CN113448967B (zh) * | 2021-07-20 | 2022-02-08 | 威讯柏睿数据科技(北京)有限公司 | 一种对数据库操作进行加速的方法和装置 |
CN113886481B (zh) * | 2021-12-06 | 2022-03-04 | 北京宇信科技集团股份有限公司 | 一种数据库访问方法和*** |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8458654B2 (en) * | 2008-10-22 | 2013-06-04 | International Business Machines Corporation | Identifying impact of database changes on an application |
CN106897322A (zh) * | 2015-12-21 | 2017-06-27 | ***通信集团山西有限公司 | 一种数据库和文件***的访问方法和装置 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1746844A (zh) * | 2005-09-29 | 2006-03-15 | 浪潮电子信息产业股份有限公司 | 一种跨操作***平台的机群***监控和管理方法 |
US8572251B2 (en) * | 2008-11-26 | 2013-10-29 | Microsoft Corporation | Hardware acceleration for remote desktop protocol |
CN102331928A (zh) * | 2011-06-24 | 2012-01-25 | 浙大网新科技股份有限公司 | 一种源码级兼容混合api的方法 |
US9930103B2 (en) * | 2015-04-08 | 2018-03-27 | Amazon Technologies, Inc. | Endpoint management system providing an application programming interface proxy service |
CN105357258B (zh) * | 2015-09-28 | 2020-06-26 | 华为技术有限公司 | 一种加速管理节点、加速节点、客户端及方法 |
CN106648934B (zh) * | 2016-12-27 | 2019-12-03 | 中国科学院计算技术研究所 | 一种Impala与HBase之间的高效数据传输方法及*** |
CN110300082B (zh) * | 2018-03-21 | 2022-03-08 | 腾讯科技(深圳)有限公司 | 一种接口生成方法、装置及存储介质 |
CN108762947A (zh) * | 2018-05-16 | 2018-11-06 | 武汉微创光电股份有限公司 | 一种分布式***远程调用方法、装置及*** |
CN110515948A (zh) * | 2019-08-23 | 2019-11-29 | 苏州浪潮智能科技有限公司 | 一种数据查询方法、***、电子设备及存储介质 |
CN110990402B (zh) * | 2019-11-26 | 2020-11-13 | 中科驭数(北京)科技有限公司 | 由行存储到列存储的格式转化方法、查询方法及装置 |
-
2020
- 2020-05-22 CN CN202010443777.0A patent/CN111625585B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8458654B2 (en) * | 2008-10-22 | 2013-06-04 | International Business Machines Corporation | Identifying impact of database changes on an application |
CN106897322A (zh) * | 2015-12-21 | 2017-06-27 | ***通信集团山西有限公司 | 一种数据库和文件***的访问方法和装置 |
Non-Patent Citations (2)
Title |
---|
"Replication for Predictability in a Java RPC Framework";Jianwei Tu等;《2015 IEEE International Conference on Autonomic Computing》;20150917;第1-2页 * |
"基于机器视觉的运动员长时跟踪***研究";何嘉俊;《中国优秀硕士学位论文全文数据库 社会科学II辑》;20200215(第02期);第27-48页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111625585A (zh) | 2020-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625585B (zh) | 硬件加速数据库的访问方法、装置、主机及存储介质 | |
CN109308224B (zh) | 跨平台数据通信、跨平台数据处理的方法、装置及*** | |
JP3546394B2 (ja) | ネットワークを介してリモート・プロシージャ・コール及びレスポンスを転送するための方法及びシステム | |
US5327559A (en) | Remote and batch processing in an object oriented programming system | |
CN107992624B (zh) | 解析序列化数据的方法、装置、存储介质及终端设备 | |
US5953514A (en) | Method and apparatus for transparent remote execution of commands | |
US8407237B1 (en) | System and method of connecting legacy database applications and new database systems | |
CN111897638B (zh) | 分布式任务调度方法及*** | |
US20030016237A1 (en) | System for and method of emulating a database system | |
JPH07281974A (ja) | ネットワーク内のコンピュータ間でデータを交換するための通信システム | |
CN110196888B (zh) | 基于Hadoop的数据更新方法、装置、***及介质 | |
US20030226110A1 (en) | Method for dynamically generating structured documents | |
WO2018035799A1 (zh) | 数据查询方法、应用和数据库服务器、中间件及*** | |
CN101436148A (zh) | 集成客户端及进行桌面应用与网络web应用交互的方法 | |
CN110955674B (zh) | 基于java服务的异步导出方法及组件 | |
CN111026931A (zh) | 一种数据查询方法、装置、设备及介质 | |
WO2023124543A1 (zh) | 用于大数据的数据处理方法和数据处理装置 | |
CN113391791A (zh) | 一种数据处理方法、装置及存储介质 | |
WO2021259290A1 (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN111984679B (zh) | 硬件加速数据库的访问方法、装置、主机、***及介质 | |
US9690577B1 (en) | Legacy applications as web services | |
CN111752916B (zh) | 数据采集方法及装置、计算机可读存储介质、电子设备 | |
CN110555178B (zh) | 数据代理方法及装置 | |
Eisenhauer et al. | DataExchange: high performance communications in distributed laboratories | |
CN113094429B (zh) | 数据处理方法、数据查询方法、计算机设备和存储介质 |
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 |