CN113448969B - 数据处理方法、设备及存储介质 - Google Patents
数据处理方法、设备及存储介质 Download PDFInfo
- Publication number
- CN113448969B CN113448969B CN202111004229.9A CN202111004229A CN113448969B CN 113448969 B CN113448969 B CN 113448969B CN 202111004229 A CN202111004229 A CN 202111004229A CN 113448969 B CN113448969 B CN 113448969B
- Authority
- CN
- China
- Prior art keywords
- data tables
- data table
- tables
- data
- connection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 238000003860 storage Methods 0.000 title claims abstract description 17
- 238000012545 processing Methods 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 23
- 125000002015 acyclic group Chemical group 0.000 claims description 2
- 230000002457 bidirectional effect Effects 0.000 abstract description 15
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000007306 turnover Effects 0.000 description 2
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据处理方法、设备及存储介质。在本申请实施例中,针对待查询的多张数据表,可根据多张数据表之间的主外键关系,生成多张数据表的索引;之后,可根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,得到连接结果;之后,可根据查询请求查询连接结果,得到查询请求对应的查询结果。其中,根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,实现了多张数据表的多路连接,无需进行多次双向连接,产生双向连接的中间连接结果,因此,可降低连接查询时间,提高连接查询效率。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法、设备及存储介质。
背景技术
在现今的信息化时代,对信息数据的应用与研究已成为一种趋势,数据库基于其优势,被广泛应用于数据的存储、管理、维护和查询。
数据库是一个按数据结构来存储和管理数据的计算机软件系统,经常需要为不同用户提供不同维度的数据。连接查询是关系数据库中最主要的查询方式,可通过连接运算符可以实现多个表查询。现有的查询引擎提供的连接运算仅支持双向连接,连接查询过程中产生大量的中间连接结果,极大地影响了查询速度。
发明内容
本申请的多个方面提供一种数据处理方法、设备、程序产品及存储介质,用以提高连接查询效率。
本申请实施例提供一种数据处理方法,包括:
获取查询请求对应的执行计划;
根据所述执行计划,确定待查询的多张数据表;
根据所述多张数据表之间的主外键关系,生成所述多张数据表的索引;
根据所述多张数据表之间的主外键关系,利用所述多张数据表的索引对所述多张数据表进行连接,以得到连接结果;
按照所述执行计划访问连接结果,以得到所述查询请求对应的查询结果。
本申请实施例还提供一种计算机设备,包括:存储器和处理器;其中,所述存储器,用于存储计算机程序;
所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行数据处理方法中的步骤。
本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行数据处理方法中的步骤。
本申请实施例还提供一种计算机程序产品,包括:计算机程序;所述计算机程序被处理器执行可实现数据处理方法中的步骤。
在本申请实施例中,针对待查询的多张数据表,可根据多张数据表之间的主外键关系,生成多张数据表的索引;之后,可根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,得到连接结果;之后,可根据查询请求查询连接结果,得到查询请求对应的查询结果。其中,根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,实现了多张数据表的多路连接,无需进行多次双向连接,产生双向连接的中间连接结果,因此,可降低连接查询时间,提高连接查询效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的数据处理方法的流程示意图;
图2a和图2b为本申请实施例提供的数据处理方法的过程示意图;
图3为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对现有连接查询效率低的技术问题,在本申请一些实施例中,针对待查询的多张数据表,可根据多张数据表之间的主外键关系,生成多张数据表的索引;之后,可根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,得到连接结果;之后,可根据查询请求查询连接结果,得到查询请求对应的查询结果。其中,根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,实现了多张数据表的多路连接,无需进行多次双向连接,产生双向连接的中间连接结果,因此,可降低连接查询时间,提高连接查询效率。
以下结合附图,详细说明本申请各实施例提供的技术方案。
应注意到:相同的标号在下面的附图以及实施例中表示同一物体,因此,一旦某一物体在一个附图或实施例中被定义,则在随后的附图和实施例中不需要对其进行进一步讨论。
图1为本申请实施例提供的数据处理方法的流程示意图。如图1所示,该数据处理方法包括:
101、获取查询请求对应的执行计划。
102、根据执行计划,确定待查询的多张数据表。
103、根据多张数据表之间的主外键关系,生成多张数据表的索引。
104、根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,以得到连接结果。
105、按照执行计划访问连接结果,以得到查询请求对应的查询结果。
本申请实施例提供的数据处理方法主要是指数据库查询方法。数据库为关系型数据库,则向用户提供的数据是以关系模型组织的数据,其中关系模型可理解为以行和列的形式存储数据,关系型数据库的行和列也可称为数据表。
在本实施例步骤101中,可获取查询请求对应的执行计划。在本实施例中,可获取查询请求。该查询请求主要为连接查询请求。进一步,可对查询请求进行语义解析,得到查询请求的访问需求内容。可选地,可把查询请求编译成抽象语法树(Abstracted SyntaxTree,AST),并在该过程中对查询请求的语句进行错误检测,确保输入的请求语句没有语法和词法错误。例如,检测是否存在关键词拼写错误、是否有多余的标点符号、整个语句是否合法等等。
进一步,可对上述抽象语法树的节点依次进行检查,并把相关表的元数据,属性的元数据附在语法树上,最后生成含有语义的语法树(bound AST)。进一步,可根据含有语义的语法树获取查询请求的访问需求内容。
进一步,可根据访问需求内容,生成执行计划。可选地,优化器可根据语义语法树,生成逻辑执行树(logical operator tree,LOT)。可选地,可将语义语法树节点对应到操作符节点,得到逻辑执行树。逻辑执行树上的每个节点,称为逻辑操作符(logicaloperator)。进一步,可扩展出每个逻辑操作符对应的物理操作符(physical operator),得到物理执行树。进一步,可从物理执行树中选择出代价最小的物理执行树,作为执行计划。其中,代价最小可以为路径最短、内存消耗最小、计算量最小或者计算时间最短等等。
由于执行计划可反映待访问或待查询的数据表,基于此,在步骤102中,可根据执行计划,确定待查询的多张数据表。多张是指2张或2张以上。优选地,多张为至少3张。图2a和图2b以待查询的多张数据表为3张为例进行图示,但不构成限定。其中,图2a和图2b中3张数据表的表名分别为:“Lineitem”、“Orders”和“Customer”。
对于多张数据表来说,可对多张数据表进行连接查询,以提高查询效率。但是,现有针对多张数据表的连接查询为双向连接查询。对于3张或3张以上的数据表来说,需要将多路连接分解为多个双向连接,并维护双向连接的中间连接结果。一方面多个双向连接过程耗时较长,导致连接查询效率较低;另一方面,大量的中间连接结果占用大量内存空间。例如,针对待查询的数据表为A、B、C和D,在现有连接查询过程中,需要数据表A和B连接,形成一张数据表AB;再用AB和C连接得到数据表ABC;最后数据表ABC和D连接得到ABCD,该过程产生中间连接结果AB和ABC,占用内存空间;而且多次双向连接过程耗时较长,导致连接查询效率较低。
为了提高连接查询效率,在步骤103中,可根据多张数据表之间的主外键关系,生成多张数据表的索引。数据表的索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,可提供指向存储在表的指定列中的数据值的指针。
主键(Primary key),唯一标识一个实体,是保证数据库的实体完整性,保证数据中数据的正确性和合理性,取值非空唯一。外键(Foreign),可表示表与表之间联系,用来保证数据库的参照完整性,外键的取值必须来自参照表参照列的值,可以为空也可不为空。例如,图2a中,数据表“Customer”的主键为“C_CUSTKEY”;数据表“Orders”的主键和外键分别为“O_ORDERKEY”和“O_ CUSTKEY”;数据表“Lineitem”的主键和外键均为“L_ORDERKEY”。其中,数据表之间的主外键关系可反映数据表之间的连接顺序。连接的条件为A表的主键 = B表的外键。
可选地,针对任一数据表A,可根据多张数据表之间的主外键关系,确定该数据表A的外键;并根据数据表A的外键的属性值,生成数据表A的索引。例如,如图2a所示,“Orders”的外键为“O_ CUSTKEY”,等于数据表“Customer”的主键为“C_CUSTKEY”,因此,可确定数据表“Orders”的外键为“O_ CUSTKEY”,进一步,可根据数据表“Orders”的外键为“O_CUSTKEY”的属性值,生成数据表“Orders”的索引。
在一些实施例中,可将数据表的外键的属性值作为数据表的索引。在另一些实施例中,可对数据表A的外键的属性值进行哈希处理;并确定数据表A的外键的属性值的哈希处理结果,为数据表A的索引。例如,图2b所示,数据表“Orders”的索引为“O_ CUSTKEY”对应的哈希处理结果“1、2、3”;数据表“Lineitem”的索引为“L_ORDERKEY”的属性值的哈希处理结果“1、2、3”。
由于多张数据表的索引是根据多张数据表之间的主外键关系生成的,每个数据表的索引可反映该数据表与上级数据表之间的连接关系,因此,在步骤104中,可根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,以得到连接结果。
其中,多张数据表之间的主外键关系可反映数据表之间的连接顺序,利用多张数据表的索引对多张数据表进行连接可将多路连接操作作为一个运算符,实现多张数据表的多路连接,无需进行多次双向连接过程,有助于降低连接运算时间,因此可提高连接效率,进而有助于提高后续连接查询效率。
另一方面,本实施例提供的连接方式无需维护中间连接结果,可降低中间连接结果占用的内存空间,有助于节约内存空间。
可选地,可根据多张数据表之间的主外键关系,确定多张数据表的连接顺序。例如,如图2a所示,可根据多张数据表之间的主外键关系,生成多张数据表对应的有向无环图(Directed Acyclic Graph,DAG)。确定多张数据表在有向无环图中的先后顺序作为多张数据表的连接顺序。如图2a所示,数据表“Lineitem”、“Orders”和“Customer”在对应的有向无环图中的先后顺序为“Customer”-“Orders”-“Lineitem”,因此,数据表“Lineitem”、“Orders”和“Customer”的连接顺序为:“Customer”->“Orders”->“Lineitem”。
进一步,可根据多张数据表的连接顺序,依次利用多张数据表的索引对多张数据表进行连接,以得到连接结果。
进一步,在步骤105中,可按照执行计划访问连接结果,以得到查询请求对应的查询结果。
在本实施例中,针对待查询的多张数据表,可根据多张数据表之间的主外键关系,生成多张数据表的索引;之后,可根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,得到连接结果;之后,可根据查询请求查询连接结果,得到查询请求对应的查询结果。其中,根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,实现了多张数据表的多路连接,无需进行多次双向连接,产生双向连接的中间连接结果,因此,可降低连接查询时间,提高连接查询效率。
本申请发明人对本申请实施例提供的数据处理方法进行测试,测试结果表明本申请实施例提供的数据处理方法即使在一个工作程序的情况下,相较于现有双向查询方法可提高2-80倍的查询速度。
本申请实施例提供的数据处理方法可适应于全量查询,也可适用于增量查询。例如,在一些实施例中,只实现针对上次查询结果发生变化的记录等。如查询新增订单记录等。
针对增量查询的实施例,在多张数据表不存在数据更新的情况下,本实施例提供的数据处理方法停止查询,可输出“无更新”的提示信息;或者,可输出上次查询结果。在多张数据表存在数据更新的情况下,需要确定增量查询结果。数据更新是随机的。处理这些更新所需要的时间和内存与更新本身的封闭度λ有关。尽管在极端情况下,λ可能会很大,但是对于大多数查询来说,可以把λ看作是一个常数。比如说,如果假设数据的更新遵循先进先出原则,即最先插入的数据最先被删除,那么λ就是1。
为了提高增量查询的准确度,不仅需要确定更新记录,还需要确定更新记录的关联记录,即确定更新记录影响到的其它记录。基于此,可根据多张数据表之间的主外键关系,确定多张数据表的连接顺序;并根据多张数据表的连接顺序,依次利用多张数据表的索引对多张数据表进行连接,以确定多张数据表中更新记录的关联记录,作为连接结果。其中,关于确定多张数据表的连接顺序的实施方式可参见上述实施例的相关内容,在此不再赘述。
可选地,针对当前连接的数据表,可确定当前连接的数据表的上级数据表中更新记录的关联记录,并根据上级数据表中更新记录的关联记录,从当前连接的数据表的索引中,确定与上级数据表中更新记录的关联记录对应的目标索引;之后,利用当前连接的数据表的目标索引,对当前连接的数据表进行连接,以确定当前连接的数据表中更新记录的关联记录。可选地,可确定当前连接的数据表中目标索引对应的数据记录为更新记录的关联记录。
例如,如图2a和图2b所示,数据表“Customer”存在更新记录“C_ CUSTKEY-3”,可按照连接顺序“Customer”->“Orders”->“Lineitem”,利用数据表“Customer””的更新记录“C_CUSTKEY-3”,确定数据表“Orders”的目标索引为“O_ CUSTKEY-3”,进一步,可确定数据表“Orders”中更新记录“C_ CUSTKEY-3”的关联记录为索引“O_ CUSTKEY-3”对应的数据记录;之后,利用索引“O_ CUSTKEY-3”对应的数据记录确定数据表“Lineitem”的目标索引为“O_ORDERKEY-3、6”;之后,利用数据表“Lineitem”的目标索引“L_ORDERKEY -3、6”,确定数据表“Lineitem”中目标索引“L_ORDERKEY -3”对应的数据记录,为更新记录“C_ CUSTKEY-3”的关联记录。
在本申请一些实施例中,还可根据每张数据表的索引,将多张数据表划分成多个子表。可选地,可根据每张数据表的索引,将该数据表的索引相同的行划分为一个子表,得到多个子表。多个是指2个或2个以上。例如,图2a和图2b中数据表“Lineitem”,可根据数据表“Lineitem”的索引,将数据表“Lineitem”为索引分别为“L_ORDERKEY -1”、“L_ORDERKEY-2”和“L_ORDERKEY -3”的3个子表。
每个子表之间互不关联,因此,在上述对多张数据表进行连接操作时,针对任一数据表A,可利用数据表A的索引,并行执行对数据表A的多个子表与上级数据表的关联记录进行连接的操作,以确定多个子表中更新记录的关联记录。其中,并行执行对数据表A的多个子表与上级数据表的关联记录进行连接的操作可进一步提高数据表连接速度,进而有助于提高后续连接查询效率。另一方面,数据处理过程无需进行多播或广播,整体负载与数据输入量相同,而传统连接查询方式中数据会进行一定程度的多播或广播,导致负载大于数据输入量;因此,本申请实施例提供的数据处理方式可降低物理机的负载。
例如,图2b中的数据表“Lineitem”的“L_ORDERKEY -1”、“L_ORDERKEY -2”和“L_ORDERKEY -3”的3个子表,可利用每个子表的索引,并行执行每个子表与数据表“Orders”中的关联记录(即“O_ CUSTKEY-3”对应的数据记录)进行连接的操作,进而确定子表“L_ORDERKEY -1”、“L_ORDERKEY -2”和“L_ORDERKEY -3”的关联记录为“L_ORDERKEY -3”对应的数据记录。
在本申请实施例中,不限定利用数据表A的索引,并行执行对数据表A的多个子表与上级数据表的关联记录进行连接的操作的具体实施方式。在一些实施例中,可采用多台计算机设备并行执行对数据表A的多个子表与上级数据表的关联记录进行连接的操作,其中,每台计算机设备执行一个子表与上级数据表的关联记录进行连接的操作,有助于实现面对大量数据更新时物理机的扩展。在另一些实施例中,可采用多个线程并行执行对数据表A的多个子表与上级数据表的关联记录进行连接的操作,其中,每个线程执行一个子表与上级数据表的关联记录进行连接的操作;等等。对于并行执行对任一数据表A的多个子表与所述任一数据表的上级数据表的关联记录进行连接的操作,可能存在多个更新记录u1和u2,其中更新记录u1的产生时间早于更新记录u2;但是在并行执行对任一数据表A的多个子表与所述任一数据表的上级数据表的关联记录进行连接的操作时,可能有不同工作程序的处理速度不同,导致更新记录u2的关联记录先于更新记录u1的关联记录到达。为了对这种情况进行纠正,在本实施例中,还可获取多条更新记录的产生时间;并根据多条更新记录的产生时间,调整多个子表中的关联记录的顺序,以确保多条更新记录的关联记录的到达顺序与多条更新记录的产生时间先后顺序一致,提高后续数据查询的准确度。
在确定出更新记录的关联记录之后,可按照查询请求对应的执行计划,查询更新记录及更新记录的关联记录,进而得到增量查询结果。进一步,可根据增量查询结果,确定查询请求对应的查询结果。在一些实施例中,可确定增量查询结果为查询请求对应的查询结果。在另一些实施例中,可获取历史查询结果,并根据增量查询结果,修改历史查询结果,得到本次查询请求对应的查询结果。
对于增量查询方式,本实施例提供的数据处理方法可在空白数据库上执行查询操作。这主要是因为本申请实施例提供的增量查询方式可实现实时更新查询,可在空白数据库数据更新过程中执行查询操作。
进一步,可输出查询请求对应的查询结果。例如,可将查询结果返回给发起查询请求的客户端等。对于客户端可对查询结果进行渲染、展示。例如,可展示查询结果对应的数据看板等。
本申请实施例提供的数据查询方法可适应于各种运算的连接查询。例如,可适应于选择查询、投影查询以及聚合查询等,但不限与此。其中,图2b仅以聚合查询为例进行图示,但不构成限定。在图2b中,I(Aggregation)表示聚合查询结果,得到对数据表“Lineitem”中更新记录的关联记录“L_ORDERKEY -3”对应的数据记录中营业额(Revenue)向的聚合查询营业额为20542.03。其中,图2b中白色记录表示非活记录,即在当前次查询过程中已被删除或标记为删除的记录。图2a和图2b中浅灰色记录表示更新记录以及更新记录的关联记录。其中,更新记录的关联记录可作为本次数据更新过程产生的活记录。图2a和图2b中还存在原数据库中的活记录,在图2a和图2b中以深灰色进行图示。
值得说明的是,本申请实施例提供的数据处理方法支持容错功能。若本次数据查询任务失败,可重新执行本次数据查询任务。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101和102的执行主体可以为设备A;又比如,步骤101的执行主体可以为设备A,步骤102的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。
相应地,本申请实施例还提供一种存储有计算机指令的计算机可读存储介质,当计算机指令被一个或多个处理器执行时,致使一个或多个处理器执行上述数据处理方法中的步骤。
本申请实施例还提供一种计算机程序产品,包括:计算机程序。其中,计算机程序被处理器执行可实现上述数据处理方法中的步骤。在本申请实施例中,不限定计算机程序产品的具体实现形式。在一些实施例中,计算机程序产品可实现为查询引擎、针对数据库的数据处理系统或者查询引擎中的执行器等。
图3为本申请实施例提供的计算机设备的结构示意图。如图3所示,计算机设备包括:存储器30a和处理器30b。存储器30a,用于存储计算机程序。
处理器30b耦合至存储器30a,用于执行计算机程序以用于:获取查询请求对应的执行计划;根据执行计划,确定待查询的多张数据表;根据多张数据表之间的主外键关系,生成多张数据表的索引;根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,以得到连接结果;以及,按照执行计划访问连接结果,以得到查询请求对应的查询结果。
在一些实施例中,处理器30b在生成多张数据表的索引时,具体用于:针对任一数据表,根据多张数据表之间的主外键关系,确定任一数据表的外键;根据任一数据表的外键的属性值,生成任一数据表的索引。
进一步,处理器30b在生成任一数据表的索引时,具体用于:对任一数据表的外键的属性值进行哈希处理;确定对任一数据表的外键的属性值的哈希处理结果,作为任一数据表的索引。
在另一些实施例中,处理器30b在利用多张数据表的索引对多张数据表进行连接时,具体用于:在多张数据表存在数据更新的情况下,根据多张数据表之间的主外键关系,确定多张数据表的连接顺序;根据多张数据表的连接顺序,依次利用多张数据表的索引对多张数据表进行连接,以确定多张数据表中更新记录的关联记录,作为连接结果。
可选地,处理器30b在利用多张数据表的索引对多张数据表进行连接时,具体用于:针对当前连接的数据表,确定当前连接的数据表的上级数据表中更新记录的关联记录;根据上级数据表中更新记录的关联记录,从当前连接的数据表的索引中,确定与上级数据表中更新记录的关联记录对应的目标索引;利用目标索引对当前连接的数据表进行连接,以确定当前连接的数据表中更新记录的关联记录。
相应地,处理器30b按照执行计划查询连接结果时,具体用于:按照查询请求对应的执行计划,查询更新记录及更新记录的关联记录,以得到增量查询结果;根据增量查询结果,确定查询请求对应的查询结果。
在另一些实施例中,处理器30b还用于:根据每张数据表的索引,将每张数据表划分成多个子表。相应地,处理器30b在利用多张数据表的索引对多张数据表进行连接时,具体用于:针对任一数据表,利用任一数据表的多个子表的索引,并行执行对任一数据表的多个子表与任一数据表的上级数据表的关联记录进行连接的操作,以确定多个子表中的更新记录的关联记录。
可选地,更新记录为多条;处理器30b还用于:获取多条更新记录的产生时间;根据多条更新记录的产生时间,调整多个子表中的关联记录的顺序。
在又一些实施例中,处理器30b在确定多张数据表的连接顺序时,具体用于:根据多张数据表之间的主外键关系,生成多张数据表对应的有向无环图;确定多张数据表在有向无环图中的先后顺序,作为多张数据表的连接顺序。
在一些可选实施方式中,如图3所示,该计算机设备还可以包括:通信组件30c、电源组件30d等组件。在一些实施例中,计算机设备可实现为电脑、手机等终端设备。相应地,还可包括:显示组件30e、音频组件30f等组件。图3中仅示意性给出部分组件,并不意味着计算机设备必须包含图3所示全部组件,也不意味着计算机设备只能包括图3所示组件。
本实施例提供的计算机设备,针对待查询的多张数据表,可根据多张数据表之间的主外键关系,生成多张数据表的索引;之后,可根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,得到连接结果;之后,可根据查询请求查询连接结果,得到查询请求对应的查询结果。其中,根据多张数据表之间的主外键关系,利用多张数据表的索引对多张数据表进行连接,实现了多张数据表的多路连接,无需进行多次双向连接,产生双向连接的中间连接结果,因此,可降低连接查询时间,提高连接查询效率。
在本申请实施例中,存储器用于存储计算机程序,并可被配置为存储其它各种数据以支持在其所在设备上的操作。其中,处理器可执行存储器中存储的计算机程序,以实现相应控制逻辑。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
在本申请实施例中,处理器可以为任意可执行上述方法逻辑的硬件处理设备。可选地,处理器可以为中央处理器(Central Processing Unit,CPU)、图形处理器(GraphicsProcessing Unit,GPU)或微控制单元(Microcontroller Unit,MCU);也可以为现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程阵列逻辑器件(ProgrammableArray Logic,PAL)、通用阵列逻辑器件(General Array Logic,GAL)、复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)等可编程器件;或者为先进精简指令集(RISC)处理器(Advanced RISC Machines,ARM)或系统芯片(System on Chip,SOC)等等,但不限于此。
在本申请实施例中,通信组件被配置为便于其所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,4G,5G或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还可基于近场通信(NFC)技术、射频识别(RFID)技术、红外数据协会(IrDA)技术、超宽带(UWB)技术、蓝牙(BT)技术或其他技术来实现。
在本申请实施例中,显示组件可以包括液晶显示器(LCD)和触摸面板(TP)。如果显示组件包括触摸面板,显示组件可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
在本申请实施例中,电源组件被配置为其所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
在本申请实施例中,音频组件可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。例如,对于具有语言交互功能的设备,可通过音频组件实现与用户的语音交互等。
需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备查询的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (9)
1.一种数据处理方法,其特征在于,包括:
获取查询请求对应的执行计划;
根据所述执行计划,确定待查询的多张数据表;
根据所述多张数据表之间的主外键关系,生成所述多张数据表的索引;
根据所述多张数据表之间的主外键关系,利用所述多张数据表的索引对所述多张数据表进行连接,以得到连接结果;
按照所述执行计划访问连接结果,以得到所述查询请求对应的查询结果;
其中,所述根据所述多张数据表之间的主外键关系,利用所述多张数据表的索引对所述多张数据表进行连接,以得到连接结果,包括:
在所述多张数据表存在数据更新的情况下,根据所述多张数据表之间的主外键关系,确定所述多张数据表的连接顺序;
针对当前连接的数据表,根据所述多张数据表的连接顺序,确定所述当前连接的数据表的上级数据表中更新记录的关联记录;
根据所述上级数据表中更新记录的关联记录,从所述当前连接的数据表的索引中,确定与所述上级数据表中更新记录的关联记录对应的目标索引;
利用所述目标索引对所述当前连接的数据表进行连接,以确定所述当前连接的数据表中更新记录的关联记录,作为所述连接结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多张数据表之间的主外键关系,生成所述多张数据表的索引,包括:
针对任一数据表,根据所述多张数据表之间的主外键关系,确定所述任一数据表的外键;
根据所述任一数据表的外键的属性值,生成所述任一数据表的索引。
3.根据权利要求2所述的方法,其特征在于,所述根据所述任一数据表的外键的属性值,生成所述任一数据表的索引,包括:
对所述任一数据表的外键的属性值进行哈希处理;
确定对所述任一数据表的外键的属性值的哈希处理结果,作为所述任一数据表的索引。
4.根据权利要求1所述的方法,其特征在于,所述按照所述执行计划查询连接结果,以得到所述查询请求对应的查询结果,包括:
按照所述查询请求对应的执行计划,查询所述更新记录及所述更新记录的关联记录,以得到增量查询结果;
根据所述增量查询结果,确定所述查询请求对应的查询结果。
5.根据权利要求1所述的方法,其特征在于,还包括:
根据每张数据表的索引,将所述每张数据表划分成多个子表;
所述根据所述多张数据表的连接顺序,依次利用所述多张数据表的索引对所述多张数据表进行连接,包括:
针对任一数据表,利用所述任一数据表的多个子表的索引,并行执行对所述任一数据表的多个子表与所述任一数据表的上级数据表的关联记录进行连接的操作,以确定所述多个子表中的所述更新记录的关联记录。
6.根据权利要求5所述的方法,其特征在于,所述更新记录为多条;所述方法还包括:
获取多条更新记录的产生时间;
根据所述多条更新记录的产生时间,调整所述多个子表中的关联记录的顺序。
7.根据权利要求1所述的方法,其特征在于,所述根据所述多张数据表之间的主外键关系,确定所述多张数据表的连接顺序,包括:
根据所述多张数据表之间的主外键关系,生成所述多张数据表对应的有向无环图;
确定所述多张数据表在所述有向无环图中的先后顺序,作为所述多张数据表的连接顺序。
8.一种计算机设备,其特征在于,包括:存储器和处理器;其中,所述存储器,用于存储计算机程序;
所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行权利要求1-7任一项所述方法中的步骤。
9.一种存储有计算机指令的计算机可读存储介质,其特征在于,当所述计算机指令被一个或多个处理器执行时,致使所述一个或多个处理器执行权利要求1-7任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111004229.9A CN113448969B (zh) | 2021-08-30 | 2021-08-30 | 数据处理方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111004229.9A CN113448969B (zh) | 2021-08-30 | 2021-08-30 | 数据处理方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113448969A CN113448969A (zh) | 2021-09-28 |
CN113448969B true CN113448969B (zh) | 2022-02-18 |
Family
ID=77818962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111004229.9A Active CN113448969B (zh) | 2021-08-30 | 2021-08-30 | 数据处理方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448969B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117539861B (zh) * | 2023-10-20 | 2024-07-09 | 国家开放大学 | 面向数据治理的关系数据表关联重建方法和装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162462A (zh) * | 2006-10-11 | 2008-04-16 | 国际商业机器公司 | 提示定制工具与方法 |
CN104866608A (zh) * | 2015-06-05 | 2015-08-26 | 中国人民大学 | 一种数据仓库中基于连接索引的查询优化方法 |
CN108287886A (zh) * | 2018-01-16 | 2018-07-17 | 阿里巴巴集团控股有限公司 | 同步数据变更信息的方法及装置 |
CN109062949A (zh) * | 2018-06-21 | 2018-12-21 | 东南大学 | 一种提高在线聚集中多表连接查询效率的方法 |
CN109739855A (zh) * | 2018-12-28 | 2019-05-10 | 第四范式(北京)技术有限公司 | 实现数据表拼接及自动训练机器学习模型的方法和系统 |
CN110009514A (zh) * | 2019-03-07 | 2019-07-12 | 平安科技(深圳)有限公司 | 数据的提取方法、装置、终端及计算机可读存储介质 |
CN110688386A (zh) * | 2019-09-29 | 2020-01-14 | 浙江大学 | 面向新型供电轨道交通大数据的分布式列族数据索引方法 |
CN112199577A (zh) * | 2020-12-09 | 2021-01-08 | 浙江口碑网络技术有限公司 | 一种数据查询方法、装置及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488341B (zh) * | 2020-03-27 | 2023-08-22 | 北京金山云网络技术有限公司 | 数据库索引的管理方法、装置及电子设备 |
CN113127488A (zh) * | 2021-04-20 | 2021-07-16 | 粒子文化科技集团(杭州)股份有限公司 | 数据查询方法、装置、电子装置和存储介质 |
-
2021
- 2021-08-30 CN CN202111004229.9A patent/CN113448969B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101162462A (zh) * | 2006-10-11 | 2008-04-16 | 国际商业机器公司 | 提示定制工具与方法 |
CN104866608A (zh) * | 2015-06-05 | 2015-08-26 | 中国人民大学 | 一种数据仓库中基于连接索引的查询优化方法 |
CN108287886A (zh) * | 2018-01-16 | 2018-07-17 | 阿里巴巴集团控股有限公司 | 同步数据变更信息的方法及装置 |
CN109062949A (zh) * | 2018-06-21 | 2018-12-21 | 东南大学 | 一种提高在线聚集中多表连接查询效率的方法 |
CN109739855A (zh) * | 2018-12-28 | 2019-05-10 | 第四范式(北京)技术有限公司 | 实现数据表拼接及自动训练机器学习模型的方法和系统 |
CN110009514A (zh) * | 2019-03-07 | 2019-07-12 | 平安科技(深圳)有限公司 | 数据的提取方法、装置、终端及计算机可读存储介质 |
CN110688386A (zh) * | 2019-09-29 | 2020-01-14 | 浙江大学 | 面向新型供电轨道交通大数据的分布式列族数据索引方法 |
CN112199577A (zh) * | 2020-12-09 | 2021-01-08 | 浙江口碑网络技术有限公司 | 一种数据查询方法、装置及电子设备 |
Non-Patent Citations (3)
Title |
---|
Maintaining Acyclic Foreign-Key Joins under Updates;Qichen Wang等;《SIGMOD "20: Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data》;20200611;第8-11页 * |
Multi-table joins through bitmapped join indices;Patrick O"Neil等;《ACM SIGMOD Record》;19950901;第24卷(第3期);第1225-1239页 * |
基于HBase的数据管理系统设计与实现;胡亚;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;20171115(第11期);第42-51页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113448969A (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11468103B2 (en) | Relational modeler and renderer for non-relational data | |
US9141666B2 (en) | Incremental maintenance of range-partitioned statistics for query optimization | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN106407360B (zh) | 一种数据的处理方法及装置 | |
US8667010B2 (en) | Database table partitioning allowing overlaps used in full text query | |
US10614070B2 (en) | Preventing staleness in query results when using asynchronously updated indexes | |
CN104765731A (zh) | 数据库查询优化方法和设备 | |
CN107291471B (zh) | 一种支持可定制化数据采集的元模型框架系统 | |
CN114461603A (zh) | 多源异构数据融合方法及装置 | |
CN114625732A (zh) | 基于结构化查询语言sql的查询方法和系统 | |
CN111078702A (zh) | 一种sql语句分类管理及统一查询方法和装置 | |
CN110555035A (zh) | 一种对查询语句进行优化的方法、装置 | |
CN110399089B (zh) | 数据存储方法、装置、设备和介质 | |
EP4430483A1 (en) | Late materialization of queried data in database cache | |
CN113448969B (zh) | 数据处理方法、设备及存储介质 | |
CN115952203B (zh) | 数据查询方法、设备、系统及存储介质 | |
CN114328601A (zh) | 数据降采样和数据查询方法、系统及存储介质 | |
CN108959330B (zh) | 一种数据库的处理、数据查询方法及设备 | |
CN109669951A (zh) | 对象查询方法、装置、计算机设备和存储介质 | |
CN111435351B (zh) | 数据库查询优化方法、设备及存储介质 | |
CN113448942B (zh) | 数据库访问方法、装置、设备及存储介质 | |
CN112541001A (zh) | 数据查询方法、装置、存储介质及设备 | |
CN116049193A (zh) | 数据存储方法及装置 | |
CN108228604B (zh) | 基于内存对象的模型构建方法、信息查询方法及装置 | |
JPH052515A (ja) | データベースの最適化再編成方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231220 Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province, 310030 Patentee after: Aliyun Computing Co.,Ltd. Address before: No.12, Zhuantang science and technology economic block, Xihu District, Hangzhou City, Zhejiang Province, 310012 Patentee before: Aliyun Computing Co.,Ltd. Patentee before: Alibaba (China) Co.,Ltd. |
|
TR01 | Transfer of patent right |