分布式数据库的编码方法、装置、电子设备、系统及介质与流程

文档序号:33195096发布日期:2023-02-04 11:09阅读:82来源:国知局
分布式数据库的编码方法、装置、电子设备、系统及介质与流程

1.本发明涉及数据库技术领域,尤其涉及一种分布式数据库的编码方法、装置、电子设备、系统及介质。


背景技术:

2.当前分布式数据库依据侧重点的不同,往往采用单一编码,如在线事务处理(oltp)数据库通常采用行式编码,在线分析处理(olap)数据库通常采用列式编码。然而单一编码并不能高效地应对事务处理与分析查询混合的场景。
3.现有的技术方案将数据存储为行式编码和列式编码两种格式,导致整个系统的存储使用量翻倍,且需要复杂的并发控制及复制协议以支持数据多副本的一致性。


技术实现要素:

4.本发明提供了一种分布式数据库的编码方法、装置、电子设备、系统及介质,以在无需修改系统协议基础上,满足客户端不同场景的数据请求。
5.根据本发明的一方面,提供了一种分布式数据库的编码方法,应用于所述分布式数据库的计算节点,所述方法包括:
6.当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式;
7.根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式;
8.向存储节点发送中间数据获取指令,并接收所述存储节点基于所述中间数据获取指令返回的中间数据,所述中间数据获取指令用于指示所述存储节点返回具有第二编码格式的所述中间数据;
9.采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端。
10.根据本发明的另一方面,提供了一种分布式数据库的编码方法,应用于所述分布式数据库的存储节点,所述方法包括:
11.接收计算节点发送的中间数据获取指令,所述中间数据获取指令用于指示返回具有第二编码格式的中间数据;
12.基于所述第二编码格式和所述存储节点的存储类型获取所述中间数据,并将所述中间数据发送至所述计算节点,所述存储类型为行式存储或者列式存储。
13.根据本发明的另一方面,提供了一种分布式数据库的编码装置,配置于所述分布式数据库的计算节点,所述装置包括:
14.第一确定模块,用于当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式;
15.第二确定模块,用于根据所述数据信息确定与所述待获取数据对应的至少一个中
间数据的第二编码格式;
16.发送模块,用于向存储节点发送中间数据获取指令,并接收所述存储节点基于所述中间数据获取指令返回的中间数据,所述中间数据获取指令用于指示所述存储节点返回具有第二编码格式的所述中间数据;
17.编码模块,用于采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端。
18.根据本发明的另一方面,提供了一种分布式数据库的编码装置,配置于所述分布式数据库的存储节点,所述装置包括:
19.接收模块,用于接收计算节点发送的中间数据获取指令,所述中间数据获取指令用于指示返回具有第二编码格式的中间数据;
20.获取模块,用于并将所述中间数据发送至所述计算节点,所述存储类型为行式存储或者列式存储。
21.根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
22.至少一个处理器;以及
23.与所述至少一个处理器通信连接的存储器;其中,
24.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的分布式数据库的编码方法。
25.根据本发明的另一方面,提供了一种分布式数据库的编码系统,所述系统包括至少一个计算节点和至少一个存储节点;
26.所述计算节点用于当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式,根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式,向存储节点发送中间数据获取指令,并接收所述存储节点基于所述中间数据获取指令返回的中间数据,采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端;
27.所述存储节点用于接收计算节点发送的中间数据获取指令,基于所述第二编码格式和所述存储节点的存储类型获取所述中间数据,并将所述中间数据发送至所述计算节点。
28.根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的分布式数据库的编码方法。
29.本发明实施例提供了一种分布式数据库的编码方法、装置、电子设备、系统及介质,所述方法应用于所述分布式数据库的计算节点,包括:当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式;根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式;向存储节点发送中间数据获取指令,并接收所述存储节点基于所述中间数据获取指令返回的中间数据,所述中间数据获取指令用于指示所述存储节点返回具有第二编码格式的所述中间数据;采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端。利用上述技术方案,通过根据数据信息确定与待获取数据对应的至少一个
中间数据的第二编码格式,能够使存储节点返回具有第二编码格式的中间数据,减少网络带宽的开销,同时,采用所述第一编码格式对所述中间数据进行编码,得到待获取数据,能够在无需修改系统协议的基础上,满足客户端不同场景的数据请求。
30.应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
31.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
32.图1是根据本发明实施例一提供的一种分布式数据库的编码方法的流程图;
33.图2是根据本发明实施例二提供的一种分布式数据库的编码方法的流程图;
34.图3是根据本发明实施例二提供的一种分布式数据库的编码方法的结构示意图;
35.图4是根据本发明实施例三提供的一种分布式数据库的编码装置的结构示意图;
36.图5是根据本发明实施例四提供的一种分布式数据库的编码装置的结构示意图;
37.图6是实现本发明实施例四的分布式数据库的编码方法的电子设备的结构示意图;
38.图7是根据本发明实施例六提供的一种分布式数据库的编码系统的结构示意图。
具体实施方式
39.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
40.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
41.实施例一
42.图1是根据本发明实施例一提供的一种分布式数据库的编码方法的流程图,本实施例可适用于基于分布式数据库进行编码的情况,该方法可以由分布式数据库的编码装置来执行,该分布式数据库的编码装置可以采用硬件和/或软件的形式实现,该分布式数据库的编码装置可配置于电子设备中。
43.可以理解的是,当前分布式数据库依据其侧重点不同,往往采用单一编码,如行式
编码或列式编码。如果选择行式编码,则在应对大数据量的分析查询时,无法充分利用现代cpu的计算能力(如simd指令)。同时,行式编码往往占用较多内存,对系统容量和并发度会有较大影响。如果选择列式编码,则在应对高并发的事务处理请求时,锁粒度过大,会极大降低系统的吞吐,对某些列式编码,甚至难以支持单条更新。即单一编码并不能高效地应对事务处理与分析查询混合的场景。
44.现有的技术方案中,部分htap数据库支持多个数据副本,如1行式副本+1列式副本,并通过特定复制协议保持分布式数据的一致性。即将数据存储为行式编码和列式编码两种格式,但是整个系统的存储使用量将翻倍,且需要复杂的并发控制及复制协议以支持数据多副本的一致性。
45.基于此,本发明实施例通过自适应选择不同的编码方式,能够更高效地处理oltp与olap混合的场景,提升整个系统的性能。如图1所示,该方法包括:
46.s110、当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式。
47.其中,数据获取请求可以认为是客户端用于获取待获取数据的请求,如数据获取请求可以为一条语句,用于指示计算节点返回待获取数据;待获取数据可以是指客户端所需的数据。数据信息可以是指数据获取请求中所包含的信息,用于确定待获取数据;第一编码格式则可以认为是待获取数据的编码格式。
48.本实施例中,当接收到客户端发送的数据获取请求时,可以认为此时客户端需要获取数据,那么首先可以确定数据获取请求的待获取数据的数据信息和第一编码格式,以便进行后续操作。示例性的,当数据获取请求为将表1和表2的数据进行连接,并按行式编码返回时,在接收此数据获取请求后,可以确定数据信息包括表1的数据、表2的数据、连接等,第一编码格式为行式编码格式。
49.s120、根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式。
50.中间数据可以认为是获取待获取数据的过程中需要先获取的数据,以根据中间数据来确定待获取数据。第二编码格式可以认为是中间数据的编码格式。在本实施例中,第二编码格式可以与第一编码格式相同,也可以不同。
51.可以认为的是,在上步骤确定了数据信息后,可以基于数据信息对与待获取数据对应的至少一个中间数据的第二编码格式进行确定,确定第二编码格式的方式不作限定,示例性的,可以基于数据信息估算与待获取数据对应的至少一个中间数据的数据大小,然后基于每个中间数据的数据大小对相应的第二编码格式进行确定。例如,当确定数据信息包括表1的数据、表2的数据、连接等时,可以认为中间数据为表1的数据和表2的数据,此时可以先估算表1数据的数据大小和表2数据的数据大小,然后分别对表1数据的第二编码格式和表2数据的第二编码格式进行确定,具体根据数据大小确定第二编码格式的手段不作进一步展开,可以根据实际情况进行确定。
52.s130、向存储节点发送中间数据获取指令,并接收所述存储节点基于所述中间数据获取指令返回的中间数据,所述中间数据获取指令用于指示所述存储节点返回具有第二编码格式的所述中间数据。
53.中间数据获取指令可以是指计算节点请求获取中间数据的指令,用于指示存储节
点返回具有第二编码格式的中间数据。
54.具体的,在确定与待获取数据对应的至少一个中间数据的第二编码格式之后,计算节点可以向存储节点发送中间数据获取指令,并接收存储节点基于中间数据获取指令返回的中间数据。可以认为的是,一个中间数据获取指令对应一个中间数据,中间数据的个数可能为一个,也可能为多个,一个中间数据存储的存储节点也可能为一个,也可能为多个,故计算节点向存储节点发送中间数据获取指令的具体情况可以根据中间数据的存储情况来确定。示例性的,中间数据a可能存储在一个存储节点,也可能分布存储在多个存储节点,当中间数据a存储在一个存储节点1时,计算节点则向存储节点1发送一个中间数据获取指令,并接收存储节点1返回的中间数据a;当中间数据a分布存储在存储节点21和22时,计算节点则分别向存储节点21和22发送中间数据获取指令,并接收存储节点21和22返回的中间数据a。
55.在一个实施方式中,多个中间数据对应的中间数据获取指令可以同时发送至存储节点,也可以按照先后顺序进行多个中间数据获取指令的发送。
56.在一个实施方式中,步骤s120和s130可以同时执行,也可以先执行步骤s120再执行s130,还可以在先执行步骤s120再执行s130之后,再次执行步骤s120、s130。
57.示例性的,在一个实施例中,可以先根据数据信息分别对中间数据m和中间数据n的第二编码格式进行确定,然后分别向存储节点发送中间数据获取指令3和中间数据获取指令4,并接收基于中间数据获取指令3返回的中间数据m和基于中间数据获取指令4返回的中间数据n。
58.在一个实施例中,还可以先根据数据信息对中间数据m的第二编码格式进行确定,然后向存储节点发送中间数据获取指令3,并接收基于中间数据获取指令3返回的中间数据m;随后根据中间数据m和数据信息确定中间数据n的第二编码格式,向存储节点发送中间数据获取指令4,并接收基于中间数据获取指令4返回的中间数据n。
59.s140、采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端。
60.在得到存储节点返回的中间数据后,可以采用第一编码格式对得到的中间数据进行编码,以得到待获取数据,得到待获取数据的具体过程不限,例如,可以对得到的中间数据进行计算,得到计算结果,并对计算结果进行编码后得到待获取数据。
61.本发明实施例一提供的一种分布式数据库的编码方法,当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式;根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式;向存储节点发送中间数据获取指令,并接收所述存储节点基于所述中间数据获取指令返回的中间数据,所述中间数据获取指令用于指示所述存储节点返回具有第二编码格式的所述中间数据;采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端。利用该方法,通过根据数据信息确定与待获取数据对应的至少一个中间数据的第二编码格式,能够使存储节点返回具有第二编码格式的中间数据,减少网络带宽的开销,同时,采用所述第一编码格式对所述中间数据进行编码,得到待获取数据,能够在无需修改系统协议的基础上,满足客户端不同场景的数据请求。
62.在一个实施例中,针对每一个中间数据,所述中间数据中包含至少一个中间数据
块,所述至少一个中间数据块采用与所述第二编码格式中的相同或不同子编码格式进行编码。
63.可以认为的是,在中间数据的数据大小过大的情况下,存储节点可以分块返回对应的中间数据,故计算节点接收的中间数据中可以包含多个中间数据块,且多个中间数据块间的编码格式为与第二编码格式中的相同或不同子编码格式。
64.在一个实施例中,所述根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式,包括:
65.针对每一个中间数据,估算所述中间数据的数据大小;
66.如果所述数据大小大于或等于第一数据大小阈值,则确定所述中间数据的第二编码格式为列式编码格式;
67.如果所述数据大小小于预设数据大小阈值,则确定所述中间数据的第二编码格式为行式编码格式。
68.第一数据大小阈值可以认为是数据大小的临界值,用于确定中间数据的第二编码格式,第一数据大小阈值的具体大小可以由经验值来确定,如可以根据服务器性能或当前的网络带宽情况来确定。
69.具体的,在根据数据信息确定与待获取数据对应的至少一个中间数据的第二编码格式的过程中,可以先针对每一个中间数据,对中间数据的数据大小进行估算,然后将估算的数据大小与第一数据大小阈值进行比较,可以确定数据大小是否小于第一数据大小阈值,例如,当数据大小大于或等于第一数据大小阈值时,可以认为当前中间数据的数据大小超过了数据大小的临界值,则可以将中间数据的第二编码格式确定为列式编码格式;当数据大小小于第一数据大小阈值时,可以认为当前中间数据的数据大小没有超过数据大小的临界值,则可以将中间数据的第二编码格式确定为行式编码格式。其中,估算中间数据的数据大小的具体方法不作限定,如计算节点可以根据自身对数据的统计信息来进行预测和估算。
70.在一个实施例中,在所述采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据之前,还包括:
71.将目标中间数据的编码格式转换为所述第一编码格式,所述目标中间数据为所采用的编码格式不为所述第一编码格式的中间数据。
72.其中,目标中间数据可以理解为所采用的编码格式不为第一编码格式的中间数据。
73.可以认为的是,当存在所采用的编码格式不为第一编码格式的中间数据时,可以在对中间数据进行编码,得到待获取数据之前,进行编码格式的转换,以便将所有的中间数据转换为相同的编码格式,即将目标中间数据的编码格式转换为第一编码格式。
74.实施例二
75.图2是根据本发明实施例二提供的一种分布式数据库的编码方法的流程图,本实施例可适用于基于分布式数据库进行编码的情况,该方法可以由分布式数据库的编码装置来执行,该分布式数据库的编码装置可以采用硬件和/或软件的形式实现,该分布式数据库的编码装置可配置于电子设备中。
76.如图2所示,该方法包括:
77.s210、接收计算节点发送的中间数据获取指令,所述中间数据获取指令用于指示返回具有第二编码格式的中间数据。
78.在计算节点向存储节点发送中间数据获取指令后,存储节点可以接收此中间数据获取指令,以进行后续具有第二编码格式的中间数据的返回。
79.s220、基于所述第二编码格式和所述存储节点的存储类型获取所述中间数据,并将所述中间数据发送至所述计算节点,所述存储类型为行式存储或者列式存储。
80.存储类型可以是指数据在存储节点中存储的类型,如存储类型可以为行式存储或者列式存储。
81.在接收到计算节点发送的中间数据获取指令后,可以根据第二编码格式和存储节点的存储类型对中间数据进行获取,并将获取的中间数据发送至计算节点,以完成中间数据的返回。本实施例不对获取中间数据的过程进行限定,只要能获取倒中间数据即可。
82.本发明实施例二提供的一种分布式数据库的编码方法,接收计算节点发送的中间数据获取指令,所述中间数据获取指令用于指示返回具有第二编码格式的中间数据;基于所述第二编码格式和所述存储节点的存储类型获取所述中间数据,并将所述中间数据发送至所述计算节点,所述存储类型为行式存储或者列式存储。利用该方法,通过基于第二编码格式和存储节点的存储类型获取中间数据,能够使存储节点返回具有第二编码格式的中间数据,减少网络带宽的开销;同时存储节点的数据为单一的存储类型,能够在满足系统要求的同时,减少内存的占用,进一步降低系统的复杂度。
83.在一个实施例中,所述基于所述第二编码格式和所述存储节点的存储类型获取所述中间数据,包括:
84.如果所述第二编码格式和所述存储节点的存储类型相对应,则获取所述存储节点中存储的目标数据,作为所述中间数据;
85.如果所述第二编码格式和所述存储节点的存储类型不对应,则获取所述存储节点中存储的目标数据,将所述中间数据的编码格式转换为所述第二编码格式,并将转换后的目标数据作为所述中间数据;
86.其中,所述目标数据与所述中间数据获取指令对应。
87.目标数据可以认为是存储节点中存储的与中间数据获取指令对应的数据。
88.在本实施例中,可以将第二编码格式和存储节点的存储类型进行对应,并根据对应结果来获取中间数据,例如当第二编码格式和存储节点的存储类型相对应时,可以认为存储节点的存储类型与要求的编码格式一致,此时可以直接获取存储节点中存储的目标数据,并将目标数据作为中间数据;当第二编码格式和存储节点的存储类型不对应时,可以认为存储节点的存储类型与要求的编码格式不一致,那么在获取到存储节点中存储的目标数据后,需要进行编码格式的转换,即将中间数据的编码格式转换为第二编码格式,并将转换后的目标数据作为中间数据。
89.在一个实施例中,所述将所述中间数据发送至所述计算节点,包括:
90.如果所述中间数据的数据大小大于第二数据大小阈值,则按照所述中间数据的数据大小,将所述中间数据切分为至少两个中间数据块,并将所述至少两个中间数据块发送至所述计算节点;
91.如果所述中间数据的数据大小小于或等于第二数据大小阈值,则将所述中间数据
作为一个中间数据块发送至所述计算节点。
92.第二数据大小阈值可以认为是数据大小的临界值,用于确定中间数据的发送过程,第二数据大小阈值可以与第一数据大小阈值相同,也可以不同,本实施例对此不作限制。
93.在一个实施例中,可以当中间数据的数据大小不同时,中间数据的发送过程可以有所区别,
94.具体的,当中间数据的数据大小大于第二数据大小阈值时,可以认为当前中间数据的数据大小超过了数据大小的临界值,则可以将中间数据切分为至少两个中间数据块,并将至少两个中间数据块发送至计算节点;当中间数据的数据大小小于或等于第二数据大小阈值时,可以认为当前中间数据的数据大小未超过数据大小的临界值,则可以将中间数据作为一个中间数据块发送至计算节点。具体切分的规则不限,如每个中间数据块的行数可以为设定行数,或者每个中间数据块的大小可以为设定大小,设定行数和设定大小可以由相关人员进行设置,如设定行数可以为16384行,设定大小可以为16mb。
95.在一个实施例中,不同中间数据块间的编码格式可以为与第二编码格式中的相同或不同子编码格式。
96.子编码格式可以是指将第二编码格式具体划分的编码格式,如当第二编码格式为列式编码格式时,子编码格式可以包括行程编码、字典编码、增量编码等。即不同中间数据块间的子编码格式可以相同或不同,具体情况可以根据中间数据块内数据的数据类型来确定,示例性的,在中间数据的数据大小大于第二数据大小阈值时,可以将中间数据切分为两个中间数据块,在中间数据块a为重复的比特或字符序列时,可以采用行程编码格式对中间数据块a进行编码后发送至计算节点,在中间数据块b为数字序列时,可以采用增量编码格式对中间数据块b进行编码后发送至计算节点。
97.图3是根据本发明实施例二提供的一种分布式数据库的编码方法的结构示意图,如图3所示,首先客户端可以发送客户端请求(即数据获取请求)至计算节点,在计算节点接收到客户端请求时,可以解析此请求并生成执行计划(即确定所述数据获取请求的待获取数据的数据信息和第一编码格式;根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式),然后向存储节点进行请求下发(即向存储节点发送中间数据获取指令)。
98.存储节点收到后,根据中间数据获取指令进行查询或过滤,并在第二编码格式(即行式编码)和存储节点的存储类型(即行式存储)相对应的情况下,保持行式编码,将存储节点中存储的目标数据作为中间结果(即中间数据)返回至计算节点(即基于所述第二编码格式和所述存储节点的存储类型获取所述中间数据,并将所述中间数据发送至所述计算节点)。
99.在一个实施例中,在计算节点接收到中间结果(即接收所述存储节点基于所述中间数据获取指令返回的中间数据)后,可以传递给其他算子,经其他算子计算后进行行式编码,得到结果集,并返回结果集至客户端(即采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端)。
100.在另一个实施例中,在计算节点接收到中间结果后,计算节点可以继续向存储节点进行请求下发(即向存储节点发送中间数据获取指令),若第二编码格式为列式编码,则
存储节点收到此请求后,根据中间数据获取指令进行查询或过滤,并在第二编码格式(即列式编码)和存储节点的存储类型(即行式存储)不对应的情况下,将存储节点中存储的目标数据进行列式编码,并将得到的结果返回至计算节点(即获取所述存储节点中存储的目标数据,将所述中间数据的编码格式转换为所述第二编码格式,并将转换后的目标数据作为所述中间数据)。
101.在计算节点接收到中间结果(即接收所述存储节点基于所述中间数据获取指令返回的中间数据)后,可以经其他算子计算后进行行式编码,得到结果集,并返回结果集至客户端(即采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端)。
102.通过上述描述可以发现,本发明实施例的存储节点采用某种确定的编码格式,如行式编码(对偏重oltp的系统较为常见);存储节点的对外接口支持行式编码网络协议与列式编码网络协议;计算节点可以通过选择合适的执行计划(即相应的中间结果编码格式)向存储节点发送请求;存储节点返回相应编码的结果集。
103.此外,对数据量较大的结果集,本实施例还可以切分为多个数据块(例如每块16384行或16mb),并基于数据库的预先统计与运行时采样,对每个块进行不同的编码。同时,计算节点各算子支持多种编码格式的处理;最终使得结果集根据客户端协议转换为相应的行式或列式编码。
104.可见,本发明实施例能够根据数据特征与当前查询特性,生成执行计划的同时选择中间结果集的编码格式,且执行引擎对大数据量的中间结果,可采用自适应的块间编码。
105.综上,本发明实施例选择合适的编码格式方式,对事务处理请求可直接采用行式编码,高效转发存储引擎的数据包;对分析查询的场景,通过自定义网络协议,能够支持由存储引擎发送列式编码,大幅降低网络带宽的开销,且可基于列式编码进行高效的扫描、过滤、聚合计算。即本发明无需修改存储引擎和数据复制协议,不会大幅增加系统复杂度。
106.实施例三
107.图4是根据本发明实施例三提供的一种分布式数据库的编码装置的结构示意图。如图4所示,该装置包括:
108.第一确定模块310,用于当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式;
109.第二确定模块320,用于根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式;
110.发送模块330,用于向存储节点发送中间数据获取指令,并接收所述存储节点基于所述中间数据获取指令返回的中间数据,所述中间数据获取指令用于指示所述存储节点返回具有第二编码格式的所述中间数据;
111.编码模块340,用于采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端。
112.本发明实施例三提供的一种分布式数据库的编码装置,通过第一确定模块310当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式;通过第二确定模块320根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式;通过发送模块330向存储节点发送中间数据获取指令,并
接收所述存储节点基于所述中间数据获取指令返回的中间数据,所述中间数据获取指令用于指示所述存储节点返回具有第二编码格式的所述中间数据;通过编码模块340采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端。利用该装置,通过根据数据信息确定与待获取数据对应的至少一个中间数据的第二编码格式,能够使存储节点返回具有第二编码格式的中间数据,减少网络带宽的开销,同时,采用所述第一编码格式对所述中间数据进行编码,得到待获取数据,能够在无需修改系统协议的基础上,满足客户端不同场景的数据请求。
113.可选的,针对每一个中间数据,所述中间数据中包含至少一个中间数据块,所述至少一个中间数据块采用与所述第二编码格式中的相同或不同子编码格式进行编码。
114.可选的,所述第二确定模块320用于:
115.针对每一个中间数据,估算所述中间数据的数据大小;
116.如果所述数据大小大于或等于第一数据大小阈值,则确定所述中间数据的第二编码格式为列式编码格式;
117.如果所述数据大小小于预设数据大小阈值,则确定所述中间数据的第二编码格式为行式编码格式。
118.可选的,本发明实施例提供的分布式数据库的编码装置还包括:
119.转换模块,用于在所述采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据之前,将目标中间数据的编码格式转换为所述第一编码格式,所述目标中间数据为所采用的编码格式不为所述第一编码格式的中间数据。
120.本发明实施例所提供的分布式数据库的编码装置可执行本发明任意实施例所提供的分布式数据库的编码方法,具备执行方法相应的功能模块和有益效果。
121.实施例四
122.图5是根据本发明实施例四提供的一种分布式数据库的编码装置的结构示意图。如图5所示,该装置包括:
123.接收模块410,用于接收计算节点发送的中间数据获取指令,所述中间数据获取指令用于指示返回具有第二编码格式的中间数据;
124.获取模块420,用于基于所述第二编码格式和所述存储节点的存储类型获取所述中间数据,并将所述中间数据发送至所述计算节点,所述存储类型为行式存储或者列式存储。
125.本发明实施例四提供的一种分布式数据库的编码装置,通过接收模块410,接收计算节点发送的中间数据获取指令,所述中间数据获取指令用于指示返回具有第二编码格式的中间数据;通过获取模块420并将所述中间数据发送至所述计算节点,所述存储类型为行式存储或者列式存储。利用该装置,通过基于第二编码格式和存储节点的存储类型获取中间数据,能够使存储节点返回具有第二编码格式的中间数据,减少网络带宽的开销;同时存储节点的数据为单一的存储类型,能够在满足系统要求的同时,减少内存的占用,进一步降低系统的复杂度。
126.可选的,所述获取模块410用于:
127.如果所述第二编码格式和所述存储节点的存储类型相对应,则获取所述存储节点中存储的目标数据,作为所述中间数据;
128.如果所述第二编码格式和所述存储节点的存储类型不对应,则获取所述存储节点中存储的目标数据,将所述中间数据的编码格式转换为所述第二编码格式,并将转换后的目标数据作为所述中间数据;
129.其中,所述目标数据与所述中间数据获取指令对应。
130.可选的,所述获取模块420用于:
131.如果所述中间数据的数据大小大于第二数据大小阈值,则按照所述中间数据的数据大小,将所述中间数据切分为至少两个数据块,并将所述至少两个数据块发送至所述计算节点;
132.如果所述中间数据的数据大小小于或等于第二数据大小阈值,则将所述中间数据作为一个数据块发送至所述计算节点。
133.本发明实施例所提供的分布式数据库的编码装置可执行本发明任意实施例所提供的分布式数据库的编码方法,具备执行方法相应的功能模块和有益效果。
134.实施例五
135.图6示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
136.如图6所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(rom)12、随机访问存储器(ram)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(rom)12中的计算机程序或者从存储单元18加载到随机访问存储器(ram)13中的计算机程序,来执行各种适当的动作和处理。在ram 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、rom 12以及ram 13通过总线14彼此相连。输入/输出(i/o)接口15也连接至总线14。
137.电子设备10中的多个部件连接至i/o接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
138.处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如方法分布式数据库的编码。
139.在一些实施例中,方法分布式数据库的编码可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由rom 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到ram 13并由处理器11执行时,可以执行上文描述的方法分布式数据库的编码的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于
固件)而被配置为执行方法分布式数据库的编码。
140.本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
141.用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
142.在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
143.为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
144.可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)、区块链网络和互联网。
145.计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与vps服务中,存在的
管理难度大,业务扩展性弱的缺陷。
146.应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
147.上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
148.实施例六
149.图7是根据本发明实施例六提供的一种分布式数据库的编码系统的结构示意图,如图7所示,该装置包括:至少一个计算节点1和至少一个存储节点2(图中以一个计算节点和一个存储节点为例);
150.计算节点1用于当接收到客户端发送的数据获取请求时,确定所述数据获取请求的待获取数据的数据信息和第一编码格式,根据所述数据信息确定与所述待获取数据对应的至少一个中间数据的第二编码格式,向存储节点2发送中间数据获取指令,并接收所述存储节点2基于所述中间数据获取指令返回的中间数据,采用所述第一编码格式对所述中间数据进行编码,得到所述待获取数据,并发送所述待获取数据至所述客户端;
151.存储节点2用于接收计算节点1发送的中间数据获取指令,基于所述第二编码格式和所述存储节点2的存储类型获取所述中间数据,并将所述中间数据发送至所述计算节点1。
152.其中,计算节点1和存储节点2可以认为是某设备,如服务器,计算节点1和存储节点2的具体类型不限。
153.在一个实施例中,所述计算节点支持至少两种编码格式的处理。
154.计算节点1可以支持至少两种编码格式的处理,如可以支持行式编码格式和列式编码格式的处理等,在此基础上,能够提高分布式数据库的编码系统的效率和性能。
155.在一个实施例中,所述存储节点的对外接口支持行式编码网络协议和/或列式编码网络协议。
156.可以认为的是,存储节点2的对外接口能够支持行式编码网络协议和/或列式编码网络协议,以满足不同编码格式的需要,适应更多的编码场景。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1