CN117688104A - 请求处理方法、装置、电子设备及存储介质 - Google Patents
请求处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117688104A CN117688104A CN202410139143.4A CN202410139143A CN117688104A CN 117688104 A CN117688104 A CN 117688104A CN 202410139143 A CN202410139143 A CN 202410139143A CN 117688104 A CN117688104 A CN 117688104A
- Authority
- CN
- China
- Prior art keywords
- data
- target data
- node
- request
- cost
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 92
- 238000003672 processing method Methods 0.000 title claims abstract description 20
- 239000012634 fragment Substances 0.000 claims abstract description 115
- 238000004891 communication Methods 0.000 claims abstract description 91
- 238000000034 method Methods 0.000 claims abstract description 78
- 238000004364 calculation method Methods 0.000 claims description 33
- 230000000875 corresponding effect Effects 0.000 claims description 31
- 238000013507 mapping Methods 0.000 claims description 28
- 230000004044 response Effects 0.000 claims description 20
- 230000002159 abnormal effect Effects 0.000 claims description 18
- 230000001360 synchronised effect Effects 0.000 claims description 13
- 239000003999 initiator Substances 0.000 claims description 12
- 230000002596 correlated effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 18
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 239000000919 ceramic Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请实施例提供了一种请求处理方法、装置、电子设备及存储介质。方法应用于协调节点,方法包括:对请求端发送的第一数据请求中的查询语句解析得到执行计划,若执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异,若基于代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价,则向请求端反馈直连访问报文,以使请求端根据直连访问报文中的目标分片标识信息建立与目标数据分片所在目标数据节点之间的通信连接,并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。通过上述方法,能够有效提升数据查询处理效率。
Description
技术领域
本申请涉及信息处理技术领域,更具体地,涉及一种请求处理方法、装置、电子设备及存储介质。
背景技术
在传统的存在协调节点的分布式数据库中,所有数据的读取和写入都通过协调节点进行转发。具体过程为:用于发起读取、写入等处理请求的请求端连接协调节点,发送查询SQL语句到协调节点,协调节点对SQL进行解析并生成执行计划。通过生成的执行计划,协调节点连接需要的数据节点,发送数据读写请求给数据节点,数据节点读取或者写入数据,返回结果或者数据给协调节点,协调节点最后返回数据给用户。由于控制流和数据流都需要通过协调节点转发,在高并发的情况下,协调节点的负载会变的很高,资源消耗变大,在一定层度上会降低了协调节点的性能,从而造成查询的延迟。
发明内容
有鉴于此,本申请实施例提出了一种请求处理方法、装置、电子设备及存储介质,能够有效提升数据查询处理效率。
第一方面,本申请实施例提供了一种请求处理方法,应用于数据库系统中的协调节点,所述数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;所述方法包括:接收请求端发送的第一数据请求,所述第一数据请求包括查询语句;对所述查询语句进行解析,得到所述查询语句的执行计划,所述执行计划指示了所述第一数据请求所请求访问的目标数据;若确定所述查询语句的执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异;所述第一访问方式是指由所述请求端直接访问数据节点的方式,所述第二访问方式是指由所述请求端通过所述协调节点访问数据节点的方式;若根据所述代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价,基于所述目标数据所在目标数据分片的目标分片标识信息,生成直连访问报文;向所述请求端发送所述直连访问报文,以使所述请求端根据所述直连访问报文中的目标分片标识信息建立与所述目标数据分片所在目标数据节点之间的通信连接,并访问所述目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。
第二方面,本申请实施例提供了一种请求处理方法,向数据库系统中的协调节点发送第一数据请求,所述第一数据请求包括查询语句;所述数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;接收所述协调节点返回的直连访问报文,所述协调节点在解析所述查询语句确定所述查询语句的执行计划不需要分布式事务支持,且确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价的情况下,发送所述直连访问报文;所述直连访问报文包括所述目标数据所在目标数据分片的目标分片标识信息,所述目标数据是指所述第一数据请求所请求访问的数据;所述第一访问方式是指由所述第一数据请求的发起方直接访问数据节点的方式,所述第二访问方式是指由所述第一数据请求的发起方通过所述协调节点访问数据节点的方式;根据所述目标分片标识信息确定所述目标数据分片所在的目标数据节点;建立与所述目标数据节点的通信连接,并向所述目标数据节点发送针对所述目标数据的第二数据请求;接收所述目标数据节点响应于所述第二数据请求返回的数据访问处理结果。
第三方面,本申请实施例提供了一种请求处理装置,应用于数据库系统中的协调节点,所述数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;所述装置包括:请求接收模块、语句解析模块、代价差异计算模块、报文生成模块以及报文发送模块。请求接收模块,用于接收请求端发送的第一数据请求,所述第一数据请求包括查询语句;语句解析模块,用于对所述查询语句进行解析,得到所述查询语句的执行计划,所述执行计划指示了所述第一数据请求所请求访问的目标数据;代价差异计算模块,用于若确定所述查询语句的执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异;所述第一访问方式是指由所述请求端直接访问数据节点的方式,所述第二访问方式是指由所述请求端通过所述协调节点访问数据节点的方式;报文生成模块,用于在根据所述代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价时,基于所述目标数据所在目标数据分片的目标分片标识信息,生成直连访问报文;报文发送模块,用于向所述请求端发送所述直连访问报文,以使所述请求端根据所述直连访问报文中的目标分片标识信息建立与所述目标数据分片所在目标数据节点之间的通信连接,并访问所述目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。
在一种可实施方式中,所述代价差异计算模块包括第一代价确定子模块、第二代价确定子模块以及代价差异确定子模块,第一代价确定子模块,用于根据所述请求端与所述协调节点之间的通信代价、以及所述请求端直接与所述数据节点进行通信的通信代价,确定按照第一访问方式访问目标数据的第一代价;第二代价确定子模块,用于根据所述请求端与所述协调节点之间的通信代价、所述协调节点与所述数据节点之间的通信代价、以及所述协调节点的数据转发代价,确定按照第二访问方式访问目标数据的第二代价;代价差异确定子模块,用于基于所述第一代价和所述第二代价,确定所述代价差异。
在一种可实施方式中,所述代价差异确定子模块,还用于计算所述第二代价与所述第一代价的比值,得到代价比例;根据所述协调节点上的资源利用比例,对所述代价比例进行修正,得到所述代价差异,其中,所述代价差异与所述资源利用比例正相关。
在一种可实施方式中,所述装置还包括:计划发送模块和结果转发模块。计划发送模块用于若确定所述查询语句的执行计划需要分布式事务支持,或者根据所述代价差异确定按照第一访问方式访问目标数据的代价不小于按照第二访问方式访问目标数据的代价,向所述目标数据节点发送所述查询语句的执行计划;结果转发模块用于接收所述目标数据节点通过执行所述查询语句的执行计划而获得的数据访问处理结果,并向所述请求端发送所述目标数据节点返回的所述数据访问处理结果。
在一种可实施方式中,所述直连访问报文还包括所述数据库系统的拓扑信息;所述装置还包括拓扑信息发送模块,所述请求接收模块,还用于接收所述请求端发送的拓扑信息请求,所述拓扑信息请求是在请求端在接收到目标数据返回的异常提示信息时生成,所述异常提示信息为所述目标数据节点在第一哈希值与根据所述协调节点向所述目标数据节点同步的拓扑信息得到第二哈希值不一致时生成,所述第一哈希值为所述请求端基于所述协调节点向其同步的数据库系统的拓扑信息进行哈希计算得到;拓扑信息发送模块,用于响应于所述拓扑信息请求,向所述请求端发送所述数据库系统的新的拓扑信息,以使所述请求端所述新的拓扑信息进行哈希计算得到第三哈希值,向所述目标数据节点发送包括该第三哈希值的第三数据请求,并接收目标数据节点响应于所述第三数据请求返回的数据访问处理结果,所述目标数据节点在确定所述第三哈希值与所述第二哈希值相同的情况下,在所述目标数据分片中访问所述目标数据,以获得所述数据访问处理结果。
第四方面,本申请实施例提供了一种请求处理装置,所述装置包括:请求发送模块,用于向数据库系统中的协调节点发送第一数据请求,所述第一数据请求包括查询语句;所述数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;报文接收模块,用于接收所述协调节点返回的直连访问报文,所述协调节点在解析所述查询语句确定所述查询语句的执行计划不需要分布式事务支持,且确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价的情况下,发送所述直连访问报文;所述直连访问报文包括所述目标数据所在目标数据分片的目标分片标识信息,所述目标数据是指所述第一数据请求所请求访问的数据;所述第一访问方式是指由所述第一数据请求的发起方直接访问数据节点的方式,所述第二访问方式是指由所述第一数据请求的发起方通过所述协调节点访问数据节点的方式;数据节点确定模块,用于根据所述目标分片标识信息确定所述目标数据分片所在的目标数据节点;通信连接建立模块,用于建立与所述目标数据节点的通信连接,并向所述目标数据节点发送针对所述目标数据的第二数据请求;结果接收模块,用于接收所述目标数据节点响应于所述第二数据请求返回的数据访问处理结果。
在一种可实施方式中,所述直连访问报文还包括分片映射表,所述分片映射表包括各数据节点与其上所存储数据分片之间的对应关系;数据节点确定模块,还用于根据所述目标分片标识信息和所述分片映射表中各数据节点与其上所存储数据分片之间的对应关系,确定与所述目标数据分片对应的目标数据节点。
在一种可实施方式中,所述直连访问报文还包括所述数据库系统的拓扑信息;所述通信连接建立模块,还用于建立与所述目标数据节点的通信连接;对所述拓扑信息进行哈希计算,得到第一哈希值;向所述目标数据节点发送包括第一哈希值的第二数据请求,以使所述目标数据节点在接收到第二数据请求后根据所述协调节点向所述目标数据节点同步的拓扑信息得到第二哈希值,并在第一哈希值与第二哈希值相同的情况下,在所述目标数据分片中访问所述目标数据,以获得所述数据访问处理结果。
在一种可实施方式中,所述装置还包括:拓扑信息接收模块和哈希计算模块,所述请求发送模块,还用于向所述协调节点发送所述拓扑信息请求;拓扑信息接收模块,用于接收所述协调节点响应于所述拓扑信息请求返回的所述数据库系统的新的拓扑信息;哈希计算模块,用于对所述新的拓扑信息进行哈希计算,得到第三哈希值;请求发送模块,还用于向所述目标数据节点发送针对所述目标数据且包括所述第三哈希值的第三数据请求;结果接收模块,还用于接收所述目标数据节点响应于所述第三数据请求返回的数据访问处理结果,所述目标数据节点在确定所述第三哈希值与所述第二哈希值相同的情况下,在所述目标数据分片中访问所述目标数据,以获得所述数据访问处理结果。
第五方面,本申请实施例提供了一种电子设备,包括处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述处理器执行以实现上述的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码被处理器运行时执行上述的方法。
第七方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质获取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的方法。
本申请实施例提供的一种请求处理方法、装置、电子设备及存储介质,方法在应用于协调节点时,方法包括:对请求端的第一数据请求中的查询语句解析得到执行计划,若执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异,若基于代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价,则向请求端反馈直连访问报文,以使请求端根据直连访问报文中的目标分片标识信息建立与目标数据分片所在目标数据节点之间的通信连接,并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。通过采用上述方法,协调节点在确定查询语句的执行计划不需要分布式事务支持,也即,仅由执行计划仅由一个数据节点来执行,通过分析确定在请求端直接访问数据节点的方式产生的访问代价小于请求端通过所述协调节点访问数据节点的方式产生的访问代价时,向请求端发直连访问报文,以使请求端响应于该直连访问报文建立与目标数据节点的通信并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果,从而实现利用直连的方式进行数据访问来提升数据访问效率。避免了采用相关技术中所有控制流和数据流都需要通过协调节点转发,从而在高并发的情况下造成的查询的延迟的问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的一种请求处理方法的应用场景图;
图2示出了本申请实施例提出的一种请求处理方法的流程示意图;
图3示出了本申请实施例提出的一种请求处理方法的另一流程示意图;
图4示出了本申请实施例提出的一种请求处理方法的另一应用场景的处理流程示意图;
图5示出了本申请实施例提出的一种请求处理方法的流程框图;
图6示出了本申请实施例提出的一种请求处理方法的另一流程框图;
图7示出了本申请另一实施例提供的一种请求处理方法的流程示意图;
图8示出了本申请又一实施例提出的一种请求处理方法的流程示意图;
图9示出了本申请另一实施例提供的一种请求处理装置的连接框图;
图10示出了本申请又一实施例提供的一种请求处理装置的连接框图;
图11示出了用于执行本申请实施例的方法的电子设备的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明的是:在本文中提及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
另外需要说明的是,在本申请实施例中订阅节点及分发节点的属性的获取均需要获得所属用户的许可或同意,且上述属性的收集、使用、处理和存储均需要符合所在地区的规定。
以下,对本申请涉及的术语进行解释。
协调节点:用来接收用户连接和查询请求,负责协调和管理整个分布式数据库的节点,主要职责包括:元数据管理、查询优化和执行计划生成、事务管理和资源管理等。英文全称Coordinator,简称CN。
数据节点:用来执行协调节点生成的执行计划,对数据进行计算和存储的计算机节点。英文全称datanode,简称DN。
数据分片:在分布式数据库中是数据分片是一种数据映射技术,用于将数据水平分割成多个片段(或称为分片),并将这些分片分布在不同的节点上。每个节点负责存储和处理其中的一个或多个分片。这种分片的方式可以根据某种规则,如哈希函数、范围或其他算法,将数据均匀地分配到不同的分片中,英文全称sharding。
分布键:在分布式数据库系统中,分布键是用于唯一标识一张分布式表的字段。它通常是一个或多个属性的组合,可以将数据分布在不同的数据节点上,以使每个数据节点存储部分数据,以实现负载均衡和提高查询性能。通过设置分布键,可以将数据分布在不同的数据节点上,实现负载均衡,此外,设置分布键还可以减少数据传输和处理的时间,从而提高查询效率。
分片映射表:其包括分布键生成的哈希值跟数据存储节点的映射关系。分布键使用特定的哈希算法生成一个哈希值,这个哈希值的取值会在一个整数n的范围内(当n为4096时,哈希取值为0-4095),不同的哈希值会映射到不同的存储节点上,存储这种分片映射关系的表称为分片映射表(shardmap table。分片映射表里面包含n条记录,每条记录是一个<哈希值,DN节点编号>的二元组,表示分布键取值的哈希值和对应需要在某个DN节点上执行的映射关系。
数据库系统的拓扑信息:指用于描述分布式数据库中不同节点间的连接方案,用户可以通过更改节点类型、修改节点间连接方式、增加、删除节点方法来改变数据库系统的拓扑。数据库系统的拓扑的改变会影响数据的分片。
图1是根据本申请一实施例示出的一种请求处理方法应用场景的示意图,如图1所示,该方法应用在请求端与数据库系统构成的请求处理系统中,其中,数据量系统包括协调节点和多个数据处理节点(图中仅示出了包括数据节点1、数据节点2以及数据节点3的情况)。
其中,请求端可以是用户侧计算设备也可以是服务器,其中,用户侧计算设备可以包括诸如PC计算设备、移动计算设备、物联网设备,以及其它形式的具有一定的计算能力的电子设备,等等。
需要说明的是,用户侧计算设备并不表示其中的所有用户侧计算设备在同一个通信网络中,而仅仅是对这些用户侧计算设备的统称。
在利用上述的请求处理系统执行请求处理方法时,具体过程如下:
请求端向协调节点发送包括查询语句的第一数据请求。协调节点在接收到第一数据请求时,对查询语句进行解析,得到查询语句的执行计划,执行计划指示了第一数据请求所请求访问的目标数据,在确认查询语句的执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异;第一访问方式是指由请求端直接访问数据节点的方式,第二访问方式是指由请求端通过协调节点访问数据节点的方式;若根据代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价,基于目标数据所在目标数据分片的目标分片标识信息,生成直连访问报文,并向请求端发送该直连报文。请求端在接收到请求报文时,根据请求报文中的目标分片标识信息建立与目标数据分片所在目标数据节点之间的通信连接,并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。
通过采用上述方法,协调节点在确定查询语句的执行计划不需要分布式事务支持,也即,仅由执行计划仅由一个数据节点来执行,通过分析确定在请求端直接访问数据节点的方式产生的访问代价小于请求端通过协调节点访问数据节点的方式产生的访问代价时,向请求端发直连访问报文,以使请求端响应于该直连访问报文建立与目标数据节点的通信并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果,从而实现利用直连的方式进行数据访问来提升数据访问效率。避免了采用相关技术中所有控制流和数据流都需要通过协调节点转发,从而在高并发的情况下造成的查询的延迟的问题。
下面将结合附图具体描述本申请的各实施例。
如图2所示,本申请实施例提供了一种请求处理方法,该方法应用于图1所示的请求处理系统中,该方法的具体流程如下:
步骤S110:请求端向协调节点发送包括查询语句的第一数据请求。
其中,查询语句为结构化查询语言(SQL,Structured Query Language)语句。SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
上述的查询语句对应的功能可以包括但不限于查询数据、插入数据、删除数据、修改数据、定义数据、修改权限等中的一种或多种。相应的查询语句具体可以是由一条或多条功能语句构成,如具体可以由DQL(Data Query Language,数据查询的语言)、DML(DataManipulation Language,数据操作的语言)、DDL(Data Definition Language,定义数据库结构的语言)、DCL(Data Control Language、定义数据库结构的语言)以及TCL(Transaction Control Language、控制事务处理的语言)等中的一种构成。
其中,DQL语句用于从表中获取数据,DQL语句对应的关键字有:select(查询)。DML语句用于操作数据库对象中包含的数据,操作的对象是记录,DML语句对应的主要的关键字有:update(修改)、delete(删除)、insert(插入)等。DDL语句用于定义和管理数据库中的所有对象的语言,对数据库中的某些对象(例如database,table)进行管理。操作对象包括数据库本身以及数据库对象,如表、视图等等。主要的关键字有:create(创建)、alter(修改)、drop(删除)、truncate(清空)。DCL语句的操作对象是数据库的权限,用于控制数据库操纵事务发生的时间及效果,对数据库实行实时管理等。这些操作使数据更加的安全。主要的关键字有:grant(授权)、revoke(撤销) 。TCL语句,用于控制事务。主要的语句关键字有:commit(提交)、rollback(回退)、savepoint(保存点)、set transaction(状态设置)。
应当理解,上述的查询语句的功能仅为示例性的,还可以由更多的功能语言构成,在本申请不再一一赘述。
在实际实施时,查询语句可以是开发人员根据需要构建后输入终端后,由终端发送给服务器的。也可以由开发人员根据请求端的运行规则进行提前编写查询语句并进行存储至请求端,以使请求端在需要进行查询数据时获取对应的查询语句并发起查询。相应的上述的查询端可以是终端或者服务器等等任意需要查询数据的设备,在此不作具体限定,根据实际需求进行设置即可。上述的查询语句可以是预先存储的,也可以是用户输入的,根据实际需求进行设置即可。
请求端可以是在接收查询语句后响应于用户的查询操作生成包括查询语句的第一数据请求,也可以是在根据预设的运行逻辑确定当前需要访问数据时获取对应的查询语句,并生成包括该查询语句的第一数据请求。应当理解,上述生成第一数据请求的方式仅为示意性的。
此外,还应当说明的是,第一请求数据中除了包括查询语句,还可以包括请求端的标识信息以及协议代码,其中,协议代码是指请求端与协调节点之间所采用的传输协议对应的协议代码,请求端的标识信息用于标识请求端的唯一性,以便在有多个请求端发数据请求时,能够基于各发送端的标识信息进行区分并进行对应反馈相应的内容。应当理解,第一数据请求中还可以根据实际需求包括其他的数据,在此不作具体限定。
步骤S120:协调节点在接收到第一数据请求时,对查询语句进行解析,得到查询语句的执行计划。
其中,执行计划指示了第一数据请求所请求访问的目标数据。
其中,对查询语句进行解析具体可以是,对查询语句进行语法分析,识别出查询中的关键字、表名、列名和条件等信息,MySQL根据查询语句的结构和条件,生成一个执行计划。执行计划是一个查询优化器根据查询语句和数据库的统计信息预估出的最优查询执行策略。执行计划包括查询使用的索引和执行顺序等信息。
上述的索引可以用于指示第一数据请求所请求访问的目标数据所在的位置。执行顺序可以包括在执行计划进行多表查询时各个表的查询顺序。
步骤S130:协调节点在确认查询语句的执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异。
其中,第一访问方式是指由请求端直接访问数据节点的方式,第二访问方式是指由请求端通过协调节点访问数据节点的方式。
其中,分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统(数据库系统)的不同节点之上。在本实施例中,查询语句的执行计划需要分布式事务支持是指,查询语句的执行计划需要由数据库系统的多个数据节点执行。而查询语句的执行计划不需要分布式事务支持是指查询语句的执行计划仅需要由数据库系统的一个数据节点执行。
应当理解,在确认查询语句的执行计划仅需要由数据库系统的一个数据节点执行时,则可以利用请求端直接与该数据节点连接,以查询该数据节点的数据。
代价差异用于反映按照第一访问方式目标数据产生的第一代价与按照第二访问方式访问目标数据产生的第二代价之间的差异。根据代价差异可以从第一方式和第二访问方式中选取一种访问代价相对较小的访问方式。
上述计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异的方式可以是,计算按照第一访问方式访问目标数据产生的第一代价、以及计算按照第二访问方式访问目标数据产生的第二代价,基于第一代价和第二代价确定代价差异,上述确定代价差异的方式可以是将第一代价与第二代价作差计算、相除或者进行比较等等。
其中,上述第一代价具体可以是根据请求端与协调节点之间的通信代价、以及请求端直接与数据节点进行通信的通信代价确定,也可以是仅根据请求端直接与数据节点进行通信的通信代价确定,还可以是根据请求端与协调节点之间的通信代价、请求端直接与数据节点进行通信的通信代价以及数据节点的数据访问代价确定。根据应该当理解,上述确定第一代价的方式仅为示意性的,还可以有更多的确定方式,在本实施例不再一一赘述。
上述的第二代价具体可以是根据请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价、以及协调节点的数据转发代价确定。也可以根据请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价、协调节点的数据转发代价以及协调节点的资源利用率确定。还可以是请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价、协调节点的数据转发代价以及数据节点的数据访问代价确定。根据应该当理解,上述确定第二代价的方式仅为示意性的,还可以有更多的确定方式,在本实施例不再一一赘述。
上述的两个节点之间(请求端与数据节点之间、请求端与协调节点之间以及协调节点与数据节点之间)的通信代价具体可以根据两个节点之间的丢包率、数据传输效率、数据延时程度以及网络拥塞程度等中的一种或多种确定。其中,通信代价可以与丢包率、数据延时程度以及网络拥塞程度分别呈正相关,以及与数据传输效率呈负相关。
在一种可实施方式中,上述步骤S130包括:将请求端与协调节点之间的通信代价、以及请求端直接与数据节点进行通信的通信代价进行加权求和,得到按照第一访问方式访问目标数据的第一代价。将请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价、以及协调节点的数据转发代价进行加权求和,得到按照第二访问方式访问目标数据的第二代价;计算第二代价与第一代价的比值,得到代价比例,根据协调节点上的资源利用比例,对代价比例进行修正,得到代价差异,其中,代价差异与资源利用比例正相关。
步骤S140:协调节点若根据代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价,基于目标数据所在目标数据分片的目标分片标识信息,生成直连访问报文,并向请求端发送该直连报文。
其中,若根据代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价,则表示应当采用请求端直接访问数据节点的方式。
上述的目标数据所在目标数据分片的目标分片标识信息可以是目标数据所在目标数据分片对应的分布键,也可以是基于目标数据所在目标数据分片的分部键的信息确定的目标数据节点的标识信息,还可以是任意能够标识目标数据所在目标数据分片的信息,根据实际需求进行设置即可。
在一种可实施方式中,若直连报文中包括目标数据所在目标数据分片对应的分布键,则该报文中还携带有分片映射表或分布键与数据节点之间的映射关系表,以便目标数据节点能够根据分布键和表(分片映射表或映射关系表)确定存储目标数据的目标数据节点的标识信息。
在另一中可实施方式中,直连报文也可以包括目标数据节点的标识信息。其中,目标数据节点的标识信息可以是由协调节点根据目标数据所在目标数据分片对应的分布键及表(如,分片映射表或分布键与数据节点之间的映射关系表)确定。
在以上两种方式中,若根据目标数据所在目标数据分片对应的分布键及分片映射表确定目标数据节点的标识信息,则具体的确定过程可以是:对目标数据所在目标数据分片对应的分可以理解的是,上述的直连访问报文中还布键进行哈希计算,得到一哈希值,从分片映射表中查找与该哈希值对应的目标数据节点。
可以包括其他信息,如前述步骤S120中解析得到的执行计划、目标数据节点的地址信息以及目标数据节点的端口信息等中的一种或多种。
步骤S150:请求端根据请求报文中的目标分片标识信息建立与目标数据分片所在目标数据节点之间的通信连接,并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。
其中,请求端根据目标分表标识信息可以确定目标数据节点,关于请求端确定目标数据节点的过程可以参阅上述步骤S140的具体描述。请求端在确定目标数据节点后,可以建立请求端与目标数据节点之间的连接,该连接可以是有线连接,也可以是无线连接,如蓝牙连接、wifi连接或者移动网络数据连接等,根据实际需求进行设置即可。
在请求端建立其与目标数据节点之间的连接之后,可以对前述的查询语句进行解析得到执行计划,并向目标数据节点发送执行计划,以使目标数据节点基于执行计划进行数据查询。也可以在直连访问报文中包括执行计划时,向目标数据节点发送该执行计划,以使目标数据节点基于执行计划进行数据查询。
通过采用上述的请求处理方法方法,可以实现在协调节点在确定查询语句的执行计划不需要分布式事务支持,也即,仅由执行计划仅由一个数据节点来执行,通过分析确定在请求端直接访问数据节点的方式产生的访问代价小于请求端通过协调节点访问数据节点的方式产生的访问代价时,向请求端发直连访问报文,以使请求端响应于该直连访问报文建立与目标数据节点的通信并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果,从而实现利用直连的方式进行数据访问来提升数据访问效率。避免了采用相关技术中所有控制流和数据流都需要通过协调节点转发,从而在高并发的情况下造成的查询的延迟的问题。
考虑到在数据传输过程中,数据库系统中的数据节点可能会发生新增或减少或者替换(如,主备切换)等等,相应的数据库系统中的拓扑信息会发生变化,为避免在数据库系统的拓扑信息发生变化时,无法准确访问到数据。在本申请的一种可实施方式中,协调节点还用于实时向各个数据节点同步数据库系统的拓扑信息或者在检测到数据库系统的拓扑结构发生变化时,向各个数据节点同步数据库系统的拓扑信息。同时,协调节点在向请求端发送直连访问报文时,该直连访问报文中包括数据库系统的拓扑信息;上述步骤S150具体可以包括:请求端建立与目标数据节点的通信连接;对拓扑信息进行哈希计算,得到第一哈希值;向目标数据节点发送包括第一哈希值的第二数据请求,以使目标数据节点在接收到第二数据请求后根据协调节点向目标数据节点同步的拓扑信息得到第二哈希值,并在第一哈希值与第二哈希值相同的情况下,在目标数据分片中访问目标数据,以获得数据访问处理结果。
需要说明的是,在第一哈希值与第二哈希值相同的情况下,则说明数据库系统的拓扑结构未发生变化,在第一哈希值与第二哈希值不相同时,则说明数据库系统的拓扑结构发生了变化。
应当理解,上述确定目标数据节点中的拓扑信息与请求端中的拓扑信息是否一致的方式仅为示意性的,还可以直接比对,采用其他的参数计算方式进行确定,在本实施例不再一一赘述。
请参阅图3,在一种可实施方式中,在第一哈希值与第二哈希值不同时,方法还包括:
步骤S160:发送端若接收到目标数据节点发送的异常提示信息,生成拓扑信息请求,并向协调节点发送拓扑信息请求。
其中,异常提示信息为目标数据节点在确认第一哈希值与第二哈希值不同的情况下生成的。该异常提示信息用于指示发送端中的存储的拓扑信息异常,以使发送端在接收到该异常提示信息时,响应于该异常提示信息生成拓扑信息请求。
步骤S170:协调节点响应于拓扑信息请求向发送端返回的数据库系统的新的拓扑信息。
协调节点在接收到拓扑信息请求时,获取其最新获得的数据库系统的拓扑信息。应当理解,上述的拓扑信息请求中应当携带有请求端的标识信息、端口信息以及网络地址等等中的一种或多种,以便协调节点能够基于拓扑信息请求向发送端返回新的拓扑信息。
步骤S180:发送端对新的拓扑信息进行哈希计算,得到第三哈希值,并向目标数据节点发送针对目标数据且包括第三哈希值的第三数据请求。
其中,该第三数据请求中还可以包括前述第一数据请求中的查询语言,或者该查询语言的执行计划,以便目标数据节点能够基于查询语言或者该查询语言的执行计划进行数据访问(查询)从而得到数据访问处理结果。
步骤S190:目标数据节点在确定第三哈希值与第二哈希值相同的情况下,在目标数据分片中访问目标数据,以获得数据访问处理结果并向发送端发送数据访问处理结果。
关于访问目标数据的具体过程可以参阅步骤S150的具体描述,此处不再一一赘述。
还应当说明的是,上述确定目标数据节点中的拓扑信息与请求端中的拓扑信息是否一致的方式还可以是直接比对,采用其他的参数计算方式进行确定。
通过采用上述步骤S160-S190,可以有效避免在访问节点在未及时获知数据库系统的拓扑结构发生变化时造成的无法进行数据查询的情况。
示例性的,如图4所示,示出了本申请的一种请求处理系统的示例性应用,该系统中的请求端具体为客户端,该客户端包括驱动程序,请求处理系统中包括协调节点(CN节点)和多个数据节点(DN节点),其中,驱动程序发送包括SQL查询语句的第一数据请求给CN节点(控制流程①),CN节点收到第一数据请求,启动解析、优化、生成执行计划等流程,来生成与查询语句对应的执行计划;生成执行计划后,CN节点判断此执行计划可否需要分布式事务支持,如果不需要,CN节点通过代价差异估算函数来评估是否可以采用请求端直接访问数据节点的方式。其中,代价差异估计函数主要来评估请求端直接访问数据节点的方式和由CN节点转发所需代价之间的差异,如果使用请求端直接访问数据节点的方式产生的代价比较小,则直接返回使用请求端直接访问数据节点的方式的请求给驱动程序(流程②)。CN节点发给驱动程序的直连访问报文中包含当前数据库使用的拓扑信息、分布键信息、分片映射表以及当前事务的快照等信息。其中拓扑信息中包含所有DN节点的连接信息,如IP地址,端口、连接认证信息、拓扑信息的哈希值等,以便客户端能够基于这些连接信息来直连DN节点。此外,通过携带分布键信息指明了查询SQL中哪个字段为分布键,此时驱动程序就不需要重新解析SQL来获取分布键。分片映射表包含了分布键生成的哈希值和对应分片节点的映射关系;当前事务的快照用来处理分布式事务中的数据可见性判断。拓扑信息的哈希值会附加到驱动程序和DN通信报文中,当数据系统结构发生变化时,如在数据库节点的添加、删除、主备切换时,DN节点可以感知到这些变化,以终止当前的事务。
请求端收到CN节点的直连访问报文后,会使用报文中提供的信息直连所需要的DN节点,如数据节点1(流程③),并发送查询请求和拓扑信息的哈希值给DN节点,如果在系统拓扑没有变化(其中,系统拓扑发生未变化时协调节点中的拓扑信息未发生改变),并且SQL执行正确的情况下,DN节点发送结果给驱动程序,驱动程序返回结果给用户程序(流程④),如果出现执行错误,或者系统拓扑发生变化(其中,系统拓扑发生变化时协调节点中的拓扑信息会发生改变),则返回相应的错误信息给驱动程序(也可以参见流程④)。
由于上述的方法在执行过程中,对于用户来说,采用请求端访问数据节点的过程中用户不需要提供任何额外的信息,查询语句也不需要任何的修改,因此,本申请的上述执行过程可以实现在用户不干预的情况下,实现数据库系统的查询性能提升。
具体的,请参阅图5,协调节点执行流程①和流程②的具体过程中,当CN节点在接收到第一请求数据时,具体可以对SQL查询语句进行语义和语法解析,然后使用基于成本的优化器(CBO,Cost-Based Optimizer)对SQL进行优化和重写得到执行计划。具体的,在使用基于成本的优化器进行优化重写的过程中,会产生不同的计划,CBO通过评估不同执行计划的成本,包括访问磁盘和内存的成本、CPU 消耗等,来决定执行查询的最有效的执行计划。生成执行计划后,CN节点的内核会对执行计划是否可以需要分布式事务支持,在不需要分布式事务支持时,使用一代价差异估计函数进行代价差异计算,代价差异估计函数为 f=(2α1 + α2+δ)* K(σ, Φ)/(2α1 + 2α3)。其中f为代价差异的估算结果,如果f大于1,则表示使用请求端直接访问数据节点的方式产生的代价比较小,会倾向于选择使用请求端直接访问数据节点的方式。参数α1是请求端与协调节点之间的通信代价,参数α2是协调节点与数据节点之间的通信代价,参数α3是请求端直接与数据节点进行通信的通信代价,δ是数据在CN上转发需要的转发代价,参数α1、α2、α3的取值与网络连接的拥塞程度和延迟程度正相关。 具体的,(2α1 + α2+δ)表示第二代价,即请求端通过协调节点访问数据节点的方式产生的代价;(2α1 + 2α3)表示第一代价,即由请求端直接访问数据节点的方式产生的代价;K(σ, Φ)为协调节点上的资源利用比例。
需要说明的是,请求端直接访问数据节点的方案有利于分担CN的资源压力,这里的资源包括内存、网络连接池,CPU资源等,考虑到CN上资源使用率问题,本方案通过引入K(σ, Φ)来评估CN上资源利用率情况,其中σ为当前已经使用的资源,Φ为全部的资源,当σ逐渐接近Φ时,表示CN中的资源趋向于耗尽,则代价评估函数更倾向于使用驱动程序的直连协议来完成查询。所以代价估计函数K(σ, Φ)中,K函数保证在σ远远小于Φ时,K函数的取值慢慢的增长并且最小值大于1,当σ无限接近Φ,K输出的数值无限大。这样就保证在CN上资源接近于耗尽的时候,使用请求端直接访问数据节点的方式。公式的分母表示使用使用请求端直接访问数据节点的方式的代价。最终CN通过评估函数给出的评估,如果f的值大于1,则使用请求端直接访问数据节点的方式,否则,使用请求端通过协调节点访问数据节点的方式。
通过采用本申请的请求处理方法,可以实现在数据查询过程中尽量避免使用协调节点进行数据转发,直接连接数据节点进行数据的查询,以减少协调节点的连接压力,减少数据在网络中的传输延迟,从而提搞系统的性能,在网络良好的情况下,可以减少48%的查询延迟;当然采用请求端直接访问数据节点的方式带来的收益受网络条件和系统运行压力的影响,在网络条件拥堵或者并发较高、协调节点压力大的情况下,由请求端直接访问数据节点的方式可以带来更加巨大的性能提升。此外,通过采用上述方法,同时兼顾考虑节点间的延迟和协调节点的连接压力因素。进一步的,本方案还提出了在系统拓扑信息发生变化的情况下自动的错误处理和拓扑信息在节点间的更新流程,以提高由请求端直接访问数据节点的方式的自适应性。
具体的,在协调节点确认采样由请求端直接访问数据节点的方式来进行数据查询时,协调节点中反馈的直连访问报文中包括了分布键信息、分配映射表以及数据库系统的拓扑信息。在一些实施方式中,还可以包括查询语句的执行计划。请求端可以通过分布键和分配映射表确定执行计划应该在哪个节点运行,请求端可以对分布键进行哈希计算,并基于计算得到的值从分配映射表中查询得到目标数据节点,然后发送查询语句或执行计划到对应的目标数据节点,目标数据节点正常执行查询语句或执行计划后,返回结果给请求端。
如图6所示,还需说明的是,考虑到当数据系统的拓扑结构发生变化时,如在数据库节点的添加、删除、主备切换时,可能造成数据无法访问,因此,协调节点会在数据节点和请求端之间进行数据库系统的拓扑信息的同步。在请求端采用直接访问数据节点的方式查询数据时,会携带拓扑信息的第一哈希值,当目标数据节点在查询语句或执行计划执行时发现第一哈希值与其缓存中的拓扑信息对应的第二哈希值不同时,则会执行报错,错误信息会发回请求端。请求端收到错误信息后,会立刻请求CN发回最新的拓扑信息,驱动程序在收到最新的拓扑信息后,会更新拓扑信息到本地缓存,同时会重新连接对应DN,并发起新的查询。
请阅图7,图7所示为本申请还提供一种请求处理方法,可以应用于数据库系统中的协调节点,数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;方法包括:
步骤S210:接收请求端发送的第一数据请求,第一数据请求包括查询语句。
步骤S220:对查询语句进行解析,得到查询语句的执行计划,执行计划指示了第一数据请求所请求访问的目标数据。
步骤S230:若确定查询语句的执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异。
其中,第一访问方式是指由请求端直接访问数据节点的方式,第二访问方式是指由请求端通过协调节点访问数据节点的方式。
步骤S240:若根据代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价,基于目标数据所在目标数据分片的目标分片标识信息,生成直连访问报文。
步骤S250:向请求端发送直连访问报文,以使请求端根据直连访问报文中的目标分片标识信息建立与目标数据分片所在目标数据节点之间的通信连接,并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。
关于上述步骤S210-S250的具体描述,可以参阅前文对步骤S110-S150的具体描述,在实施例不再一一赘述。
在一种可实施方式中,上述步骤S230中,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异的步骤包括:
步骤S230a:根据请求端与协调节点之间的通信代价、以及请求端直接与数据节点进行通信的通信代价,确定按照第一访问方式访问目标数据的第一代价。
该步骤中任意两个节点之间的通信代价,如请求端与协调节点之间的通信代价、以及请求端直接与数据节点之间的通信代价具体可以根据两个节点之间网络的延迟程度、拥塞程度、传输速度等中的一种或多种确定。
上述步骤S230a可以是,对请求端与协调节点之间的通信代价、以及请求端直接与数据节点进行通信的通信代价进行累加或者加权求和,得到按照第一访问方式访问目标数据的第一代价。
步骤S230b:根据请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价、以及协调节点的数据转发代价,确定按照第二访问方式访问目标数据的第二代价。
该步骤中任意两个节点之间的通信代价,如请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价具体可以根据两个节点之间网络的延迟程度、拥塞程度、传输速度等中的一种或多种确定。协调节点的转发代价可以是基于协调节点所连连接的网络的延迟程度和协调节点的负载等中的一种或多种确定的。
上述步骤S230b可以是,对请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价、以及协调节点的数据转发代价进行累加或者加权求和,得到第二代价。其中,上述的请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价、以及协调节点的数据转发代价的权值可以根据实际需求进行设置即可。
步骤S230c:基于第一代价和第二代价,确定代价差异。
其中,确地代价差异的方式可以有多种,例如,可以是将第二代价与第一代价作差计算,得到代价差异;也可以是计算第二代价与第一代价的比值得到代价差异。
在本申请的一种可实施方式中,上述步骤S230c具体可以是:计算第二代价与第一代价的比值,得到代价比例;根据协调节点上的资源利用比例,对代价比例进行修正,得到代价差异。
其中,代价差异与资源利用比例正相关。
协调节点的资源利用比例越高,则说明此时协调节点可能处于高并发状态,则在利用协调节点在进行转发时的效率可能越低,请求端通过协调节点访问数据节点的方式产生的代价应当越大。因此,通过利用协调节点上的资源利用比例,对代价比例进行修正,可以使获得的代价差异更准确。
在一种可实施方式中,若确定查询语句的执行计划不需要分布式事务支持,或者根据代价差异确定按照第一访问方式访问目标数据的代价不小于按照第二访问方式访问目标数据的代价,则方法还包括:向目标数据节点发送查询语句的执行计划,接收目标数据节点通过执行查询语句的执行计划而获得的数据访问处理结果,并向请求端发送目标数据节点返回的数据访问处理结果。
在一种可实施方式中,直连访问报文还包括数据库系统的拓扑信息;方法还包括:
接收请求端发送的拓扑信息请求,拓扑信息请求是在请求端在接收到目标数据返回的异常提示信息时生成,异常提示信息为目标数据节点在第一哈希值与根据协调节点向目标数据节点同步的拓扑信息得到第二哈希值不一致时生成,第一哈希值为请求端基于协调节点向其同步的数据库系统的拓扑信息进行哈希计算得到。响应于拓扑信息请求,向请求端发送数据库系统的新的拓扑信息,以使请求端新的拓扑信息进行哈希计算得到第三哈希值,向目标数据节点发送包括该第三哈希值的第三数据请求,并接收目标数据节点响应于第三数据请求返回的数据访问处理结果,目标数据节点在确定第三哈希值与第二哈希值相同的情况下,在目标数据分片中访问目标数据,以获得数据访问处理结果。
关于上述步骤具体描述可以参阅前文对步骤S160-S190的具体描述,此处不再一一赘述。
请参阅图8,本申请另一实施例提供了一种请求处理方法,该方法可以应该于请求端,该请求端可以是终端设备或服务器,方法包括:
步骤S310:向数据库系统中的协调节点发送第一数据请求,第一数据请求包括查询语句。
其中,数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片。
步骤S320:接收协调节点返回的直连访问报文,协调节点在解析查询语句确定查询语句的执行计划不需要分布式事务支持,且确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价的情况下,发送直连访问报文。
其中,直连访问报文包括目标数据所在目标数据分片的目标分片标识信息,目标数据是指第一数据请求所请求访问的数据;第一访问方式是指由第一数据请求的发起方直接访问数据节点的方式,第二访问方式是指由第一数据请求的发起方通过协调节点访问数据节点的方式。
步骤S330:根据目标分片标识信息确定目标数据分片所在的目标数据节点。
步骤S340:建立与目标数据节点的通信连接,并向目标数据节点发送针对目标数据的第二数据请求。
步骤S350:接收目标数据节点响应于第二数据请求返回的数据访问处理结果。
关于上述步骤S310-S350的具体描述,可以参阅前文对步骤S110-S150的具体描述,在本实施例不再一一赘述。
在一种可实施方式中,直连访问报文还包括分片映射表,分片映射表包括各数据节点与其上所存储数据分片之间的对应关系。上述步骤S330可以是:根据目标分片标识信息和分片映射表中各数据节点与其上所存储数据分片之间的对应关系,确定与目标数据分片对应的目标数据节点。
在一种可实施方式中,直连访问报文还包括数据库系统的拓扑信息;上述步骤S340还可以是:建立与目标数据节点的通信连接;
对拓扑信息进行哈希计算,得到第一哈希值;向目标数据节点发送包括第一哈希值的第二数据请求,以使目标数据节点在接收到第二数据请求后根据协调节点向目标数据节点同步的拓扑信息得到第二哈希值,并在第一哈希值与第二哈希值相同的情况下,在目标数据分片中访问目标数据,以获得数据访问处理结果。
在一种可实施方式中在执行步骤S340之后,方法还包括:
若接收到目标数据节点发送的异常提示信息,生成拓扑信息请求,异常提示信息为目标数据节点在确认第一哈希值与第二哈希值不同的情况下生成的。向协调节点发送拓扑信息请求。接收协调节点响应于拓扑信息请求返回的数据库系统的新的拓扑信息。对新的拓扑信息进行哈希计算,得到第三哈希值。向目标数据节点发送针对目标数据且包括第三哈希值的第三数据请求。接收目标数据节点响应于第三数据请求返回的数据访问处理结果,目标数据节点在确定第三哈希值与第二哈希值相同的情况下,在目标数据分片中访问目标数据,以获得数据访问处理结果。
关于上述步骤具体描述可以参阅前文对步骤S160-S190的具体描述,此处不再一一赘述。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
请参阅图9,本申请实施例提供了一种请求处理装置400,应用于数据库系统中的协调节点,数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;装置400包括:请求接收模块410、语句解析模块420、代价差异计算模块430、报文生成模块440以及报文发送模块450。请求接收模块410,用于接收请求端发送的第一数据请求,第一数据请求包括查询语句;语句解析模块420,用于对查询语句进行解析,得到查询语句的执行计划,执行计划指示了第一数据请求所请求访问的目标数据;代价差异计算模块430,用于若确定查询语句的执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异;第一访问方式是指由请求端直接访问数据节点的方式,第二访问方式是指由请求端通过协调节点访问数据节点的方式;报文生成模块440,用于在根据代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价时,基于目标数据所在目标数据分片的目标分片标识信息,生成直连访问报文;报文发送模块450,用于向请求端发送直连访问报文,以使请求端根据直连访问报文中的目标分片标识信息建立与目标数据分片所在目标数据节点之间的通信连接,并访问目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。
在一种可实施方式中,代价差异计算模块430包括第一代价确定子模块、第二代价确定子模块以及代价差异确定子模块,第一代价确定子模块,用于根据请求端与协调节点之间的通信代价、协调节点与数据节点之间的通信代价、以及协调节点的数据转发代价,确定按照第一访问方式访问目标数据的第一代价;第二代价确定子模块,用于根据请求端与协调节点之间的通信代价、以及请求端直接与数据节点进行通信的通信代价,确定按照第二访问方式访问目标数据的第二代价;代价差异确定子模块,用于基于第一代价和第二代价,确定代价差异。
在一种可实施方式中,代价差异确定子模块,还用于计算第二代价与第一代价的比值,得到代价比例;根据协调节点上的资源利用比例,对代价比例进行修正,得到代价差异,其中,代价差异与资源利用比例正相关。
在一种可实施方式中,装置400还包括:计划发送模块和结果转发模块。计划发送模块用于若确定查询语句的执行计划需要分布式事务支持,或者根据代价差异确定按照第一访问方式访问目标数据的代价不小于按照第二访问方式访问目标数据的代价,向目标数据节点发送查询语句的执行计划;结果转发模块用于接收目标数据节点通过执行查询语句的执行计划而获得的数据访问处理结果,并向请求端发送目标数据节点返回的数据访问处理结果。
在一种可实施方式中,直连访问报文还包括数据库系统的拓扑信息;装置还包括拓扑信息发送模块,请求接收模块410,还用于接收请求端发送的拓扑信息请求,拓扑信息请求是在请求端在接收到目标数据返回的异常提示信息时生成,异常提示信息为目标数据节点在第一哈希值与根据协调节点向目标数据节点同步的拓扑信息得到第二哈希值不一致时生成,第一哈希值为请求端基于协调节点向其同步的数据库系统的拓扑信息进行哈希计算得到;拓扑信息发送模块,用于响应于拓扑信息请求,向请求端发送数据库系统的新的拓扑信息,以使请求端新的拓扑信息进行哈希计算得到第三哈希值,向目标数据节点发送包括该第三哈希值的第三数据请求,并接收目标数据节点响应于第三数据请求返回的数据访问处理结果,目标数据节点在确定第三哈希值与第二哈希值相同的情况下,在目标数据分片中访问目标数据,以获得数据访问处理结果。
请参阅图10,本申请实施例提供了一种请求处理装置500,装置500包括:请求发送模块510、报文接收模块520、数据节点确定模块520、通信连接建立模块540以及结果接收模块550;请求发送模块510,用于向数据库系统中的协调节点发送第一数据请求,第一数据请求包括查询语句;数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;报文接收模块520,用于接收协调节点返回的直连访问报文,协调节点在解析查询语句确定查询语句的执行计划不需要分布式事务支持,且确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价的情况下,发送直连访问报文;直连访问报文包括目标数据所在目标数据分片的目标分片标识信息,目标数据是指第一数据请求所请求访问的数据;第一访问方式是指由第一数据请求的发起方直接访问数据节点的方式,第二访问方式是指由第一数据请求的发起方通过协调节点访问数据节点的方式;数据节点确定模块530,用于根据目标分片标识信息确定目标数据分片所在的目标数据节点;通信连接建立模块540,用于建立与目标数据节点的通信连接,并向目标数据节点发送针对目标数据的第二数据请求;结果接收模块550,用于接收目标数据节点响应于第二数据请求返回的数据访问处理结果。
在一种可实施方式中,直连访问报文还包括分片映射表,分片映射表包括各数据节点与其上所存储数据分片之间的对应关系;数据节点确定模块530,还用于根据目标分片标识信息和分片映射表中各数据节点与其上所存储数据分片之间的对应关系,确定与目标数据分片对应的目标数据节点。
在一种可实施方式中,直连访问报文还包括数据库系统的拓扑信息;通信连接建立模块540,还用于建立与目标数据节点的通信连接;对拓扑信息进行哈希计算,得到第一哈希值;向目标数据节点发送包括第一哈希值的第二数据请求,以使目标数据节点在接收到第二数据请求后根据协调节点向目标数据节点同步的拓扑信息得到第二哈希值,并在第一哈希值与第二哈希值相同的情况下,在目标数据分片中访问目标数据,以获得数据访问处理结果。
在一种可实施方式中,装置还包括:拓扑信息接收模块和哈希计算模块,请求发送模块510,还用于向协调节点发送拓扑信息请求;拓扑信息接收模块,用于接收协调节点响应于拓扑信息请求返回的数据库系统的新的拓扑信息;哈希计算模块,用于对新的拓扑信息进行哈希计算,得到第三哈希值;请求发送模块510,还用于向目标数据节点发送针对目标数据且包括第三哈希值的第三数据请求;结果接收模块550,还用于接收目标数据节点响应于第三数据请求返回的数据访问处理结果,目标数据节点在确定第三哈希值与第二哈希值相同的情况下,在目标数据分片中访问目标数据,以获得数据访问处理结果。
上述装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。需要说明的是,本申请中装置实施例与前述方法实施例是相互对应的,装置实施例中具体的原理可以参见前述方法实施例中的内容,此处不再赘述。
下面将结合图11对本申请提供的一种电子设备进行说明。
请参阅图11,基于上述实施例提供的请求处理方法,本申请实施例还提供的另一种包括可以执行前述方法的处理器102的电子设备100,该电子设备100可以为请求端或协调节点,电子设备可以是终端设备或服务器,其中,终端设备可以是智能手机、平板电脑、计算机或者便携式计算机等设备。
电子设备100还包括存储器104。其中,该存储器104中存储有可以执行前述实施例中内容的程序,而处理器102可以执行该存储器104中存储的程序。
其中,处理器102可以包括一个或者多个用于处理数据的核以及消息矩阵单元。处理器102利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器104内的指令、程序、代码集或指令集,以及调用存储在存储器104内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器102可以采用数字信号处理(DigitalSignal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器102可集成中央处理器(Central Processing Unit,CPU)、图像处理器(GraphicsProcessing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器102中,单独通过一块通信芯片进行实现。
存储器104可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器104可用于存储指令、程序、代码、代码集或指令集。存储器104可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备100在使用中所获取的数据等。
电子设备100还可以包括网络模块以及屏幕,网络模块用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯,例如和音频播放设备进行通讯。网络模块可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。网络模块可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。屏幕可以进行界面内容的显示以及进行数据交互,如显示数据访问处理结果。
在一些实施例中,电子设备100还可以包括有:外设接口106和至少一个外围设备。处理器102、存储器104和外设接口106之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外设接口连接。具体地,外围设备包括:射频组件108、定位组件112、摄像头114、音频组件116、显示屏118以及电源122等中的至少一种
外设接口106可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器102和存储器104。在一些实施例中,处理器102、存储器104和外设接口106被集成在同一芯片或电路板上;在一些其他实施例中,处理器102、存储器104和外设接口106中的任意一个或两个可以在单独的芯片或电路板上实现,本申请实施例对此不加以限定。
射频组件108用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频组件108通过电磁信号与通信网络以及其他通信设备进行通信。射频组件108将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频组件108包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频组件108可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频组件108还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
定位组件112用于定位电子设备的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件112可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、北斗系统或伽利略系统的定位组件。
摄像头114用于采集图像或视频。可选地,摄像头114包括前置摄像头和后置摄像头。通常,前置摄像头设置在电子设备100的前面板,后置摄像头设置在电子设备100的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头114还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频组件116可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器102进行处理,或者输入至射频组件108以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在电子设备100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器102或射频组件108的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频组件114还可以包括耳机插孔。
显示屏118用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏118是触摸显示屏时,显示屏118还具有采集在显示屏118的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器102进行处理。此时,显示屏118还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏118可以为一个,设置电子设备100的前面板;在另一些实施例中,显示屏118可以为至少两个,分别设置在电子设备100的不同表面或呈折叠设计;在又一些实施例中,显示屏118可以是柔性显示屏,设置在电子设备100的弯曲表面上或折叠面上。甚至,显示屏118还可以设置成非矩形的不规则图形,也即异形屏。显示屏118可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,机发光二极管)等材质制备。
电源122用于为电子设备100中的各个组件进行供电。电源122可以是交流电、直流电、一次性电池或可充电电池。当电源122包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
本申请实施例还提供一种计算机可读存储介质的结构框图。该计算机可读介质中存储有程序代码,程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质具有执行上述方法中的任何方法步骤的程序代码的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码可以例如以适当形式进行压缩。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中描述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (14)
1.一种请求处理方法,其特征在于,应用于数据库系统中的协调节点,所述数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;所述方法包括:
接收请求端发送的第一数据请求,所述第一数据请求包括查询语句;
对所述查询语句进行解析,得到所述查询语句的执行计划,所述执行计划指示了所述第一数据请求所请求访问的目标数据;
若确定所述查询语句的执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异;所述第一访问方式是指由所述请求端直接访问数据节点的方式,所述第二访问方式是指由所述请求端通过所述协调节点访问数据节点的方式;
若根据所述代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价,基于所述目标数据所在目标数据分片的目标分片标识信息,生成直连访问报文;
向所述请求端发送所述直连访问报文,以使所述请求端根据所述直连访问报文中的目标分片标识信息建立与所述目标数据分片所在目标数据节点之间的通信连接,并访问所述目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。
2.根据权利要求1所述的方法,其特征在于,所述计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异,包括:
根据所述请求端与所述协调节点之间的通信代价、以及所述请求端直接与所述数据节点进行通信的通信代价,确定按照第一访问方式访问目标数据的第一代价;
根据所述请求端与所述协调节点之间的通信代价、所述协调节点与所述数据节点之间的通信代价、以及所述协调节点的数据转发代价,确定按照第二访问方式访问目标数据的第二代价;
基于所述第一代价和所述第二代价,确定所述代价差异。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第一代价和所述第二代价,确定所述代价差异,包括:
计算所述第二代价与所述第一代价的比值,得到代价比例;
根据所述协调节点上的资源利用比例,对所述代价比例进行修正,得到所述代价差异,其中,所述代价差异与所述资源利用比例正相关。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述方法还包括:
若确定所述查询语句的执行计划需要分布式事务支持,或者根据所述代价差异确定按照第一访问方式访问目标数据的代价不小于按照第二访问方式访问目标数据的代价,向所述目标数据节点发送所述查询语句的执行计划;
接收所述目标数据节点通过执行所述查询语句的执行计划而获得的数据访问处理结果;
向所述请求端发送所述目标数据节点返回的所述数据访问处理结果。
5.根据权利要求1所述的方法,其特征在于,所述直连访问报文还包括所述数据库系统的拓扑信息;
所述向所述请求端发送所述直连访问报文之后,所述方法还包括:
接收所述请求端发送的拓扑信息请求,所述拓扑信息请求是在请求端在接收到目标数据返回的异常提示信息时生成,所述异常提示信息为所述目标数据节点在第一哈希值与根据所述协调节点向所述目标数据节点同步的拓扑信息得到第二哈希值不一致时生成,所述第一哈希值为所述请求端基于所述协调节点向其同步的数据库系统的拓扑信息进行哈希计算得到;
响应于所述拓扑信息请求,向所述请求端发送所述数据库系统的新的拓扑信息,以使所述请求端所述新的拓扑信息进行哈希计算得到第三哈希值,向所述目标数据节点发送包括该第三哈希值的第三数据请求,并接收目标数据节点响应于所述第三数据请求返回的数据访问处理结果,所述目标数据节点在确定所述第三哈希值与所述第二哈希值相同的情况下,在所述目标数据分片中访问所述目标数据,以获得所述数据访问处理结果。
6.一种请求处理方法,其特征在于,所述方法包括:
向数据库系统中的协调节点发送第一数据请求,所述第一数据请求包括查询语句;所述数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;
接收所述协调节点返回的直连访问报文,所述协调节点在解析所述查询语句确定所述查询语句的执行计划不需要分布式事务支持,且确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价的情况下,发送所述直连访问报文;所述直连访问报文包括所述目标数据所在目标数据分片的目标分片标识信息,所述目标数据是指所述第一数据请求所请求访问的数据;所述第一访问方式是指由所述第一数据请求的发起方直接访问数据节点的方式,所述第二访问方式是指由所述第一数据请求的发起方通过所述协调节点访问数据节点的方式;
根据所述目标分片标识信息确定所述目标数据分片所在的目标数据节点;
建立与所述目标数据节点的通信连接,并向所述目标数据节点发送针对所述目标数据的第二数据请求;
接收所述目标数据节点响应于所述第二数据请求返回的数据访问处理结果。
7.根据权利要求6所述的方法,其特征在于,所述直连访问报文还包括分片映射表,所述分片映射表包括各数据节点与其上所存储数据分片之间的对应关系;
所述根据所述目标分片标识信息确定所述目标数据分片所在的目标数据节点,包括:
根据所述目标分片标识信息和所述分片映射表中各数据节点与其上所存储数据分片之间的对应关系,确定与所述目标数据分片对应的目标数据节点。
8.根据权利要求6所述的方法,其特征在于,所述直连访问报文还包括所述数据库系统的拓扑信息;
所述建立与所述目标数据节点的通信连接,并向所述目标数据节点发送针对所述目标数据的第二数据请求,包括:
建立与所述目标数据节点的通信连接;
对所述拓扑信息进行哈希计算,得到第一哈希值;
向所述目标数据节点发送包括第一哈希值的第二数据请求,以使所述目标数据节点在接收到第二数据请求后根据所述协调节点向所述目标数据节点同步的拓扑信息得到第二哈希值,并在第一哈希值与第二哈希值相同的情况下,在所述目标数据分片中访问所述目标数据,以获得所述数据访问处理结果。
9.根据权利要求8所述的方法,其特征在于,所述向所述目标数据节点发送包括第一哈希值的第二数据请求之后,所述方法还包括:
若接收到目标数据节点发送的异常提示信息,生成拓扑信息请求,所述异常提示信息为所述目标数据节点在确认第一哈希值与所述第二哈希值不同的情况下生成的;
向所述协调节点发送所述拓扑信息请求;
接收所述协调节点响应于所述拓扑信息请求返回的所述数据库系统的新的拓扑信息;
对所述新的拓扑信息进行哈希计算,得到第三哈希值;
向所述目标数据节点发送针对所述目标数据且包括所述第三哈希值的第三数据请求;
接收所述目标数据节点响应于所述第三数据请求返回的数据访问处理结果,所述目标数据节点在确定所述第三哈希值与所述第二哈希值相同的情况下,在所述目标数据分片中访问所述目标数据,以获得所述数据访问处理结果。
10.一种请求处理装置,其特征在于,应用于数据库系统中的协调节点,所述数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;所述装置包括:
请求接收模块,用于接收请求端发送的第一数据请求,所述第一数据请求包括查询语句;
语句解析模块,用于对所述查询语句进行解析,得到所述查询语句的执行计划,所述执行计划指示了所述第一数据请求所请求访问的目标数据;
代价差异计算模块,用于若确定所述查询语句的执行计划不需要分布式事务支持,计算按照第一访问方式访问目标数据与按照第二访问方式访问目标数据的代价差异;所述第一访问方式是指由所述请求端直接访问数据节点的方式,所述第二访问方式是指由所述请求端通过所述协调节点访问数据节点的方式;
报文生成模块,用于在根据所述代价差异确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价时,基于所述目标数据所在目标数据分片的目标分片标识信息,生成直连访问报文;
报文发送模块,用于向所述请求端发送所述直连访问报文,以使所述请求端根据所述直连访问报文中的目标分片标识信息建立与所述目标数据分片所在目标数据节点之间的通信连接,并访问所述目标数据节点上目标数据分片中的目标数据以获得数据访问处理结果。
11.一种请求处理装置,其特征在于,所述装置包括:
请求发送模块,用于向数据库系统中的协调节点发送第一数据请求,所述第一数据请求包括查询语句;所述数据库系统还包括多个数据节点,不同的数据节点上存储了不同的数据分片;
报文接收模块,用于接收所述协调节点返回的直连访问报文,所述协调节点在解析所述查询语句确定所述查询语句的执行计划不需要分布式事务支持,且确定按照第一访问方式访问目标数据的代价小于按照第二访问方式访问目标数据的代价的情况下,发送所述直连访问报文;所述直连访问报文包括所述目标数据所在目标数据分片的目标分片标识信息,所述目标数据是指所述第一数据请求所请求访问的数据;所述第一访问方式是指由所述第一数据请求的发起方直接访问数据节点的方式,所述第二访问方式是指由所述第一数据请求的发起方通过所述协调节点访问数据节点的方式;
数据节点确定模块,用于根据所述目标分片标识信息确定所述目标数据分片所在的目标数据节点;
通信连接建立模块,用于建立与所述目标数据节点的通信连接,并向所述目标数据节点发送针对所述目标数据的第二数据请求;
结果接收模块,用于接收所述目标数据节点响应于所述第二数据请求返回的数据访问处理结果。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-5或6-9中任意一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序代码,所述程序代码可被处理器调用执行如权利要求1-5或6-9中任意一项所述的方法。
14.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-5或6-9中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410139143.4A CN117688104A (zh) | 2024-02-01 | 2024-02-01 | 请求处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410139143.4A CN117688104A (zh) | 2024-02-01 | 2024-02-01 | 请求处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117688104A true CN117688104A (zh) | 2024-03-12 |
Family
ID=90133737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410139143.4A Pending CN117688104A (zh) | 2024-02-01 | 2024-02-01 | 请求处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117688104A (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1387296A1 (en) * | 2002-07-10 | 2004-02-04 | Hewlett-Packard Company | Distributed file system |
US20100094981A1 (en) * | 2005-07-07 | 2010-04-15 | Cordray Christopher G | Dynamically Deployable Self Configuring Distributed Network Management System |
WO2014039922A2 (en) * | 2012-09-06 | 2014-03-13 | Pi-Coral, Inc. | Large-scale data storage and delivery system |
CN106599711A (zh) * | 2015-10-15 | 2017-04-26 | 华为技术有限公司 | 一种数据库访问控制方法,及装置 |
CN106657411A (zh) * | 2017-02-28 | 2017-05-10 | 北京华云网际科技有限公司 | 分布式系统中卷的访问方法和装置 |
CN108681556A (zh) * | 2018-04-08 | 2018-10-19 | 华中科技大学 | 分布式指令域数据的访问方法及其系统 |
CN109033429A (zh) * | 2018-08-10 | 2018-12-18 | 北京小米移动软件有限公司 | 文件的访问方法、装置及访问接口 |
CN110309227A (zh) * | 2018-05-28 | 2019-10-08 | 腾讯科技(深圳)有限公司 | 分布式数据回档方法、装置和计算机可读存储介质 |
CN110597466A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 区块链节点的控制方法、装置、存储介质和计算机设备 |
US20200019552A1 (en) * | 2017-03-31 | 2020-01-16 | Huawei Technologies Co., Ltd. | Query optimization method and related apparatus |
CN112055023A (zh) * | 2020-09-09 | 2020-12-08 | 工银科技有限公司 | 基于预言机的访问请求处理方法、装置、设备和介质 |
US11416450B1 (en) * | 2021-03-16 | 2022-08-16 | EMC IP Holding Company LLC | Clustering data management entities distributed across a plurality of processing nodes |
-
2024
- 2024-02-01 CN CN202410139143.4A patent/CN117688104A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1387296A1 (en) * | 2002-07-10 | 2004-02-04 | Hewlett-Packard Company | Distributed file system |
US20100094981A1 (en) * | 2005-07-07 | 2010-04-15 | Cordray Christopher G | Dynamically Deployable Self Configuring Distributed Network Management System |
WO2014039922A2 (en) * | 2012-09-06 | 2014-03-13 | Pi-Coral, Inc. | Large-scale data storage and delivery system |
CN106599711A (zh) * | 2015-10-15 | 2017-04-26 | 华为技术有限公司 | 一种数据库访问控制方法,及装置 |
CN106657411A (zh) * | 2017-02-28 | 2017-05-10 | 北京华云网际科技有限公司 | 分布式系统中卷的访问方法和装置 |
US20200019552A1 (en) * | 2017-03-31 | 2020-01-16 | Huawei Technologies Co., Ltd. | Query optimization method and related apparatus |
CN108681556A (zh) * | 2018-04-08 | 2018-10-19 | 华中科技大学 | 分布式指令域数据的访问方法及其系统 |
CN110309227A (zh) * | 2018-05-28 | 2019-10-08 | 腾讯科技(深圳)有限公司 | 分布式数据回档方法、装置和计算机可读存储介质 |
CN109033429A (zh) * | 2018-08-10 | 2018-12-18 | 北京小米移动软件有限公司 | 文件的访问方法、装置及访问接口 |
CN110597466A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 区块链节点的控制方法、装置、存储介质和计算机设备 |
CN112055023A (zh) * | 2020-09-09 | 2020-12-08 | 工银科技有限公司 | 基于预言机的访问请求处理方法、装置、设备和介质 |
US11416450B1 (en) * | 2021-03-16 | 2022-08-16 | EMC IP Holding Company LLC | Clustering data management entities distributed across a plurality of processing nodes |
Non-Patent Citations (2)
Title |
---|
吴志强: "分布式文献数据库查询系统的构建及分析", 情报科学, no. 10, 25 October 2004 (2004-10-25) * |
陈诚;: "基于云计算的智慧城市垂直搜索技术研究", 软件产业与工程, no. 04, 10 July 2012 (2012-07-10) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107784044B (zh) | 表数据查询方法及装置 | |
CN113420051B (zh) | 一种数据查询方法、装置、电子设备和存储介质 | |
CN114244595B (zh) | 权限信息的获取方法、装置、计算机设备及存储介质 | |
CN111352863B (zh) | 内存管理方法、装置、设备及存储介质 | |
CN108667660B (zh) | 路由管理和业务路由的方法和装置及路由系统 | |
US10171606B2 (en) | System and method for providing data as a service (DaaS) in real-time | |
CN110019444B (zh) | 一种操作请求处理方法、装置、设备及系统 | |
CN114637703B (zh) | 数据访问装置、方法、可读介质和电子设备 | |
CN111510466A (zh) | 客户端的数据更新方法、装置、电子设备及可读介质 | |
CN116701413A (zh) | 主数据处理方法及装置 | |
CN109614089B (zh) | 数据访问代码的自动生成方法、装置、设备及存储介质 | |
CN116991800A (zh) | 文件获取系统、方法、装置、计算机设备和存储介质 | |
CN117688104A (zh) | 请求处理方法、装置、电子设备及存储介质 | |
WO2022089321A1 (zh) | 调度接入点的方法、装置、服务器以及存储介质 | |
CN114629951A (zh) | 地址服务切换方法、装置、计算机设备和存储介质 | |
CN110377654B (zh) | 数据请求的处理方法、装置、电子设备及计算机可读存储介质 | |
CN108287853B (zh) | 一种数据关系分析方法及其系统 | |
CN109739723A (zh) | 信息管理方法、装置、计算机装置及存储介质 | |
CN117075966B (zh) | 指令处理方法、装置、设备及可读存储介质 | |
CN110716885B (zh) | 数据管理方法、装置、电子设备和存储介质 | |
US20240106889A1 (en) | Data resource storage method and apparatus, data resource query method and apparatus, and electronic device | |
CN112966008A (zh) | 一种数据缓存方法、加载方法、更新方法和相关装置 | |
CN117667375A (zh) | 一种资源分析方法和相关装置 | |
CN117035292A (zh) | 一种云产品分配方法、装置、设备及存储介质 | |
CN115687340A (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 |