CN116263776A - 一种针对数据库的数据访问方法、装置及设备 - Google Patents
一种针对数据库的数据访问方法、装置及设备 Download PDFInfo
- Publication number
- CN116263776A CN116263776A CN202111539845.4A CN202111539845A CN116263776A CN 116263776 A CN116263776 A CN 116263776A CN 202111539845 A CN202111539845 A CN 202111539845A CN 116263776 A CN116263776 A CN 116263776A
- Authority
- CN
- China
- Prior art keywords
- execution
- execution plan
- data
- operators
- operator
- 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 70
- 238000003860 storage Methods 0.000 claims description 50
- 238000012545 processing Methods 0.000 claims description 35
- 238000004364 calculation method Methods 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 238000013528 artificial neural network Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 10
- 238000001914 filtration Methods 0.000 description 10
- 239000000284 extract Substances 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013523 data management 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
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000001960 triggered effect Effects 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/245—Query processing
- G06F16/2452—Query translation
-
- 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
-
- 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/258—Data format conversion from or to a database
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
一种针对数据库的数据访问方法、装置及设备。本申请适用于客户端针对不同数据库发起数据访问指令的场景中,指令执行装置获取第一执行计划,该第一执行计划为基于任一数据库中发起的数据访问指令生成的。指令执行装置根据第一执行计划,生成第二执行计划;之后再基于第二执行计划访问数据库中的数据。指令执行装置能够处理来自不同数据库的第一执行计划,适配于不同的数据库,匹配度较高。由指令执行装置来执行数据访问操作,也能够有效提升数据访问效率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种针对数据库的数据访问方法、装置及设备。
背景技术
目前,开源数据库,如PostgreSQL、MySQL、Oracle Database,被广泛使用。开源数据库能够实现数据存储以及数据管理。常见的开源数据库主要应用于联机事务处理(on-line transaction processing,OLTP)场景中,能够较为便捷的对数据进行增加、删除、查看、修改等操作。而开源数据库在联机分析处理(on-line analytical processing,OLAP)场景中,表现较差,无法应对较为复杂的数据分析需求。
为了能够提升开源数据库的数据分析能力,开发者致力于为不同的开源数据库进行深度定制,为开源数据库开发执行引擎。
但是这种深度定制的方式,是针对单一的开源数据库进行的,无法兼容不同的开源数据库。
发明内容
本申请提供一种针对数据库的数据访问方法、装置及设备,用以解决现有技术中问题。
第一方面,本申请实施例提供了一种针对数据库的数据访问方法,该方法可以由指令执行装置执行,该方法可以应用于客户端针对不同数据库发起数据访问指令的场景中,在该方法中:指令执行装置可以先获取第一执行计划,该第一执行计划可以来自于任一数据库,第一执行计划是基于任一数据库中发起的数据访问指令生成的。指令执行装置可以根据第一执行计划,生成第二执行计划;之后再基于第二执行计划访问数据库中的数据。
通过上述方法,指令执行装置能够处理来自不同数据库的第一执行计划,适配于不同数据库,匹配度较高。另外,由指令执行装置来执行数据访问操作,能够有效提升数据访问效率。
在一种可能的实施方式中,指令执行装置在生成第二执行计划时,可以对第一执行计划进行处理。该处理包括如下的部分或全部:
对第一执行计划中的算子进行拆分、对第一执行计划中的算子进行合并、对第一执行计划中的算子进行映射、调整第一执行计划中的算子的执行顺序、第一执行计算中的算子配置数据输入格式、为第一执行计算中的算子选择执行硬件。
通过上述方法,指令执行装置可以对第一执行计划进行多种不同的处理操作,以便能够较为高效、灵活的将第一执行计划转换为第二执行计划。
在一种可能的实施方式中,指令执行装置在基于第二执行计划对访问数据库中的数据时,可以从数据库中读取数据表;之后,再按照第二执行计划中算子的执行顺序执行第二执行计划中的算子,访问该数据表。
通过上述方法,指令执行装置能够自行从数据库中读取数据表,并按照第二执行计划访问该数据表中的数据,指令执行装置可以独立完成整个数据访问操作,保证了数据访问效率。
在一种可能的实施方式中,指令执行装置在基于第二执行计划中算子的执行顺序执行第二执行计划中的算子时,指令执行装置可以根据第二执行计划中算子的数据输入格式,对数据表进行格式转换;指令执行装置还可以根据为第二执行计划中算子选择的执行硬件,配置执行硬件,以使得执行硬件执行算子;并触发执行硬件执行算子。
通过上述方法,指令执行装置调整数据表的格式,为算子配置执行硬件,能够保证第二执行计划能够高效执行。
在一种可能的实施方式中,指令执行装置在触发执行硬件执行算子时,执行硬件创建多个计算线程;该多个计算线程可以并行运行执行算子。
通过上述方法,通过多个计算线程可以保证执行算子的高效性。
在一种可能的实施方式中,数据输入格式为以行存的数据格式、或以列存的数据格式。
通过上述方法,指令执行装置可以按照算子的计算特点配置对应的数据输入格式,进一步保证了算子的执行效率。
在一种可能的实施方式中,执行硬件包括下列的部分或全部:
CPU、GPU、DPU、NPU、TPU。
通过上述方法,指令执行装置可以按照算子的计算特点为算子配置执行硬件,使得该执行硬件可以高效的执行该算子。
第二方面,本申请实施例还提供了一种指令执行装置,该指令执行装置具有实现上述第以第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,所述指令执行装置的结构中包括获取模块、生成模、以及访问模块,这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第三方面,本申请实施例还提供了一种计算设备,该计算设备具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。所述计算设备的结构中包括处理器和存储器,所述处理器被配置为支持所述计算设备执行上述第一方面方法中相应的功能。所述存储器与所述处理器耦合,其保存所述计算设备必要的程序指令和数据。所述计算设备的结构中还包括通信接口,用于与其他设备进行通信,如可以获取第一执行计划以及数据库中的数据表。
第四方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
第五方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
第六方面,本申请还提供一种计算机芯片,所述芯片与存储器相连,所述芯片用于读取并执行所述存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实施方式中所述的方法。
附图说明
图1为本申请提供的一种系统的架构示意图;
图2为本申请提供的一种针对数据库的数据访问方法示意图;
图3为本申请提供的一种第一执行计划的示意图;
图4为本申请提供的一种第一执行计划转换为候选执行计划的示意图;
图5为本申请提供的一种硬件编程框架的结构示意图;
图6为本申请提供的一种第二执行计划中的执行流程图;
图7为本申请提供的一种指令执行装置的结构示意图;
图8为本申请提供的一种计算设备的结构示意图。
具体实施方式
如图1所示,为本申请实施例提供的一种系统结构示意图,该系统中包括指令执行装置110以及至少一个存储设备120,指令执行装置110与存储设备120连接。可选的,该系统中还包括应用服务器130。
应用服务器130部署在用户侧,用户可以通过操作该应用服务器130上部署的数据库客户端软件触发应用服务器130,生成数据访问指令,并将生成的数据访问指令发送至存储设备120。
其中,该数据访问指令用于访问数据库中的数据。应用服务器130可以是物理机,也可以是虚拟机。应用服务器130包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。应用服务器130通过网络连接存储设备120,以从存储设备120中获取数据库中的数据。
在本申请实施例中,存储设备120可以存储系统中的节点,该存储系统可以是集中式存储系统,也可以是分布式存储系统。该至少一个存储设备120运行有数据库服务端软件,该至少一个存储设备120用于存储数据库中的数据。存储设备120可以接收来自应用服务器130的数据访问指令,对该数据访问指令进行处理。在本申请实施例中,存储设备120可以解析该数据访问指令,根据该数据访问指令生成第一执行计划。
指令执行装置110与存储设备120连接,指令执行装置110可以调取该第一执行计划,基于该第一执行计划访问数据库中的数据。
对于指令执行装置110,该指令执行装置110所获取的第一执行计划,是基于针对任一数据库发起的数据访问指令生成的。对于用于访问不同数据库中数据的数据访问指令,在存储设备120的处理下可以生成不同的执行计划。指令执行装置110可以处理该不同的执行计划,可见,指令执行装置110适用于不同的数据库,具有普适性。指令执行装置110基于该第一执行计划访问存储设备120中存储的数据的方式可以参见图2所示的实施例。
本申请实施例并不限定该指令执行装置110的具体形态,该指令执行装置110可以为一个硬件装置,如服务器、终端计算设备、或部署在存储设备120中的硬件模块。该指令执行装置110也可以为软件装置,如该指令执行装置110可以运行在服务器或终端计算设备上的应用程序、或存储设备120上运行的数据库软件中的功能插件。
在本申请实施例中,指令执行装置110能够处理来自任一数据库的执行计划,具备较强的兼容性。指令执行装置110接收到来自任一数据库的执行计划之后,通过处理来自任一数据库的执行计划,对数据库中的数据进行访问。数据访问的操作由指令执行装置110代替存储装置来实现,可以加快数据访问流程,提高数据访问效率。
下面结合附图2对本申请实施例提供的一种针对数据库的数据访问方法进行说明,该方法包括:
步骤201:应用服务器130向存储设备120发送数据访问指令,该数据访问指令用于访问数据库中的目标数据。
用户可以对应用服务器130上运行的数据库客户端软件进行操作,如指示访问数据库的某些数据,或指示对数据库中的一些数据进行计算等,触发应用服务器130向存储设备120发起数据访问指令。该数据访问指令指示了需要访问的目标数据以及访问的方式。
以MySQL为例,用户可以在MySQL客户端(client)的界面中键入SQL语句,如键入的SQL语句可以表征查看某个数据表中符合特定要求的一行或多行数据,又如键入的SQL语句可以表征对于某个数据表中一列数据中符合特定要求的数据进行求和、求平均、取最小值或取最大值。这样SQL语句实质上表征了用户需要访问的目标数据以及访问的方式(如提取一行或多行数据、排序、进行求和、求平均、取最小值或取最大值等运算)。应用服务器130在检测到键入的SQL语句后,生成数据访问指令,该数据访问指令中携带该SQL语句。
步骤202:存储设备120在接收到数据访问指令之后,存储设备120解析数据访问指令,生成第一执行计划。
存储设备120通过解析数据访问指令能够确定应用服务器130所需要访问的目标数据以及访问的方式。
存储设备120在处理数据访问指令时,会根据该数据访问指令中所指示的需要访问的目标数据以及访问的方式,会生成第一执行计划,该第一执行计划描述了访问目标数据所需采用的算子、以及算子的执行顺序。
一种算子表征了对数据的一种处理方式。不同的数据库所支持的算子存在一定的区别,即便是实现相同功能的算子,算子的具体执行方式也会存在区别。例如,MySQL和PostgreSQL中均支持浏览(scan)算子,该浏览(scan)算子表示提取数据表中的部分或全部数据。但是在MySQL中的scan算子在提取数据时,算子内部采用单线程的方式,也即只有一个线程在进行数据提取。PostgreSQL中的scan算子在提取数据时,算子内部采用多线程的方式,也即由多个线性并行进行数据提取。
这里需要说明的是,在第一执行计划中在描述所采用的算子时,可以描述该算子的名称、该算子所需处理的数据、该算子处理数据的约束条件等。以MySQL为例,当第一执行计划中包括过滤(filter)算子时,第一执行计划中描述该过滤算子时,标记该算子的名称为过滤算子,标记该算子需要对数据表A进行处理,还会记录该算子需要选择数据表A中行B的值大于10的数据,选择表中行B的值大于10的数据即可理解为该算子处理数据的约束条件。
由于存储设备120中部署了特定的数据库,故存储设备120所生成的第一执行计划是针对该存储设备120所部署的数据库有效的执行计划。
这里以数据访问指令指示需要从数据表A中对列A的数据、以及列B中值大于10的数据进行组合。如图3所示,为本申请提供的一种第一执行计划的示意图。为了便于理解将第一执行计划绘制为树状结构。
该第一执行计划分为两个分支,分支1中包括一个浏览算子1,浏览算子1用于从数据表A中提取列A。分支2中包括一个浏览算子2和一个过滤算子,浏览算子2用于从数据A中提取列B,过滤算子用于从列B中过滤出值大于10的数据。这两个分支的汇合处为一个连接(join)算子。该连接算子用于对列A的数据、以及列B中值大于10的数据进行组合。
步骤203:存储设备120在生成了第一执行计划之后,可以向指令执行装置110发送该第一执行计划。
在本申请实施例中,存储设备120可以直接将该第一执行计划发送给指令执行装置110,也可以先进行判断,确定该第一执行计划是否需要发送给指令执行装置110。存储设备120可以设置有配置发送条件,如该发送条件可以为执行计划中算子的数量大于阈值A,或该执行计划的分支数大于阈值B。当存储设备120确定第一执行计划满足该发送条件时,可以执行步骤203。
在本申请实施例中,存储设备120在生成了第一执行计划之后,存储设备120可以不按照第一执行计划访问目标数据,而是将该第一执行计划交由指令执行装置110。由指令执行装置110来处理该第一执行计划,访问目标数据,将数据访问的操作移交于指令执行装置110,以实现加速访问的效果,指令执行装置110处理该第一执行计划的方式可以参见步骤204~步骤207。
指令执行装置110在处理该第一执行计划时,可以先生成第二执行计划(步骤204~步骤205),之后,再基于第二执行计划,访问目标数据(步骤206~步骤207)。
步骤204:指令执行装置110对第一执行计划进行转换,生成候选执行计划。
指令执行装置110可以维护一个标准算子库,该标准算子库包括多个算子。对于任一数据库,该数据库所支持的算子与该标准算子库中的算子之间能够进行转换。例如,数据库所支持的一个算子可以拆分为该标准算子库中的多个算子(简称算子的拆分)。又例如,该数据库所支持的多个算子也可以合并为该标准算子库中的一个或多个算子(简称算子的合并)。又例如,该数据库所支持的一个算子可以转换为该标准算子库中的能够实现相同计算操作的一个算子(也即算子间的一一映射)。
以MySQL为例,MySQL有独立的过滤(filter)算子和浏览(scan)算子,标准算子库中的浏览算子本身具备过滤功能,故而,可以将MySQL的scan和filter算子合并为标准算子库中的浏览算子。
指令执行装置110在获取该第一执行计划后,可以分析该第一执行计划中的算子,可以将第一执行计划中的算子映射为标准算子库中的算子,可以将第一执行计划中的多个算子合并为标准算子库中的一个或多个算子,也可以将第一执行计划中的一个算子拆分为标准算子库中的多个算子,生成候选执行计划。
指令执行装置110除了对第一执行计划中算子本身的转换,还可以分析该第一执行计划中算子的执行顺序,在将第一执行计划转换为候选执行计划时,也可以调整第一执行计划中算子的执行顺序。
举例来说,存储设备120设备所生成的第一执行计划中可能会存在一些不符合计算逻辑或浪费计算资源的执行顺序。以数据访问指令指示对数据表A的列A中大于10的数据取整的时,第一执行计划中可以记录如下算子以及算子的执行顺序:先调用浏览算子提取数据表A中列A的数据,之后,调用取整算子对列A中的数据取整,最后,再调用过滤算子提取列A中大于10的数据。第一执行计划中先进行取整后进行数据,会导致在进行取整时对不大于10的数据也进行了取整,进行了一些不必要的计算。指令执行装置110在转换该第一执行计划时,可以调整取整算子以及过滤算子的顺序,在浏览算子提取数据A中列A的数据之后,过滤算子先提取列A中大于10的数据,最后再调用取整算子对列A中大于10的数据取整。
如图4所示,为指令执行装置110将第一执行计划转换为候选执行计划的方式,图4中展示了一一映射(从算子C到算子c、从算子E到算子e、从算子H到算子h、算子的拆分(由算子D拆分为算子d1和算子d2)、算子的合并(将算子A和算子B合并为算子AB)、以及执行顺序(调换算子F和算子G的顺序)调整这四种方式。
在步骤204中所生成的候选执行计划,该候选执行计划中包括的算子是标准算子库中的算子,也即已经不包括数据库中所支持的算子。采用这种转换方式,能够将对不同数据库的有效的执行计划进行转换,所转换成的执行计划是基于标准算子库所形成的执行计划。使得这种执行计划的转换方式适用于不同的数据库。
指令执行装置110在生成了该候选执行计划之后,可以直接基于该候选执行计划访问目标数据。指令执行装置110也可以对该候选执行计划进行进步一步优化,也即执行步骤205。
步骤205:指令执行装置110对候选执行计划进行优化,生成第二执行计划。
在本申请实施例中,指令执行装置110对第二执行计划的优化方式有多种,下面列举其中几种:
方式一、为第二执行计划中的算子选择执行硬件。
该指令执行装置110所能调用的执行算子的执行硬件可以有多种。该执行硬件通常是指一些具备计算功能的组件。例如,中央处理器(CPU)、图形处理器(graphicsprocessing unit,GPU)、深度学习处理器(deep-learning processing unit,DPU)、神经网络处理器(neural-network processing unit,NPU)等。
对于同一算子,不同硬件执行该算子的效率不同,例如,对于一些复杂计算类的算子,如浏览算子、或聚类(group by)算子,GPU的执行效率明显会高于CPU,GPU更适合于这类复杂计算的算子,CPU适合于一些简单操作的算子,如连接算子等。指令执行装置110可以为第二执行计划中不同的算子选择相应的执行硬件,可以保证后续基于该第二执行计划访问目标数据时,该第二执行计划能够高效运行。
方式二、为第二执行计划中的算子配置数据输入格式。
鉴于第二执行计划中算子需处理的数据以及该算子处理数据时的约束条件,不同算子所需要的数据输入格式不同。
举例来说,当浏览算子需要以行为粒度提取表中的数据,如浏览算子需要提取数据表A中第一行到第十行的数据。浏览算子中可以输入的数据表A为行存的数据表A。当浏览算子需要以列为粒度提取表中的数据,如浏览算子需要提取数据表A中第2列到第5列的数据。浏览算子中可以输入的数据表A为列存的数据表A。
其中,行存的数据表是指数据表在存储时,数据是按照行进行排列、组织存储的。列存的数据表是指数据表在存储时,数据是按照列进行排列、组织存储的。
故而,指令执行装置110可以结合第二执行计划中算子自身的计算特点(如算子需处理的数据以及该算子处理数据时的约束条件)为第二执行计划中的算子选择该算子的数据输入格式,也即配置该算子的数据输入格式为行存的数据还是列存的数据。
需要说明的是,通常任一执行计划(如第一执行计划、第二执行计划)均可抽象为一个树状结构。该树状结构中每个分支中包括至少一个算子,每个分支中的算子采用串行的方式执行,也即前一个算子的输出为后一个算子的输入。分支中算子的执行顺序为由下至上的执行顺序,指令执行装置110可以为第二执行计划中的算子配置数据输入格式时,可以仅配置每个分支中第一个执行的算子(也即分支中位置最靠下的算子)的数据输入格式。
指示处理装置可以采用上述两种方式中的部分或全部,对该第二执行计划进行优化。另外,上述指令执行装置110优化第二执行计划的方式仅是举例,本申请并不限定优化第二执行计划的方式。
在生成了第二执行计划之后,指令执行装置110就可以执行该第二执行计划。具体可见步骤206~步骤207。
步骤206:指令执行装置110从存储设备120中读取目标数据所在的数据表,基于优化后的第二执行计划访问该数据表中的目标数据。
指令执行装置110与该存储设备120连接,可以从存储设备120中读取数据库中的数据表。指令执行装置110在获取目标数据所在的数据表后,可以按照第二执行计划中算子的数据输入格式对数据表进行转换,如转换为行存的数据表或列存的数据表。指令执行装置110还可以按照该第二执行计划为该第二执行算子中的每个算子配置执行硬件。
由于第二执行计划可能存在多个分支,指令执行装置110可以按照第二执行计划中每个分支中第一个算子的数据输入格式对数据表进行转换。为了能够进一步提升数据转换效率,指令执行装置110可以调用多个线程,该多个线程可以并行地对数据表进行转换。一个线程与第二执行计划中的一个分支对应,线程可以按照第二执行计划中对应的分支中第一个算子的数据输入格式对数据表进行转换。
考虑到不同硬件上算子的代码实现可能不同,指令执行装置110按照该第二执行计划为该第二执行计划中的每个算子配置执行硬件时,在确定了该算子的执行硬件后,可以将该算子编译为该执行硬件所支持的代码。
指令执行装置110中可以支持如图5所示的硬件编程框架,以实现算子选择执行硬件以及算子的编译功能。下面对该硬件编程架构中的各个组成部分进行说明。
1)、算子流程层。
算子流程层用于实现与硬件无关的算子流程,在本申请实施例中算子流程层主要用于解析第二执行计划。
2)、算法层。
算法层用于维护算子与硬件的关系。在本申请实施例中,算法层能够根据第二执行计划中每个算子的执行硬件确定算子的实现方式,以保证算子的实现方式能够与该算子的执行硬件进行匹配。
3)、代码生成层。
代码生成层用于编译与硬件相关的代码。在本申请实施例中,代码生成层可以包括多个代码生成接口,每个代码生成接口用于编译一种硬件相关的代码。代码生成层可以根据第二执行计划中算子的执行硬件,为其选择该执行硬件对应的代码生成接口。该代码生成接口可以生成用于实现该算子的代码,该代码与该算子的执行硬件匹配。图中示例性的展示了GPU的代码生成接口、DPU的代码生成接口以及ARM的代码生成接口。
4)、中间表示(intermediate representation,IR)层与后端。
IR是代码实现的中间表示。IR通常与硬件无关。也即不同硬件的代码的中间表示相同。不同硬件的后端(如GPU后端、DPU后端以及ARM后端)可以基于IR生成相应硬件的可执行二进制文件。
需要说明的是,上述硬件编程框架仅是以功能进行了简单划分,图5所示的划分方式仅是举例。
当指令执行装置110在将算子编译为执行硬件匹配的代码,并为第二执行计划中的算子的输入数据转换为相应的数据输入格式,该执行硬件可以运行代码,执行该算子,实现该算子所表征的处理方式。
参见图6为第二执行计划中的执行流程。指令执行装置110可以通过与存储设备120之间的接口从存储设备120的盘(disk)中获取数据库(如MySQL、PostgreSQL、Greenplum)中的数据表。通过接口获取的数据交于指令执行装置110为进行数据格式转换所创建的多个线程(为了方便说明,进行数据格式转换的线程可以称为行列转换线程)。该多个行列转换线程将转换后的数据输入到分批处理(batch)模型中。batch模型主要用于对批量数据进行管理,能够将数据传递给各个算子。batch模型中数据的传递方式为先进先出,也即先进入batch模块的数据,会先从batch模型中流出。
对于第二执行计划中每个分支中的第一个算子,执行硬件开始执行该算子(也即该执行硬件运行用于实现该算子的代码)时,执行硬件中可以创建一个或多个计算线程,当创建多个计算线程后,该多个计算线程能够并行运行用于执行该算子。该多个计算线程可以并行地从batch模型中读取该算子的输入数据。
当该多个计算线程可以并行地读取该算子的输入数据后,该多个计算线程可以并行进行计算,以执行该算子。该多个计算线程进行完成后,该多个计算线程计算完成后的数据作为第二个算子的输入数据,实现算子之间的数据流动。该第二个算子的执行硬件也可以创建一个或多个计算线程,该一个或多个计算线程获取用于输入数据,以执行第二个算子。该分支中剩余算子的执行方式可以采用类似的方式,直至执行到该分支的最后一个算子。
为了便于理解第二执行计划的执行过程中算子之间数据流动,下面以第二执行计划中其中给一个分支所需实现的SQL语句如下:
select a,b,sum(v)from T1 where c≥10group by a,b
上述SQL语句表征需要从数据表T1中读取列C大于等于10时的列A、列B、以及列V的和值。
该分支中包括一个具备过滤功能的scan算子、以及聚合(aggregation)算子。参见图7,在数据表T1在存储设备120中以行存的形式存储,数据表T1包括四列,分别为列a、列b、列c以及列v。指令执行装置110在读取该数据表T1时,可以借助行列转换线程将行存的数据表T1转换为列存的数据表T1。scan算子在读取该数据表T1时,将a、b两列结合在一起,组成一个逻辑上的列,a、b两列逻辑上组成tile1,列c和列v分别单独按列存储,分别组成tile2和tile3。列C用于scan算子进行过滤计算。之后,scan算子将tile1和tile2形成一个Tile-group传给聚合算子(也即Agg算子);在Agg算子中,列a和列b作为一个整体参与计算(如进行哈希计算或排序),列v参与求和计算。Agg算子输出数据时以行格式输出。Agg算子在计算时,逻辑上只有tile1和tile2这两列参与行列转换,而非将列a、列b、列v单独作为一列参与计算,计算效率相对较高。
步骤207:指令执行装置110向应用服务器130反馈访问结果。该访问结果可以是查询到的数据(如数据访问指令指示需要查询数据表中的数据),也可以指示访问是否成功或失败(如数据访问指令指示需要在数据表中进行增、删、改等操作)。
在步骤207中,指令执行装置110可以直接将该访问结果反馈至应用服务器130,也可以将该访问结果发送至该存储设备120,由该存储设备120将访问结果反馈至应用服务器130。
基于与方法实施例同一发明构思,本申请实施例还提供了一种指令执行装置,该指令执行装置用于执行上述如图4所示的方法实施例中所述指令执行装置执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图7所示,该指令执行装置700能够应用于客户端针对不同数据库发起数据访问指令的场景,该指令执行装置700包括获取模块701、生成模块702以及访问模块703。
获取模块701,用于获取第一执行计划,第一执行计划为基于任一数据库中发起的数据访问指令生成的。
生成模块702,用于根据第一执行计划,生成第二执行计划。
访问模块703,用于基于第二执行计划访问数据库中的数据。
在一种可能的实施方式中,生成模块702在根据第一执行计划,生成第二执行计划时,可以对第一执行计划中的算子进行处理,生成第二执行计划。
该处理包括下列的部分或全部:
对第一执行计划中的算子进行拆分、对第一执行计划中的算子进行合并、对第一执行计划中的算子进行映射、调整第一执行计划中的算子的执行顺序、第一执行计算中的算子配置数据输入格式、为第一执行计算中的算子选择执行硬件。
在一种可能的实施方式中,访问模块703在基于第二执行计划对访问数据库中的数据时,从数据库中读取数据表;访问模块703基于第二执行计划中算子的执行顺序执行第二执行计划中的算子,访问该数据表。
在一种可能的实施方式中,访问模块703在基于第二执行计划中算子的执行顺序执行第二执行计划中的算子时,访问模块703可以根据第二执行计划中算子的数据输入格式,对数据表进行格式转换;访问模块703还可以根据为第二执行计划中算子选择的执行硬件,配置执行硬件,以使得执行硬件执行算子,并触发执行硬件执行算子。
在一种可能的实施方式中,访问模块703在触发执行硬件执行算子时,该执行硬件创建多个计算线程;该多个计算线程并行运行执行算子。
在一种可能的实施方式中,数据输入格式为以行存的数据格式、或以列存的数据格式。
在一种可能的实施方式中,执行硬件包括下列的部分或全部:
CPU、GPU、DPU、NPU、TPU。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
在一个简单的实施例中,本领域的技术人员可以想到如图2所示的实施例中指令执行装置可采用图8所示的形式。
如图8所示的计算设备800,包括至少一个处理器801、存储器802,可选的,还可以包括通信接口803。
存储器802可以是易失性存储器,例如随机存取存储器;存储器也可以是非易失性存储器,例如只读存储器,快闪存储器,硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器802是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器802可以是上述存储器的组合。
本申请实施例中不限定上述处理器801以及存储器802之间的具体连接介质。
处理器801可以为中央处理器(central processing unit,CPU),该处理器801还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件、人工智能芯片、片上芯片等。通用处理器可以是微处理器或者是任何常规的处理器等。
当所述指令执行装置700采用图8所示的形式时,图8中的处理器801可以通过调用存储器802中存储的计算机执行指令,使得所述指令执行装置700可以执行上述任一方法实施例中的所述指令执行装置执行的方法。
具体的,图7的获取模块701、生成模块702、访问模块703的功能/实现过程均可以通过图8中的处理器801调用存储器802中存储的计算机执行指令来实现。或者,图7中的生成模块702、访问模块703的功能/实现过程可以通过图8中的处理器801调用存储器802中存储的计算机执行指令来实现,图7的获取模块701的功能/实现过程可以通过图8中的通信接口803来实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (16)
1.一种针对数据库的数据访问方法,其特征在于,所述方法应用于客户端针对不同数据库发起数据访问指令的场景中,所述方法包括:
获取第一执行计划,所述第一执行计划为基于任一所述数据库中发起的数据访问指令生成的;
根据所述第一执行计划,生成第二执行计划;
基于所述第二执行计划访问所述数据库中的数据。
2.如权利要求1所述的方法,其特征在于,所述根据所述第一执行计划,生成第二执行计划,包括:
对第一执行计划中的算子进行处理,生成所述第二执行计划;
所述处理包括下列的部分或全部:
对所述第一执行计划中的算子进行拆分、对所述第一执行计划中的算子进行合并、对所述第一执行计划中的算子进行映射、调整所述第一执行计划中的算子的执行顺序、所述第一执行计算中的算子配置数据输入格式、为所述第一执行计算中的算子选择执行硬件。
3.如权利要求2所述的方法,其特征在于,所述基于所述第二执行计划对访问所述数据库中的数据,包括:
从所述数据库中读取数据表;
基于所述第二执行计划中算子的执行顺序执行所述第二执行计划中的算子,访问所述数据表。
4.如权利要求3所述的方法,其特征在于,所述基于所述第二执行计划中算子的执行顺序执行所述第二执行计划中的算子,包括:
根据所述第二执行计划中算子的数据输入格式,对所述数据表进行格式转换;
根据为所述第二执行计划中算子选择的执行硬件,配置所述执行硬件,以使得所述执行硬件执行所述算子;
触发所述执行硬件执行所述算子。
5.如权利要求4所述的方法,其特征在于,所述触发所述执行硬件执行所述算子,包括:
所述执行硬件创建多个计算线程;
所述多个计算线程并行运行执行所述算子。
6.如权利要求2所述的方法,其特征在于,所述数据输入格式为以行存的数据格式、或以列存的数据格式。
7.如权利要求2所述的方法,其特征在于,所述执行硬件包括下列的部分或全部:
中央处理器CPU、图形处理器GPU、数据处理器DPU、神经网络处理器NPU、张量处理单元TPU。
8.一种指令执行装置,其特征在于,所述装置应用于客户端针对不同数据库发起数据访问指令的场景中,所述装置包括获取模块、生成模块以及访问模块;
所述获取模块,用于获取第一执行计划,所述第一执行计划为基于任一所述数据库中发起的数据访问指令生成的;
所述生成模块,用于根据所述第一执行计划,生成第二执行计划;
所述访问模块,用于基于所述第二执行计划访问所述数据库中的数据。
9.如权利要求8所述的装置,其特征在于,所述生成模块在根据所述第一执行计划,生成第二执行计划时,用于:
对第一执行计划中的算子进行处理,生成所述第二执行计划;
所述处理包括下列的部分或全部:
对所述第一执行计划中的算子进行拆分、对所述第一执行计划中的算子进行合并、对所述第一执行计划中的算子进行映射、调整所述第一执行计划中的算子的执行顺序、所述第一执行计算中的算子配置数据输入格式、为所述第一执行计算中的算子选择执行硬件。
10.如权利要求9所述的装置,其特征在于,所述访问模块在基于所述第二执行计划对访问所述数据库中的数据时,用于:
从所述数据库中读取数据表;
基于所述第二执行计划中算子的执行顺序执行所述第二执行计划中的算子,访问所述数据表。
11.如权利要求10所述的装置,其特征在于,所述访问模块在基于所述第二执行计划中算子的执行顺序执行所述第二执行计划中的算子,用于:
根据所述第二执行计划中算子的数据输入格式,对所述数据表进行格式转换;
根据为所述第二执行计划中算子选择的执行硬件,配置所述执行硬件,以使得所述执行硬件执行所述算子;
触发所述执行硬件执行所述算子。
12.如权利要求11所述的装置,其特征在于,所述访问模块在触发所述执行硬件执行所述算子时,用于:
所述执行硬件创建多个计算线程;
所述多个计算线程并行运行执行所述算子。
13.如权利要求9所述的装置,其特征在于,所述数据输入格式为以行存的数据格式、或以列存的数据格式。
14.如权利要求9所述的装置,其特征在于,所述执行硬件包括下列的部分或全部:
中央处理器CPU、图形处理器GPU、数据处理器DPU、神经网络处理器NPU、张量处理单元TPU。
15.一种计算设备,其特征在于,包括存储器和处理器;所述存储器存储有程序指令,所述处理器运行所述程序指令以执行权利要求1~7任一所述的方法。
16.一种计算机可读存储介质,其特征在于,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行如权利要求1~7任一所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111539845.4A CN116263776A (zh) | 2021-12-15 | 2021-12-15 | 一种针对数据库的数据访问方法、装置及设备 |
PCT/CN2022/138264 WO2023109725A1 (zh) | 2021-12-15 | 2022-12-11 | 一种针对数据库的数据访问方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111539845.4A CN116263776A (zh) | 2021-12-15 | 2021-12-15 | 一种针对数据库的数据访问方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116263776A true CN116263776A (zh) | 2023-06-16 |
Family
ID=86723562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111539845.4A Pending CN116263776A (zh) | 2021-12-15 | 2021-12-15 | 一种针对数据库的数据访问方法、装置及设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116263776A (zh) |
WO (1) | WO2023109725A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102982075B (zh) * | 2012-10-30 | 2016-10-05 | 北京京东世纪贸易有限公司 | 支持访问异构数据源的系统和方法 |
US20140214897A1 (en) * | 2013-01-31 | 2014-07-31 | Yuankai Zhu | SYSTEMS AND METHODS FOR ACCESSING A NoSQL DATABASE USING BUSINESS INTELLIGENCE TOOLS |
CN110659327A (zh) * | 2019-08-16 | 2020-01-07 | 平安科技(深圳)有限公司 | 实现异构数据库之间数据交互式查询的方法和相关装置 |
CN111061757B (zh) * | 2019-12-19 | 2023-03-31 | 用友网络科技股份有限公司 | 数据库的语言转换方法、装置、电子设备及存储介质 |
CN112597199B (zh) * | 2020-12-22 | 2024-03-08 | 南京三眼精灵信息技术有限公司 | 异构多数据源适配方法及装置 |
-
2021
- 2021-12-15 CN CN202111539845.4A patent/CN116263776A/zh active Pending
-
2022
- 2022-12-11 WO PCT/CN2022/138264 patent/WO2023109725A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2023109725A1 (zh) | 2023-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8171047B2 (en) | Query execution and optimization utilizing a combining network in a parallel computer system | |
US10713247B2 (en) | Executing queries for structured data and not-structured data | |
US10824622B2 (en) | Data statistics in data management systems | |
CN108681569B (zh) | 一种数据自动分析系统及其方法 | |
US10452632B1 (en) | Multi-input SQL-MR | |
CN109815283B (zh) | 一种异构数据源可视化查询方法 | |
US9576026B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using self directed data streams | |
AU2018303579B2 (en) | Performing hash joins using parallel processing | |
CN106687955B (zh) | 简化将数据从数据源转移到数据目标的导入过程的调用 | |
US11200231B2 (en) | Remote query optimization in multi data sources | |
US20130185283A1 (en) | Query optimization in a parallel computer system with multiple networks | |
JP5276639B2 (ja) | 分散データベース管理装置および分散データベース管理プログラム | |
US11321330B1 (en) | Combining nested data operations for distributed query processing | |
US9535948B1 (en) | Data access statement translation | |
Zhou et al. | Join optimization in the MapReduce environment for column-wise data store | |
CN112364052A (zh) | 异构数据管理方法、装置、设备和计算机可读存储介质 | |
CN103678425A (zh) | 多系统的集成分析 | |
JP4511469B2 (ja) | 情報処理方法及び情報処理システム | |
US10997175B2 (en) | Method for predicate evaluation in relational database systems | |
US9665621B1 (en) | Accelerated query execution within a storage array | |
US8930345B2 (en) | Query optimization in a parallel computer system to reduce network traffic | |
CN116263776A (zh) | 一种针对数据库的数据访问方法、装置及设备 | |
CN115982278A (zh) | 基于mpp数据库的自助式实时数据比对方法及系统 | |
Hasan et al. | An approach for data transformation in homogeneous and heterogeneous information systems | |
CN113608688A (zh) | 数据迁移方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |