CN113407562A - 分布式数据库系统的通信方法及装置 - Google Patents
分布式数据库系统的通信方法及装置 Download PDFInfo
- Publication number
- CN113407562A CN113407562A CN202110623155.0A CN202110623155A CN113407562A CN 113407562 A CN113407562 A CN 113407562A CN 202110623155 A CN202110623155 A CN 202110623155A CN 113407562 A CN113407562 A CN 113407562A
- Authority
- CN
- China
- Prior art keywords
- sql statement
- storage node
- indicating
- information
- response information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000004891 communication Methods 0.000 title claims abstract description 39
- 230000004044 response Effects 0.000 claims description 110
- 230000015654 memory Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 14
- 230000003993 interaction Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
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/242—Query formulation
- G06F16/2433—Query languages
-
- 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/2455—Query execution
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种分布式数据库系统的通信方法及装置,其中,分布式数据库系统包括:计算节点和存储节点;在分布式数据库系统中,计算节点接收到客户端发送的事务请求时,从连接池中获取目标连接;计算节点通过目标连接,向存储节点发送第一信息,以使存储节点执行第一信息的SQL语句;其中,所述第一信息包括:用于指示存储节点初始化数据库的第一SQL语句、以及用于指示存储节点设置目标连接的连接状态的第二SQL语句。本公开提供的方法,有效减少了计算节点与存储节点之间的网络交互次数,从而减小了网络开销,提高了分布式数据库系统的性能。
Description
技术领域
本公开涉及通信技术领域,尤其涉及一种分布式数据库的通信方法及装置。
背景技术
分布式数据库系统由于其体积小、速度快、总体拥有成本低等独特优势被广泛应用。例如,mySQL是分布式数据库系统的一种,企业常常采用mySQL搭建网站数据库。
分布式数据库系统包括:计算节点和存储节点;其中,计算节点负责解析以及并行计算,存储节点负责存储数据。现有技术中,当计算节点收到客户端发送的事务请求后,计算节点从连接池中取出一个连接,并对取出的连接进行配置,之后,再执行事务请求,并向客户端返回处理结果,这过程需要计算节点与存储节点进行多次网络交互,网络开销较大,分布式数据库系统的性能较差。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种分布式数据库的通信方法及装置。
第一方面,本公开提供了一种分布式数据库系统的通信方法,所述分布式数据库系统包括:计算节点和存储节点,所述方法应用于所述计算节点;其中,该方法包括:
所述计算节点获取客户端发送的事务请求;
所述计算节点根据所述事务请求从连接池中取出目标连接;
所述计算节点通过所述目标连接,向所述存储节点发送第一信息,以使所述存储节点执行所述第一信息包括的结构化查询语言(Structured Query Language,SQL)语句;其中,所述第一信息包括:第一SQL语句和第二SQL语句;所述第一SQL语句用于指示所述存储节点初始化数据库;所述第二SQL语句用于指示所述存储节点设置所述目标连接的连接状态。
在一些可能的设计中,所述第一信息还包括:第三SQL语句;所述第三SQL语句为所述事务请求的SQL语句。
在一些可能的设计中,所述方法还包括:
所述计算节点接收所述存储节点返回的第一响应信息;
其中,所述第一响应信息用于指示所述存储节点成功执行所述第一SQL语句和所述第二SQL语句;或者,
所述第一响应信息用于指示所述存储节点执行所述第一SQL语句时发生错误;或者,
所述第一响应信息用于指示所述存储节点执行所述第二SQL语句时发生错误。
在一些可能的设计中,所述方法还包括:
所述计算节点接收所述存储节点返回的第二响应信息;
其中,所述第二响应信息用于指示所述存储节点成功执行所述第一SQL语句、所述第二SQL语句以及所述第三SQL语句;或者,
所述第二响应信息用于指示所述存储节点执行所述第一SQL语句时发生错误;或者,
所述第二响应信息用于指示所述存储节点执行所述第二SQL语句时发生错误;或者,
所述第二响应信息用于指示所述存储节点执行所述第三SQL语句时发生错误。
第二方面,本公开提供一种分布式数据库系统的通信方法,所述分布式数据库系统包括:计算节点和存储节点,所述方法应用于所述存储节点;其中,该方法包括:
所述存储节点接收所述计算节点发送的第一信息;其中,所述第一信息包括:第一SQL语句和第二SQL语句;所述第一SQL语句用于指示所述存储节点初始化数据库;所述第二SQL语句用于指示所述存储节点设置所述目标连接的连接状态;
所述存储节点执行所述第一信息包括的SQL语句。
在一些可能的设计中,所述第一信息还包括:第三SQL语句;所述第三SQL语句为事务请求的SQL语句;其中,所述事务请求为客户端发起的请求。
在一些可能的设计中,所述方法还包括:
所述存储节点向所述计算节点发送第一响应信息;
其中,所述第一响应信息用于指示所述存储节点成功执行所述第一SQL语句和所述第二SQL语句;或者,
所述第一响应信息用于指示所述存储节点执行所述第一SQL语句时发生错误;或者,
所述第一响应信息用于指示所述存储节点执行所述第二SQL语句时发生错误。
在一些可能的设计中,所述方法还包括:
所述存储节点向所述计算节点发送第二响应信息;
其中,所述第二响应信息用于指示所述存储节点成功执行所述第一SQL语句、所述第二SQL语句以及所述第三SQL语句;或者,
所述第二响应信息用于指示所述存储节点所述第一SQL语句时发生错误;或者,
所述第二响应信息用于指示所述存储节点执行所述第二SQL语句时发生错误;或者,
所述第二响应信息用于指示所述存储节点执行所述第三SQL语句时发生错误。
第三方面,本公开提供一种分布式数据库系统的通信装置,其中,所述分布式数据库系统包括:计算节点和存储节点;所述通信装置设置在所述计算节点,所述通信装置包括:
收发模块,用于获取客户端发送的事务请求;
处理模块,用于根据所述事务请求从连接池中取出目标连接;
所述处理模块,还用于通过所述目标连接,向所述存储节点发送第一信息,以使所述存储节点执行所述第一信息包括的SQL语句;其中,所述第一信息包括:第一SQL语句和第二SQL语句;所述第一SQL语句用于指示所述存储节点初始化数据库;所述第二SQL语句用于指示所述存储节点设置所述目标连接的连接状态。
在一些可能的设计中,所述第一信息还包括:第三SQL语句;所述第三SQL语句为事务请求的SQL语句。
第四方面,本公开提供一种分布式数据库系统的通信装置,其中,所述分布式数据库系统包括:计算节点和存储节点,所述通信装置设置在所述存储节点,所述通信装置包括:
收发模块,用于接收所述计算节点发送的第一信息;其中,所述第一信息包括:第一SQL语句和第二SQL语句;所述第一SQL语句用于指示所述存储节点初始化数据库;所述第二SQL语句用于指示所述存储节点设置所述目标连接的连接状态;
处理模块,用于执行所述第一信息包括的SQL语句。
在一些可能的设计中,所述第一信息还包括:第三SQL语句;所述第三SQL语句为事务请求的SQL语句;其中,所述事务请求为客户端发起的请求。
第五方面,本公开提供一种电子设备,包括:存储器、处理器以及计算机程序;
所述存储器被配置为存储所述计算机程序;
所述处理器被配置为执行所述计算机程序,以实现如第一方面任一项所述的方法,或者第二方面任一项所述的方法。
第六方面,本公开提供一种可读存储介质,包括:计算机程序;所述计算机程序被电子设备的至少一个处理器执行时,实现如第一方面任一项所述的方法,或者第二方面任一项所述的方法。
第七方面,本公开提供一种程序产品,包括:所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,所述电子设备的至少一个处理器可以从所述可读存储介质中读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得所述电子设备实现如第一方面任一项所述的方法,或者第二方面任一项所述的方法。
本公开提供一种分布式数据库系统的通信方法及装置,其中,分布式数据库中包括:计算节点和存储节点;在分布式数据库系统中,计算节点接收到客户端发送的事务请求时,从连接池中获取目标连接;并通过所述目标连接,向存储节点发送第一信息,以使存储节点执行第一信息中的SQL语句;其中,第一信息包括:用于指示存储节点初始化数据库的第一SQL语句、以及用于指示存储节点设置目标连接的连接状态的第二SQL语句。
本公开提供的方法,计算节点向存储节点发送包括第一SQL语句和第二SQL语句的第一信息,以使存储节点执行第一信息包括的SQL语句;与现有技术中,计算机节点单次只能发送一条SQL语句,且计算节点需要收到存储节点返回的响应信息后才能发送下一条SQL语句的方式相比较,本方案有效减少了计算节点与存储节点之间的网络交互次数,从而减小了网络开销,提高了分布式数据库系统的性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开一实施例提供的应用场景示意图;
图2为本公开一实施例提供的分布式数据库系统的通信方法的流程图;
图3为本公开一实施例提供的分布式数据库系统的通信方法的流程图;
图4为本公开另一实施例提供的分布式数据库系统的通信方法的流程图;
图5为本公开另一实施例提供的分布式数据库系统的通信方法的流程图;
图6为本公开一实施例提供的分布式数据库系统的通信装置的结构示意图;
图7为本公开另一实施例他供的分布式数据库系统的通信装置的结构示意图;
图8为本公开一实施例提供的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1为本公开一实施例提供的应用场景示意图。参照图1所示,该场景,包括:客户端101、计算节点102和存储节点103。
在图1所示的场景中,分布式数据库系统可以包括:计算节点102和存储节点103。
应理解,在实际应用中,分布式数据库系统中可以包括更多的计算节点以及存储节点。图1中仅示例性地示出了分布式数据库系统包括1个计算节点102以及3个存储节点103。
在分布式数据库系统中,计算节点102负责解析客户端101发送的事务请求,并进行相关的计算。存储节点103用于存储数据。
示例性地,计算节点102可以为一个服务器,或者,服务器集群,或者还可以为云服务器。计算节点也可以称为代理节点、中间节点、代理服务器等其他名称,本公开实施例对此不作限制。
存储节点103可以为数据库或者数据库组,存储节点103可以为具有存储功能的电子设备实体,本公开实施例中对于电子设备实体的具体类型不作限制。例如,存储节点可以为笔记本电脑、服务器、云服务器、服务器集群等电子设备;存储节点也可以为MySQL(关系型数据库)。
上述图1所示的应用场景仅为示例,在实际应用中,分布式数据库系统的结构可能更加庞大,计算节点以及存储节点的数量可能更多。
接下来,通过几个具体实施例对本公开提供的方法进行详细介绍。
图2为本公开一实施例提供的分布式数据库系统的通信方法的流程图;参照图2所示,本实施例提供的方法包括:
S201、计算节点接收客户端发送的事务请求。
其中,事务请求可以为查询(select)请求、更新(update)请求、插入(insert)请求、替换(replace)请求中的任一种。
本方案中,事务请求可以采用SQL语句,或者,也可以采用其他语言。应理解,若事务请求采用SQL语句,计算节点进行解析时,无需进行格式转换,这样能够提高计算节点的处理效率;若事务请求采用其他语言,例如,JSON语言,则计算节点在解析时需要将JSON语言转换成SQL语句。
另外,客户端发送的事务请求可以是请求针对一个存储节点进行操作,也可以请求针对多个存储节点进行操作。
示例性地,客户端要删除一些数据A,数据A包括数据a1、数据a2以及数据a3,其中,数据a1和数据a2存放在存储节点S1,数据a3存放于存储节点S2中;要删除数据a1、数据a2以及数据a3,则需要同时针对存储节点S1和存储节点S2进行操作。
S202、计算节点根据事务请求,从连接池中获取目标连接。
连接池是创建和管理一个连接的缓冲池的技术,连接池中可以包括一个或多个已经建立好的连接。计算节点根据事务请求,从连接池中获取一个空闲状态的连接,获取的该空闲状态的连接即为目标连接。
其中,计算节点可以随机地从连接池中获取一个空闲状态的连接,也可以按照预设的连接调度策略,从空闲状态的连接中确定目标连接。
本实施例对于获取目标连接的实现方式不作限制。
S203、计算节点通过目标连接向存储节点发送第一信息;其中,所述第一信息包括:用于指示存储节点初始化数据库的第一SQL语句、以及用于指示存储节点设置所述目标连接的连接状态的第二SQL语句。
相应地,存储节点接收第一信息。
其中,设置目标连接的连接状态可以包括但不限于设置目标链接的字符编码状态、目标连接对应的用户设置的会话级别的用户变量和系统变量等等。
若事务请求针对一个存储节点,则计算节点向该一个存储节点发送包括第一SQL语句和第二SQL语句的第一信息。若事务请求针对多个存储节点,则计算节点向多个存储节点分别发送包括第一SQL语句和第二SQL语句的第一信息。
本实施例提供的方法,应用于分布式数据库系统中的计算节点,当计算节点接收到客户端发送的事务请求时,从连接池中获取目标连接;并通过所述目标连接,向存储节点发送第一信息,以使存储节点执行第一信息中的SQL语句;其中,第一信息包括:用于指示存储节点初始化数据库的第一SQL语句、以及用于指示存储节点设置目标连接的连接状态的第二SQL语句。
本实施例提供的方法,计算节点向存储节点发送包括第一SQL语句和第二SQL语句的第一信息,以使存储节点执行第一信息包括的多条SQL语句;与现有技术中,计算机节点单次只能发送一条SQL语句,且计算节点需要收到存储节点返回的响应信息后才能发送下一条SQL语句的方式相比较,本方案有效减少了计算节点与存储节点之间的网络交互次数,从而减小了网络开销,提高了分布式数据库系统的性能。
图3为本公开另一实施例提供的分布式数据库系统的通信方法的流程图。本实施例在图2所示实施例的基础上,S203之后,还可以包括:
S204、存储节点执行第一信息包括的SQL语句。
具体地,存储节点按照第一预设顺序执行第一信息包括的SQL语句。其中,第一预设顺序为先执行第一SQL语句,再执行第二SQL语句的顺序。
也就是说,存储节点需要先执行初始化数据库;初始化数据库完成之后,再设置目标连接的连接状态。
S205、存储节点向计算节点发送第一响应信息。
示例性地,若存储节点成功执行第一SQL语句以及第二SQL语句,则存储节点向计算节点发送第一响应信息,此时,第一响应信息用于指示存储节点已成功进行初始化数据库以及连接状态设置。
可选地,第一响应信息示例性的可以包括:成功执行初始化数据库对应的第一事件代码、以及成功执行连接状态设置对应的第二事件代码。
可选地,第一响应信息可以包括:一个事件代码,该事件代码即表示成功执行初始化数据库以及成功执行连接状态设置。计算节点根据一个事件代码即可获得上述信息,这样的实现方式能够减小第二响应信息的数据量,降低网络开销。
若存储节点执行上述第一SQL语句时发生错误,则存储节点向计算节点发送第一响应信息,此时,第一响应信息用于指示存储节点执行第一SQL语句时发生错误。
可选地,第一响应信息可以包括:用于指示存储节点执行第一SQL语句发生错误的第一事件代码。
若存储节点成功执行了第一SQL语句,当执行上述第二SQL语句时发生错误,则存储节点向计算节点发送第一响应信息,此时,第一响应信息用于指示存储节点执行第二SQL语句时发生错误。
可选地,第一响应信息可以包括:用于指示存储节点执行第二SQL语句发生错误的第二事件代码。
本实施例提供的方法,由于存储节点向计算节点返回第一响应信息的方式较为灵活,与现有技术中储节点每执行一条SQL语句便向计算节点返回一个响应信息的方式相比,本实施例中的方案有效减少了存储节点与计算节点的网络交互次数,降低了网络开销,提高了分布式数据库系统的性能。
可选地,在图3所示实施例的基础上,S204之后,还可以包括:
S206、计算节点向存储节点发送第三SQL语句;其中,第三SQL语句为所述事务请求的SQL语句。相应地,存储节点接收计算节点发送的第三SQL语句。
S207、存储节点执行第三SQL语句。
S208、存储节点向计算节点发送第三响应信息。相应地,计算节点接收存储节点发送的第三响应信息。
具体地,当计算节点接收存储节点发送的第一响应信息,并根据第一响应信息确定存储节点成功执行初始化数据库以及连接状态设置时,计算节点再向存储节点发送第三SQL语句。
存储节点执行上述第三SQL语句,若成功执行,则存储节点向计算节点返回第三响应信息,此时,第三响应信息用于指示存储节点成功执行上述第三SQL语句。示例性地,假设事务请求为查询请求,存储节点执行第三SQL语句,则第三响应信息包括查询结果;假设事务请求为插入请求,存储节点成功执行第三SQL语句,则第三响应信息包括用于指示存储节点成功插入数据的信息。
若存储节点执行第三SQL语句时出现错误,则存储节点向计算节点返回第三响应信息,第三响应信息包括用于指示存储节点执行第三SQL语句时出现错误的信息;示例性地,第三响应信息可以包括用于指示存储节点执行第三SQL语句时出现错误的第三事件代码。
可选地,S208之后还可以包括:
S209、计算节点向客户端返回第三响应信息。
计算节点通过向客户端返回第三响应信息,以使客户端能够及时获知事务请求的执行结果。
可选地,S209之后还可以包括:
S210、重置所述目标连接的连接状态。
由于目标连接在执行完第三SQL语句之后,需要将目标连接重新放回连接池中,以便连接复用,提高连接的利用率。
若目标连接为进行重置就直接放回连接池,则可能导致连接复用时,由于连接状态错误,进而导致客户端出现乱码现象。因此,本步骤通过重置目标连接的连接状态,之后,再放回连接池中,在连接复用时,再重新设置其连接状态即可,有效避免连接复用时出现错误现象。另外,本步骤是在计算节点将处理结果返回给客户端之后执行,能够保证客户端及时收到事务请求的执行结果。
图4为本公开另一实施例提供的分布式数据库系统的通信方法的流程图。参照图4所示,本实施例的方法包括:
S301、计算节点接收客户端发送的事务请求。
S302、计算节点根据事务请求,从连接池中获取目标连接。
本实施例中,步骤S301、S302分别与图2所示实施例中步骤S201、S202类似,可参照图2所示实施例的详细描述,简明起见,此处不再赘述。
S303、计算节点通过目标连接向存储节点发送第一信息;其中,所述第一信息包括:用于指示存储节点初始化数据库的第一SQL语句、用于指示存储节点设置所述目标连接的连接状态的第二SQL语句、以及事务请求的第三SQL语句。
若事务请求针对一个存储节点,则计算节点向该一个存储节点发送包括第一SQL语句、第二SQL语句以及第三SQL语句的第一信息。若事务请求针对多个存储节点,则计算节点向多个存储节点分别发送包括第一SQL语句、第二SQL语句以及第三SQL语句的第一信息。
本实施例提供的方法,在分布式数据库系统中,计算节点接收到客户端发送的事务请求时,从连接池中获取目标连接;并通过目标连接,向存储节点发送第一信息;其中,第一信息包括:用于指示存储节点初始化数据库的第一SQL语句、用于指示存储节点设置目标连接的连接状态的第二SQL语句、以及事务请求的第三SQL语句。
本实施例提供的方法,计算节点向存储节点发送至少包括第一SQL语句和第二SQL语句的第一信息,以使存储节点执行第一信息包括的多条SQL语句;与现有技术中,计算机节点单次只能发送一条SQL语句,且计算节点需要收到存储节点返回的响应信息后才能发送下一条SQL语句的方式相比较,本方案有效减少了计算节点与存储节点之间的网络交互次数,从而减小了网络开销,提高了分布式数据库系统的性能。
图5为本公开另一实施例提供的分布式数据库系统的通信方法的流程图。参照图5所示,本实施例提供的方法在图4所示实施例的基础上,S303之后,还包括:
S304、存储节点执行第一信息包括的SQL语句。
具体地,存储节点按照第二预设顺序执行第一信息包括的SQL语句。其中,第二预设顺序为先执行第一SQL语句,再执行第二SQL语句,最后执行第三SQL语句的顺序。
也就是说,存储节点需要先执行初始化数据库;之后,初始化数据库完成之后,再设置目标连接的连接状态;目标连接状态设置完成后,再执行客户端的事务请求。
S305、存储节点向计算节点发送第二响应信息。相应地,计算节点接收第二响应信息。
示例性地,若存储节点成功执行第一SQL语句、第二SQL语句以及第三SQL语句,则存储节点向计算节点发送第二响应信息,此时,第二响应信息用于指示存储节点已成功执行初始化数据库、连接状态设置以及事务请求。
可选地,第二响应信息示例性地可以包括:成功执行初始化数据库对应的第一事件代码、成功执行连接状态设置对应的第二事件代码以及事务请求对应的执行结果。
可选地,第二响应信息可以包括:事务请求对应的执行结果。由于存储节点需要在成功执行了初始化数据库以及连接状态设置,才能够执行第三SQL语句,因此,存储节点可向计算节点返回事务请求的执行结果,这样的情况下,计算节点可以默认存储节点已成功执行了初始化数据库以及连接状态设置。这样的实现方式能够减小第二响应信息的数据量,降低网络开销。
在一些情况下,若事务请求需要返回数据,例如,事务请求为查询请求,则第二响应信息包括的事务请求的执行结果可以为客户端请求查询的数据。在另一些情况下,若事务请求不需要返回数据,例如,事务请求为插入请求,则第二响应信息包括的事务请求的执行结果可以为存储节点成功执行插入请求的事件代码。
若存储节点执行上述第一SQL语句时发生错误,则存储节点向计算节点发送第二响应信息,此时,第二响应信息用于指示存储节点执行第一SQL语句时发生错误。
可选地,第二响应信息可以包括:执行第一SQL语句发生错误的第一事件代码。
若存储节点成功执行了第一SQL语句,当执行上述第二SQL语句时发生错误,则存储节点向计算节点发送第二响应信息,此时,第二响应信息用于指示存储节点执行第二SQL语句时发生错误。
可选地,第二响应信息可以包括:执行第二SQL语句发生错误的第二事件代码。这样的情况下,计算节点可以默认存储节点已成功执行了第一SQL语句。当然,第二响应信息中也可以包括用于指示存储节点已成功执行第一SQL语句的信息;例如,成功执行第一SQL语句的事件代码。
若存储节点成功执行了第一SQL语句和第二SQL语句,当执行第三SQL语句时发生错误,则存储节点向计算节点发送第二响应信息,此时,第二响应信息用于指示存储节点执行第三SQL语句时发生错误。
可选地,第二响应信息可以包括:成功执行初始化数据库对应的第一事件代码、成功执行连接状态设置对应的第二事件代码以及执行第三SQL语句发生错误的第三事件代码。
可选地,第二响应信息可以包括:执行第三SQL语句发生错误的第三事件代码。这样的情况下,计算节点可以默认存储节点已成功执行了第一SQL语句和第二SQL语句。
本实施例提供的方法,由于存储节点向计算节点返回第二响应信息的方式较为灵活,与现有技术中,存储节点每执行一条SQL语句便向计算节点返回一个响应信息的方式相比,本实施例中的方案减少了存储节点与计算节点的网络交互次数,降低了网络开销,提高了分布式数据库系统的性能。
可选地,S305之后还可以包括:
S306、计算节点向客户端返回第二响应信息。
计算节点通过向客户端返回第二响应信息,以使客户端能够及时获知事务请求的执行结果。
可选地,S306之后还可以包括:
S307、重置所述目标连接的连接状态。
由于目标连接在执行完第三SQL语句之后,需要将目标连接重新放回连接池中,以便连接复用,提高连接的利用率。
若目标连接为进行重置就直接放回连接池,则可能导致连接复用时,连接状态错误,进而导致客户端出现乱码现象。因此,本步骤通过重置目标连接的连接状态,之后,再将目标连接放回连接池中。在连接复用时,再重新设置其连接状态即可,有效避免连接复用时出现错误现象。
另外,本步骤是在计算节点将处理结果返回给客户端之后执行,能够保证客户端及时收到事务请求的执行结果。
需要说明的是,在图4以及图5实施例中,仅示出了一个存储节点向计算节点发送第二响应信息的,应理解,在实际应用中,若事务请求针对多个存储节点,则计算节点可以接收多个存储节点分别返回的第二响应信息。
图6为本公开一实施例提供的分布式数据库系统的通信装置的结构示意图。本实施例提供的通信装置应用于分布式数据库系统,其中,分布式数据库系统包括:计算节点和存储节点;本实施例提供的通信装置可以设置在计算节点。参照图6所示,本实施例提供的装置600包括:
收发模块601,用于获取客户端发送的事务请求;
处理模块602,用于根据事务请求从连接池中取出目标连接;
所述处理模块602,还用于通过目标连接,向存储节点发送第一信息,以使存储节点执行第一信息包括的SQL语句;其中,第一信息包括:第一SQL语句和第二SQL语句;第一SQL语句用于指示存储节点初始化数据库;第二SQL语句用于指示存储节点设置目标连接的连接状态。
在一些可能的设计中,所述第一信息还包括:第三SQL语句;其中,第三SQL语句为上述事务请求的SQL语句。
在一些可能的设计中,收发模块601,还用于接收存储节点返回的第一响应信息;其中,第一响应信息用于指示所述存储节点成功执行第一SQL语句和第二SQL语句;或者,所述第一响应信息用于指示存储节点执行第一SQL语句时发生错误;或者,第一响应信息用于指示存储节点执行第二SQL语句时发生错误。
在一些可能的设计中,收发模块601,还用于接收存储节点返回的第二响应信息;其中,第二响应信息用于指示存储节点成功执行第一SQL语句、第二SQL语句以及第三SQL语句;或者,第二响应信息用于指示存储节点第一SQL语句时发生错误;或者,第二响应信息用于指示存储节点执行第二SQL语句时发生错误;或者,第二响应信息用于指示存储节点执行第三SQL语句时发生错误。
本实施例提供的通信装置用于执行上述任一方法实施例中计算节点的操作,其实现原理以及技术效果类似,可参照前述实施例的描述,此处不再赘述。
图7为本公开另一实施例提供的分布式数据库系统的通信装置的结构示意图。本实施例提供的通信装置应用于分布式数据库系统,其中,分布式数据库系统包括:计算节点和存储节点;本实施例提供的通信装置可以设置在存储节点。参照图7所示,本实施例提供的装置700包括:
收发模块701,用于接收所述计算节点发送的第一信息;其中,第一信息包括:第一SQL语句和第二SQL语句;第一SQL语句用于指示存储节点初始化数据库;第二SQL语句用于指示存储节点设置目标连接的连接状态;
处理模块702,用于执行第一信息包括的SQL语句。
在一些可能的设计中,第一信息还包括:第三SQL语句;其中,第三SQL语句为事务请求的SQL语句。
在一些可能的设计中,收发模块701,还用于向计算节点发送第一响应信息;其中,第一响应信息用于指示存储节点成功执行第一SQL语句和第二SQL语句;或者,第一响应信息用于指示存储节点执行所述第一SQL语句时发生错误;或者,第一响应信息用于指示存储节点执行第二SQL语句时发生错误。
在一些可能的设计中,收发模块701,还用于向计算节点发送第二响应信息;其中,第二响应信息用于指示存储节点成功执行第一SQL语句、第二SQL语句以及第三SQL语句;或者,第二响应信息用于指示存储节点第一SQL语句时发生错误;或者,第二响应信息用于指示存储节点执行第二SQL语句时发生错误;或者,第二响应信息用于指示存储节点执行第三SQL语句时发生错误。
本实施例提供的通信装置用于执行上述任一方法实施例中存储节点的操作,其实现原理以及技术效果类似,可参照前述实施例的描述,此处不再赘述。
图8为本公开一实施例提供的电子设备的结构示意图。参照图8所示,本实施例提供的电子设备包括:存储器801、处理器802。
其中,存储器801可以是独立的物理单元,与处理器802可以通过总线803连接。存储器801、处理器802也可以集成在一起,通过硬件实现等。
存储器801用于存储程序指令,处理器802调用该程序指令,执行以上任一方法实施例中计算节点执行的操作,或者,执行以上任一方法实施例中存储节点执行的操作。
需要说明的是,当电子设备执行上述计算节点执行的操作时,电子设备可以为计算节点或者计算节点的一部分;当电子设备指向上述存储节点执行的操作时,电子设备可以为存储节点或者存储节点的一部分。
可选地,当上述实施例的方法中的部分或全部通过软件实现时,上述电子设备800也可以只包括处理器802。用于存储程序的存储器801位于电子设备800之外,处理器802通过电路/电线与存储器连接,用于读取并执行存储器中存储的程序。
处理器802可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。
处理器802还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器801可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。
本公开还提供一种计算机可读存储介质,计算机可读存储介质中包括计算机程序指令,所述计算机程序指令在被电子设备的至少一个处理器执行时,以执行以上任一方法实施例中计算节点执行的操作,或者,执行以上任一方法实施例中存储节点执行的操作。
本公开还提供一种程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,所述电子设备的至少一个处理器可以从所述可读存储介质中读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得所述电子设备执行以上任一方法实施例中计算节点执行的操作,或者,执行以上任一方法实施例中存储节点执行的操作。
本公开实施例还提供一种分布式数据库系统,包括:至少一个图6所示的通信装置,用于执行以上任一方法实施例中计算节点执行的操作;分布式数据库系统,还包括:至少一个图7所示的通信装置,用于执行以上任一方法实施例中存储节点执行的操作。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种分布式数据库系统的通信方法,所述分布式数据库系统包括:计算节点和存储节点,所述方法应用于所述计算节点,其特征在于,所述方法包括:
所述计算节点获取客户端发送的事务请求;
所述计算节点根据所述事务请求从连接池中取出目标连接;
所述计算节点通过所述目标连接,向所述存储节点发送第一信息,以使所述存储节点执行所述第一信息包括的SQL语句;其中,所述第一信息包括:第一SQL语句和第二SQL语句;所述第一SQL语句用于指示所述存储节点初始化数据库;所述第二SQL语句用于指示所述存储节点设置所述目标连接的连接状态。
2.根据权利要求1所述的方法,其特征在于,所述第一信息还包括:第三SQL语句;所述第三SQL语句为所述事务请求的SQL语句。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述计算节点接收所述存储节点返回的第一响应信息;
其中,所述第一响应信息用于指示所述存储节点成功执行所述第一SQL语句和所述第二SQL语句;或者,
所述第一响应信息用于指示所述存储节点执行所述第一SQL语句时发生错误;或者,
所述第一响应信息用于指示所述存储节点执行所述第二SQL语句时发生错误。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述计算节点接收所述存储节点返回的第二响应信息;
其中,所述第二响应信息用于指示所述存储节点成功执行所述第一SQL语句、所述第二SQL语句以及所述第三SQL语句;或者,
所述第二响应信息用于指示所述存储节点执行所述第一SQL语句时发生错误;或者,
所述第二响应信息用于指示所述存储节点执行所述第二SQL语句时发生错误;或者,
所述第二响应信息用于指示所述存储节点执行所述第三SQL语句时发生错误。
5.一种分布式数据库系统的通信方法,其特征在于,所述分布式数据库系统包括:计算节点和存储节点,所述方法应用于所述存储节点,所述方法还包括:
所述存储节点接收所述计算节点发送的第一信息;其中,所述第一信息包括:第一SQL语句和第二SQL语句;所述第一SQL语句用于指示所述存储节点初始化数据库;所述第二SQL语句用于指示所述存储节点设置目标连接的连接状态;
所述存储节点执行所述第一信息包括的SQL语句。
6.根据权利要求5所述的方法,其特征在于,所述第一信息还包括:第三SQL语句;所述第三SQL语句为事务请求的SQL语句;其中,所述事务请求为客户端发起的请求。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
所述存储节点向所述计算节点发送第一响应信息;
其中,所述第一响应信息用于指示所述存储节点成功执行所述第一SQL语句和所述第二SQL语句;或者,
所述第一响应信息用于指示所述存储节点执行所述第一SQL语句时发生错误;或者,
所述第一响应信息用于指示所述存储节点执行所述第二SQL语句时发生错误。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述存储节点向所述计算节点发送第二响应信息;
其中,所述第二响应信息用于指示所述存储节点成功执行所述第一SQL语句、所述第二SQL语句以及所述第三SQL语句;或者,
所述第二响应信息用于指示所述存储节点所述第一SQL语句时发生错误;或者,
所述第二响应信息用于指示所述存储节点执行所述第二SQL语句时发生错误;或者,
所述第二响应信息用于指示所述存储节点执行所述第三SQL语句时发生错误。
9.一种分布式数据库系统的通信装置,其特征在于,所述分布式数据库系统包括:计算节点和存储节点,所述通信装置设置在所述计算节点,所述通信装置包括:
收发模块,用于获取客户端发送的事务请求;
处理模块,用于根据所述事务请求从连接池中取出目标连接;
所述处理模块,还用于通过所述目标连接,向所述存储节点发送第一信息,以使所述存储节点执行所述第一信息包括的SQL语句;其中,所述第一信息包括:第一SQL语句和第二SQL语句;所述第一SQL语句用于指示所述存储节点初始化数据库;所述第二SQL语句用于指示所述存储节点设置所述目标连接的连接状态。
10.一种分布式数据库系统的通信装置,其特征在于,所述分布式数据库系统包括:计算节点和存储节点,所述通信装置设置在所述存储节点,所述通信装置包括:
收发模块,用于接收所述计算节点发送的第一信息;其中,所述第一信息包括:第一SQL语句和第二SQL语句;所述第一SQL语句用于指示所述存储节点初始化数据库;所述第二SQL语句用于指示所述存储节点设置目标连接的连接状态;
处理模块,用于执行所述第一信息包括的SQL语句。
11.一种电子设备,其特征在于,包括:存储器、处理器以及计算机程序;
所述存储器被配置为存储所述计算机程序;
所述处理器被配置为执行所述计算机程序,以实现如权利要求1至4任一项所述的方法,或者,如权利要求5至8任一项所述的方法。
12.一种可读存储介质,其特征在于,包括:计算机程序;
所述计算机程序被电子设备的至少一个处理器执行时,实现如权利要求1至4任一项所述的方法,或者,如权利要求5至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110623155.0A CN113407562A (zh) | 2021-06-04 | 2021-06-04 | 分布式数据库系统的通信方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110623155.0A CN113407562A (zh) | 2021-06-04 | 2021-06-04 | 分布式数据库系统的通信方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113407562A true CN113407562A (zh) | 2021-09-17 |
Family
ID=77676274
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110623155.0A Pending CN113407562A (zh) | 2021-06-04 | 2021-06-04 | 分布式数据库系统的通信方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113407562A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024051304A1 (zh) * | 2022-09-07 | 2024-03-14 | 华为云计算技术有限公司 | 节点状态信息的获取方法、系统及相关装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR930007158A (ko) * | 1991-09-25 | 1993-04-22 | 정용문 | 정합 링크 실패시의 호 관리 방법 |
US20130046743A1 (en) * | 2011-08-17 | 2013-02-21 | Boris Gruschko | Method for bundled preparation and execution of multiple database statements |
CN103500180A (zh) * | 2013-09-09 | 2014-01-08 | 北京思特奇信息技术股份有限公司 | 一种基于连接池管理的分布式事务处理方法 |
CN105335403A (zh) * | 2014-07-23 | 2016-02-17 | 华为技术有限公司 | 数据库访问方法及装置、数据库系统 |
CN108551478A (zh) * | 2018-03-29 | 2018-09-18 | 中国银联股份有限公司 | 一种事务处理方法、服务器及事务处理系统 |
CN109710859A (zh) * | 2019-01-21 | 2019-05-03 | 北京字节跳动网络技术有限公司 | 数据查询方法和装置 |
CN110019469A (zh) * | 2017-12-07 | 2019-07-16 | 中兴通讯股份有限公司 | 分布式数据库数据处理方法、装置、存储介质及电子装置 |
CN110968595A (zh) * | 2019-11-27 | 2020-04-07 | 广东科徕尼智能科技有限公司 | 一种单线程sql语句执行方法、设备及存储介质 |
CN111090687A (zh) * | 2019-12-24 | 2020-05-01 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置、系统、计算机可读存储介质 |
CN111225007A (zh) * | 2018-11-26 | 2020-06-02 | 北京京东尚科信息技术有限公司 | 数据库连接方法、装置和系统 |
-
2021
- 2021-06-04 CN CN202110623155.0A patent/CN113407562A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR930007158A (ko) * | 1991-09-25 | 1993-04-22 | 정용문 | 정합 링크 실패시의 호 관리 방법 |
US20130046743A1 (en) * | 2011-08-17 | 2013-02-21 | Boris Gruschko | Method for bundled preparation and execution of multiple database statements |
CN103500180A (zh) * | 2013-09-09 | 2014-01-08 | 北京思特奇信息技术股份有限公司 | 一种基于连接池管理的分布式事务处理方法 |
CN105335403A (zh) * | 2014-07-23 | 2016-02-17 | 华为技术有限公司 | 数据库访问方法及装置、数据库系统 |
CN110019469A (zh) * | 2017-12-07 | 2019-07-16 | 中兴通讯股份有限公司 | 分布式数据库数据处理方法、装置、存储介质及电子装置 |
CN108551478A (zh) * | 2018-03-29 | 2018-09-18 | 中国银联股份有限公司 | 一种事务处理方法、服务器及事务处理系统 |
CN111225007A (zh) * | 2018-11-26 | 2020-06-02 | 北京京东尚科信息技术有限公司 | 数据库连接方法、装置和系统 |
CN109710859A (zh) * | 2019-01-21 | 2019-05-03 | 北京字节跳动网络技术有限公司 | 数据查询方法和装置 |
CN110968595A (zh) * | 2019-11-27 | 2020-04-07 | 广东科徕尼智能科技有限公司 | 一种单线程sql语句执行方法、设备及存储介质 |
CN111090687A (zh) * | 2019-12-24 | 2020-05-01 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置、系统、计算机可读存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024051304A1 (zh) * | 2022-09-07 | 2024-03-14 | 华为云计算技术有限公司 | 节点状态信息的获取方法、系统及相关装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110555012B (zh) | 数据迁移方法及装置 | |
WO2018058998A1 (zh) | 一种数据加载方法、终端和计算集群 | |
JP2019503537A (ja) | ショートリンクを処理する方法及び装置並びにショートリンクサーバ | |
CN111274252B (zh) | 一种区块链的数据上链方法、装置、存储介质和服务器 | |
CN106716335B (zh) | 映射信息的异步处理 | |
US10397051B1 (en) | Configuration and testing of network-based service platform resources using a service platform specific language | |
US11416166B2 (en) | Distributed function processing with estimate-based scheduler | |
US20190294476A1 (en) | Methods and modules relating to allocation of host machines | |
WO2021139264A1 (zh) | 对象存储控制方法、装置、计算机设备及存储介质 | |
US9201609B2 (en) | Efficient replication of changes to a byte-addressable persistent memory over a network | |
EP4052126A1 (en) | Management of multiple physical function non-volatile memory devices | |
CN110413588B (zh) | 分布式对象存储方法、装置、计算机设备和存储介质 | |
CN114116827B (zh) | 一种用户画像数据的查询系统及方法 | |
CN113407562A (zh) | 分布式数据库系统的通信方法及装置 | |
CN109388651B (zh) | 一种数据处理方法和装置 | |
CN111078697B (zh) | 一种数据存储方法、装置、存储介质及电子设备 | |
US10812408B1 (en) | Preventing concentrated selection of resource hosts for placing resources | |
CN107977381B (zh) | 数据配置方法、索引管理方法、相关装置以及计算设备 | |
WO2022206170A1 (zh) | 一种数据处理方法、服务端及系统 | |
TW202008172A (zh) | 儲存系統 | |
US11656972B1 (en) | Paginating results obtained from separate programmatic interfaces | |
US10416916B2 (en) | Method and memory merging function for merging memory pages | |
US9244869B1 (en) | Asynchronous checkpointing with message passing to burst buffers | |
CN113282347A (zh) | 插件运行方法、装置、设备及存储介质 | |
CN112100208A (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 |