CN113392134A - 数据排序方法、数据库引擎及存储介质 - Google Patents
数据排序方法、数据库引擎及存储介质 Download PDFInfo
- Publication number
- CN113392134A CN113392134A CN202110621131.1A CN202110621131A CN113392134A CN 113392134 A CN113392134 A CN 113392134A CN 202110621131 A CN202110621131 A CN 202110621131A CN 113392134 A CN113392134 A CN 113392134A
- Authority
- CN
- China
- Prior art keywords
- data
- sorting
- sequencing
- sequence
- columns
- 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 66
- 238000003860 storage Methods 0.000 title claims abstract description 38
- 238000012163 sequencing technique Methods 0.000 claims abstract description 91
- 238000004590 computer program Methods 0.000 claims description 24
- 230000006399 behavior Effects 0.000 claims description 16
- 238000005192 partition Methods 0.000 claims description 14
- 238000009826 distribution Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 abstract description 4
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000008569 process Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000007405 data analysis Methods 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
- 238000012935 Averaging Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- 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/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据排序方法、数据库引擎及存储介质。在本申请实施例中,针对涉及多列排序的场景,首先按照多列中的聚簇列对待排序的数据行进行数据分组,再按照多列中的排序列以相同的排序顺序在数据分组之间以及每个数据分组内进行排序,按照这种排序方式得到的排序结果既可以保留聚簇列的数据聚簇特性,又可以基本保证数据的全局有序性,有利于提高聚簇列的相关计算性能。尤其是在基于排序结果进行查询时,既能保证按照数据范围查询时的性能基本不受影响,又能极大地提高按照数据分组查询时的性能。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据排序方法、数据库引擎及存储介质。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库,通常包括多张数据表。在实际应用中,经常需要对数据表中的数据进行排序。在排序涉及多列数据的情况下,现有技术通常是以多列数据中的某列数据为主进行排序,或者是按照多列数据之间的优先级依次按照多列数据进行排序,例如Zorder排序算法。现有排序方式可以保证参与排序的各列数据之间是完全有序的,但是在存在聚簇列的情况下数据的聚簇特性会遭到破坏,这会降低聚簇列的相关计算性能。
发明内容
本申请的多个方面提供一种数据排序方法、数据库引擎及存储介质,用以在保证数据全局有序性的基础上,保留聚簇列的数据聚集特性,提高聚簇列的相关计算性能。
本申请实施例提供一种数据排序方法,包括:响应于排序指令,获取待排序的数据集,所述数据集包括N个数据行M个数据列,所述M个数据列中至少包括聚簇列和排序列,N、M是大于等于2的自然数;按照所述聚簇列对所述数据集中的N个数据行进行分组,以得到至少两个数据分组;按照所述排序列以同样的排序顺序,在所述至少两个数据分组之间以及每个数据分组内进行排序,以得到排序结果。
本申请实施例还提供一种数据库引擎,包括:存储器和处理器;所述存储器用于存储计算机程序;所述处理器,与所述存储器耦合,用于执行所述计算机程序,以用于:响应于排序指令,获取待排序的数据集,所述数据集包括N行M列,所述M列中至少包括聚簇列和排序列,N、M是大于等于2的自然数;按照所述聚簇列对所述数据集中的N个数据行进行分组,以得到至少两个数据分组;按照所述排序列以同样的排序顺序,在所述至少两个数据分组之间以及每个数据分组内进行排序,以得到排序结果。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当所述计算机程序被处理器执行时,致使所述处理器实现本申请实施例提供的数据排序方法中的步骤。
本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当所述计算机程序/指令被处理器执行时,致使所述处理器实现本申请实施例提供的数据排序方法中的步骤。
在本申请实施例中,针对涉及多列排序的场景,首先按照多列中的聚簇列对待排序的数据行进行数据分组,再按照多列中的排序列以相同的排序顺序在数据分组之间以及每个数据分组内进行排序,按照这种排序方式得到的排序结果既可以保留聚簇列的数据聚簇特性,又可以基本保证数据的全局有序性,有利于提高聚簇列的相关计算性能。尤其是在基于排序结果进行查询时,既能保证按照数据范围查询时的性能基本不受影响,又能极大地提高按照数据分组查询时的性能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请示例性实施例提供的一种数据排序方法的流程示意图;
图1b为本申请示例性实施例提供的数据排序方法在不同场景中的应用状态示意图;
图1c为采用图1a所示方法对包含订单号和出货时间的数据集进行排序的过程示意图;
图1d为本申请实施例方法的排序结果与单列排序方法的排序结果在有序性上的比对效果图;
图2为本申请示例性实施例提供的一种数据排序装置的结构示意图;
图3为本申请示例性实施例提供的一种数据库引擎的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在现有数据库排序方案中,在存在聚簇列的情况下数据的聚簇特性会遭到破坏,会降低聚簇列的相关计算性能。针对该技术问题,在本申请实施例中,在针对涉及多列排序的场景中,首先按照多列中的聚簇列对待排序的数据行进行数据分组,再按照多列中的排序列以相同的排序顺序在数据分组之间以及每个数据分组内进行排序,按照这种排序方式得到的排序结果既可以保留聚簇列的数据聚簇特性,又可以基本保证数据的全局有序性,有利于提高聚簇列的相关计算性能。尤其是在基于排序结果进行查询时,既能保证按照数据范围查询时的性能基本不受影响,又能极大地提高按照数据分组查询时的性能。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1a为本申请示例性实施例提供的一种数据排序方法的流程示意图。如图1a所示,该方法包括:
11、响应于排序指令,获取待排序的数据集,该数据集包括N个数据行M个数据列,M个数据列中至少包括聚簇列和排序列,N、M是大于等于2的自然数;
12、按照聚簇列对上述数据集中的N个数据行进行分组,以得到至少两个数据分组;
13、按照排序列以同样的排序顺序,在上述至少两个数据分组之间以及每个数据分组内进行排序,以得到排序结果。
本实施例提供的数据排序方法适用于各种支持数据表的数据库系统,例如可以是各种类型的传统数据库、云数据库,还可以是数据仓库、数据湖(Data Lake)等。其中,云数据库是指被优化或部署到一个虚拟计算环境中的数据库。数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合。本实施例的数据仓库既可以是传统数据仓库,也可以是云原生数据仓库。其中,数据湖是一种可为用户提供无服务器(Serverless)化的云上交互式查询分析服务的系统。
无论是哪种数据库系统,一方面可为使用方提供数据存储功能,另一方面还可以为使用方提供查询(QUERY)、插入(INSERT)、删除(DELETE)、更新(UPDATE)等各种服务。数据库系统的使用方可以是个人、企业、某种服务、应用系统等,并不做限定。在数据库系统的某些使用过程中,例如在数据存储过程中、在数据查询过程中或数据迁移过程中,可能会涉及数据排序。当需要进行数据排序时,可以向数据库系统发出排序指令,以指示数据库引擎执行数据排序操作。
在具体实现上,排序指令可以是一条或几条数据库语句,具体与数据库系统使用的数据库语言有关,例如可以是SQL语句、Sybase语句或MySQL语句等。在排序指令中至少包括:指向待排序数据集的信息,该信息会因为待排序数据集的实现方式不同而有所不同;例如,如果待排序数据集存储在一张或几张原始数据表中,则指向待排序数据集的信息可以是原始数据表的名称;或者,如果待排序数据集存储在缓存、内存、文件或网络中,则指向待排序数据集的信息可以是该数据集的访问路径或地址。进一步,该排序指令中还可以包含与待排序数据集相关的其它信息,例如该数据集的规模,例如包括N个数据行M个数据列,以及各数据列的类型等。其中,N、M是大于或等于2的自然数。数据库引擎在接收到排序指令之后,可以根据排序指令获取待排序数据集,并针对待排序数据集进行排序操作。
其中,根据数据排序场景的不同,发出排序指令的对象可能是数据库系统的使用方,也可能是数据库系统的管理人员;相应地,获取待排序数据集的方式也会略有差异。下面举例说明:
如图1b所示,在应用场景A1中,数据源在实际生产过程中产生数据,这些数据被实时上传至数据库系统,数据库引擎按照数据产生时间将数据顺序存储到原始数据表,这些数据在原始数据表中是按照产生时间先后顺序存储的,但在某些维度上却是乱序的。其中,数据源可以是任何能够产生数据且需要进行数据存储的应用系统、应用程序、小程序、云服务等软件模块,也可以是CPU、GPU、终端设备、服务端设备、网络设备等各种硬件模块。
以数据源是订单处理系统为例,订单处理系统在接收到用户的下单请求时,会生成订单号,并会将该订单号与下单时间、用户信息、订单详情等信息进行关联,这会形成一条数据并会被记录到原始数据表中;进一步,当接收到用户的支付请求时,订单处理系统会记录该订单号对应的支付时间、支付金额、支付方式等信息,这会形成另一条数据并会被记录到原始数据表中;进一步,当商家发货时,订单处理系统还会该订单的发货时间、发货方式等信息,这会形成又一条数据并会被记录到原始数据表中。在原始数据表中,同一订单在不同时间产生的数据会被分散存储,如果用户需要查询该订单的完整交易信息,需要遍历整张数据表,查询效率相对较低。
由上述示例可知,应用场景A1面临着查询效率较低的问题,为了提高查询效率,有必要针对原始数据表进行排序,以得到符合查询需求的目标数据表。于是,数据库系统的使用方可以发出排序指令,该排序指令包括待排序的原始数据表的名称、原始数据表的规格以及排序需求,该排序需求用于说明需要按照哪些数据列进行排序。或者,数据库系统的使用方也可以向数据库系统的管理人员提交排序请求,该排序请求中包括待排序的原始数据表的名称、原始数据表的规格以及排序需求等信息;管理人员根据排序请求生成排序指令,并提供给数据库引擎,以供数据库引擎根据该排序指令针对原始数据表进行排序操作。在应用场景A1中,原始数据表即为待排序的数据集。数据库引擎接收到排序指令后,可以根据排序指令中包含的原始数据表的名称获取待排序的原始数据表,并按照排序指令中的排序需求对原始数据表中的数据进行排序,得到目标数据表。
如图1b所示,在应用场景A2中,数据源在实际生产过程中产生数据,这些数据被暂存或缓存于本地,当暂存或缓存的数据量达到设定的数据量阈值,或者当设定的上传时间或周期到达时,将暂存或缓存的数据传输至数据库系统中进行存储。为了方便后续的数据查询,在进行数据存储的过程中,数据库系统的使用方可以向数据库引擎发出按序存储数据的指令,即在数据存储过程中对数据进行排序,按照排序结果对数据进行存储,在该指令中包括数据访问路径或地址以及排序需求。或者,数据库系统的使用方也可以向数据库系统的管理人员发出按序存储的请求,并在请求中携带数据访问路径或地址以及排序需求;管理人员根据该请求生成排序存储数据的指令并提供给数据库引擎,以供数据库引擎根据该指令对数据进行排序后进行存储。在该应用场景A2中,排序存储的指令可以视为是一种特殊的排序指令,待存储的数据即为待排序的数据集。数据库引擎根据排序存储的指令中包含的数据访问路径或地址获取待存储的数据,并根据指令中包含的排序需求对待存储的数据进行排序后存储到目标数据表中。
进一步,在目标数据表中已经存在部分数据的情况下,数据库引擎可以将待存储的数据与目标数据表中已有的数据融合在一起作为待排序的数据集。
如图1b所示,在应用场景A3中,数据源在实际生产过程中产生数据,这些数据被存储至数据库系统中的数据表中。其中,这些数据可能是被实时存储至数据表中的,也可能是分批或定期被存储至数据表中的,对此不做限定。当使用方需要查询数据时,可以向数据库引擎发出查询指令,在该查询指令中包含待查询的数据表和查询条件;为了提高查询效率,数据库引擎可以先根据该查询指令对待查询的数据表进行排序,得到目标数据表,然后在排序后的目标数据表中进行查询操作。在该应用场景A3中,查询指令可以视为是一种特殊的排序指令,待查询的数据表即为待排序的数据集。数据库引擎根据查询指令中包含的数据表名称确定待排序的数据表,并根据查询指令中的查询条件对待查询数据表进行排序得到目标数据表,进而在目标数据表中进行查询。其中,查询条件可能是待查询的数据范围,也可以是待查询的数据分组,对此不做限定。
无论是哪种应用场景,在获取待排序的数据集之后,可以确定该数据集包括N个数据行M个数据列,并确定M个数据列中至少包括聚簇列和排序列。本实施例重点针对同时涉及聚簇列和排序列的数据排序过程进行说明。其中,聚簇列和排序列都是数据集中的数据列,但却是性质不同的两种数据列;聚簇列要求数据列中的数据具有聚簇特性,即要求该数据列中的相同数据或在相同范围内的数据相邻存储;排序列要求数据列中的数据具有按序排列的特性,即该数据列中的数据要按照从小到大或从大到小的顺序依次存储。在排序列和聚簇列同时存在的情况下,如何能够同时兼容数据的聚簇特性和排序特性,以便获得较佳的查询性能,正是本申请实施例所要解决的技术问题。
在确定待排序数据集中的聚簇列和数据列之后,首先,按照聚簇列对数据集中的N个数据行进行分组,以得到至少两个数据分组。该分组过程具体是指,按照聚簇列中的数据,以数据行为单位,将N个数据行划分到不同数据分组中。在一可选实施例中,可以将聚簇列中数据相同的数据行划分到同一数据分组中,以得到至少两个数据分组,以便体现数据的聚簇特性。或者,在另一可选实施例中,也可以将聚簇列中数据在同一数据范围内的数据行划分到同一数据分组中,以得到至少两个数据分组,以便体现数据的聚簇特性。在这两个可选实施例中,数据聚簇特性的粒度略有不同,但原理相同。
在本实施例中,并不限定聚簇列的数量,可以是一个,也可以是多个(这里的多个包括两个或两个以上)。无论聚簇列的数量是几个,按照聚簇列对数据集中的N个数据行进行分组的实施方式相同或相似。在聚簇列为多个的情况下,按照聚簇列对数据集中的N个数据行进行分组包括以下几种方式:
方式1:将多个聚簇列中数据均相同的数据行划分到同一数据分组中,以得到至少两个数据分组,以便体现数据的聚簇特性。例如,假设聚簇列为三个,分别是R、T和W,对任意两个数据行L1和L2,若数据行L1和L2的R列、T列和W列的取值均相同,则将数据行L1和L2划分到同一数据分组中。
方式2:将多个聚簇列中数据均在对应数据范围内的数据行划分至同一数据分组中,以得到至少两个数据分组,以便体现数据的聚簇特性。其中,不同聚簇列对应的数据范围可以相同,也可以不相同。例如,假设聚簇列为三个,分别是R、T和W,R列对应的数据范围为(s1-s2)、T列对应的数据范围为(s3-s4)、W列对应的数据范围为(s5-s6),则对任意两个数据行L1和L2,若数据行L1和L2的R列的取值均在数据范围(s1-s2)内,T列的取值均在数据范围(s3-s4)内以及W列的取值均在数据范围(s5-s6)内,则将数据行L1和L2划分到同一数据分组中。
方式3:将多个聚簇列中部分聚簇列的数据相同而其余聚簇列的数据均在对应数据范围内的数据行划分至同一数据分组中,以得到至少两个数据分组,以便体现数据的聚簇特性。其中,不同聚簇列对应的数据范围可以相同,也可以不相同。例如,假设聚簇列为三个,分别是R、T和W,R列的数据需要相同、T列对应的数据范围为(s3-s4)、W列对应的数据范围为(s5-s6),则对任意两个数据行L1和L2,若数据行L1和L2的R列的取值相同,而T列的取值均在数据范围(s3-s4)内以及W列的取值均在数据范围(s5-s6)内,则将数据行L1和L2划分到同一数据分组中。
在得到至少两个数据分组之后,可以按照排序列以同样的排序顺序,在至少两个数据分组之间以及每个数据分组内进行排序,从而得到最终排序结果。其中,按照排序列,以数据分组为粒度在数据分组之间进行排序,可以保持数据的聚簇特性,便于按照数据分组进行查询;而在每个数据分组之内进一步按照排序列进行排序,可以在一定程度上呈现数据的全局有序特性,可保证按照数据范围进行查询时的性能几乎不受影响。需要说明的是,数据之间的有序性在数据分组之间可能呈现较小的抖动,即会在小范围内呈现数据乱序的特性,但这个范围比较小,通常对按照数据范围进行查询的性能基本没有影响。
在本申请各实施例中,并不限定在数据分组之间以及在每个数据分组内进行排序的实施方式。在一可选实施例B1中,可以先在数据分组之间进行排序,再在每个数据分组内排序。在另一可选实施例B2中,可以先在每个数据分组内进行排序,再在数据分组之间进行排序。下面分别对两种排序方式的实现过程进行详细说明。
可选实施例B1:在得到至少两个数据分组之后,按照排序列以指定的排序顺序,先在至少两个数据分组之间进行排序;之后,在每个数据分组内进行排序,以得到排序结果。
其中,指定的排序顺序可以是通过排序指令进行指定,例如在排序指令中可以携带一个参数,如果该参数取第一值,用于指示按照从小到大的顺序进行排序;如果该参数取第二值,用于指示按照从大到小的顺序进行排序。其中,第一值可以是0,第二值可以是1;或者,第一值可以是1,第二值可以是0;或者,第一值可以是“↑”,第二值可以是“↓”等等,对此不做限定。或者,也可以预先在数据库引擎中配置指定使用的排序顺序,则数据库引擎可以使用预先配置的排序顺序,在数据分组之间以及数据分组内进行排序操作。
在可选实施例B1中,包括先在数据分组之间进行排序,再在数据分组内进行排序,数据分组之间的排序方式以及数据分组之内的排序方式均可以有多种实现方式。其中,可选实施例B1的一种具体实现包括:
首先,根据至少两个数据分组各自包含的排序列中的数据,确定至少两个数据分组对应的基准数据;该基准数据用于在至少两个数据分组之间进行排序,且基准数据是根据数据分组包含的排序列中的数据确定出的,可选地,针对每个数据分组,可以选择该数据分组中排序列中的最小数据、最大数据、中位数或平均数,作为该数据分组对应的基准数据。这里的中位数是指按照一定的顺序对N个数据行中排序列上的数据进行排序,排序结果中居于中间位置的数据。这里的平均数是指对N个数据行中排序列上的数据求平均得到的结果。
接着,按照指定的排序顺序,结合至少两个数据分组对应的基准数据在至少两个数据分组之间进行排序,如果指定的排序顺序是从小到大,则基准数据越小的数据分组在存储位置上越靠前,反之,基准数据越大的数据分组在存储位置上越靠后;如果指定的排序顺序是从大到小,则基准数据越大的数据分组在存储位置上越靠前,反之,基准数据越小的数据分组在存储位置上越靠后。在具体实现上,可以按照指定的排序顺序,将至少两个数据分组对应的基准数据添加到目标数据表中,以得到至少两个数据分组在目标数据表中对应的数据分区。基准数据在目标数据表的位置可以看作是相邻两个数据分组在存储位置上的分割线。
进一步,在确定每个数据分组在目标数据表中对应的数据分区之后,可以针对每个数据分组,按照排序行以指定的排序顺序,将数据分组中的数据行填充到数据分组所在的数据分区内,以得到排序结果。具体地,对于该数据分组中待填充的任一数据行,在将该待填充数据行在排序列上的数据与该数据分组所在数据分区内已存在的各数据行(包括基准数据所在数据行和已经填充的其他数据行)在排序列上的数据进行大小比较,根据数据之间的大小关系按照指定的排序顺序,找到与该待填充数据行相邻的一个已存在数据行,在该已存在数据行的上方或下方填充该待填充数据行。
进一步在上述实施例中,每个数据分组对应的基准数据可以选择使用该数据分组中排序列中的数据,例如最小数据、最大数据或中位数;也可以选择使用不属于该数据分组中排序列中的数据,例如可以选择使用数据分组中排序列上数据的平均数。对于每个数据分组,若该数据分组对应的基准数据不属于数据分组包含的排序列中的数据,则在将该数据分组中的数据行填充到该数据分组所在数据分区之后,还可以将该基准数据所在数据行从目标数据表中删除,以确保在成功排序的情况下不增加额外数据,保持原本数据量不变。
可选实施例B2:在得到至少两个数据分组之后,按照排序列以指定的排序顺序,先在每个数据分组内进行排序;之后,在至少两个数据分组之间进行排序,以得到排序结果。
在可选实施例B2中,包括先在数据分组之内进行排序,再在数据分组之间进行排序,数据分组之内的排序方式以及数据分组之间的排序方式均可以有多种实现方式。其中,可选实施例B2的一种具体实现包括:
首先,按照排序列以指定的排序顺序,将每个数据分组中的数据行存储到临时存储区内,即实现数据分组内的排序。其中,临时存储区可以是缓存空间、内存空间或临时文件。数据分组内的排序是指以数据分组为单位,对每个数据分组中的数据行按照排序列的数据进行排序的过程。如果指定的排序顺序是从小到大,则对任一数据分组中的数据行,该数据行在排序列上的数据越小,该数据行在存储位置上越靠前,反之,该数据行在排序列上的数据越大,该数据行在存储位置上越靠后。如果指定的排序顺序是从大到小,则对任一数据分组中的数据行,该数据行在排序列上的数据越大,该数据行在存储位置上越靠前,反之,该数据行在排序列上的数据越小,该数据行在存储位置上越靠后。需要说明的是,在该步骤中,并不限定先对哪个数据分组进行组内排序,后对哪个数据分组进行组内排序,即并不限定对数据分组进行组内排序的先后顺序。也就是说,在临时存储区内,每个数据分组内的数据行是按照排序列进行有序排列的,但是在数据分组之间可能是乱序的。
在对每个数据分组进行组内排序之后,接下来在至少两个数据分组之间进行排序,简称为组间排序。该组间排序的过程包括:
根据至少两个数据分组各自包含的排序列中的数据,确定至少两个数据分组对应的基准数据;关于基准数据的确定方式以及作用可参见前述实施例,在此不在赘述。
按照指定的排序顺序对至少两个数据分组对应的基准数据进行排序,以得到至少两个数据分组之间的排序顺序。其中,基准数据之间的排序顺序即为至少两个数据分组之间的排序顺序。
最后,根据至少两个数据分组之间的排序顺序,依次从临时存储区内读取至少两个数据分组中的数据行并写入目标数据表中,以得到排序结果。在本实施例中,按照至少两个数据分组之间的排序顺序,以数据分组为单位,依次从临时存储区内进行数据读取,即每次读取直接读取一个数据分组内的数据;相应地,在向目标数据表中写入数据时,也是按照至少两个数据分组之间的排序顺序,以数据分组为单位依次向目标数据表中写入数据的,即每次向目标数据表中写入一个数据分组内的数据。最终,在目标数据表中,各数据分组之间以及每个数据分组内部的数据都是按序排序的。
下面以图1c所示待排序的数据集为例,对本申请实施例的排序过程进行示意性说明。在图1c中,待排序的数据集包括10个数据行和2个数据列;其中,一个数据列用于存储不同时间产生的订单号,记为orderkey;一个数据列用于存储不同订单号对应的出货日期,记为shipdate。在图1c中,订单号所在的数据列是聚簇列,出货日期所在的数据列是排序列。
如图1c所示,排序过程包括:
首先,按照聚簇列orderkey将10个数据行划分为4个数据分组,具体是聚簇列orderkey的取值相同的数据行被划分至同一数据分组内。在图1c中,聚簇列orderkey的取值为35的数据行被划分为同一数据分组,记为分组1;聚簇列orderkey的取值为68的数据行被划分为同一数据分组,记为分组2;聚簇列orderkey的取值为93的数据行被划分为同一数据分组,记为分组3;聚簇列orderkey的取值为117的数据行被划分为同一数据分组,记为分组4。
接着,按照排序列shipdate在数据分组之间进行排序。具体地,选择按照排序列shipdate中的最小数据在数据分组之间进行排序。分组1中排序列shipdate中的最小数据为1992-01-22,分组2中排序列shipdate中的最小数据为1996-01-01,分组3中排序列shipdate中的最小数据为1992-01-08,分组4中排序列shipdate中的最小数据为1996-02-01,则按照从小到大的顺序进行排序可得到图1c所示的排序结果,依次为分组3、分组1、分组2和分组4;按照4个分组之间的排序结果将这4个最小数据所在数据行存储到目标数据表中。在本实施例中,时间数据的大小是指时间的早晚,时间越早表示该时间数据越小,时间越晚表示该时间数据越大。
接着,针对每个数据分组,按照排序列shipdate中数据的大小关系,在目标数据表中进行该数据分组中其余数据行的填充。如图1c所示,按照排序列shipdate中的数据从小到大的顺序进行数据填充,得到的排序结果为:分组之间的顺序依次为分组3、分组1、分组2和分组4,分组3内排序后的数据依次为1992-01-08、1992-02-17、1992-03-15;分组1内排序后的数据依次为1992-01-22、1992-02-21、1992-03-19;分组2内排序后的数据依次为1996-01-01、1996-02-13;分组4内排序后的数据依次为1996-02-01、1996-04-13。在图1c中,可以看出各分组内的数据连续存储,即在同一数据分组内,且各分组中排序列shipdate中的最小数据所在数据行构成了其与上一邻居之间的分界线。
在此说明,在图1c所示实施例中,对可选实施例B1的详细实施过程进行了示例性说明,关于可选实施例B2的详细实施过程类似,不再进行示例性说明。另外,在图1c所示实施例中,以排序列的数量是一个为例进行说明,但并不限于此。本申请实施例也不限定排序列的数量,其可以是一个,也可以是多个(这里的多个也是指两个或两个以上)。在排序列的数量为多个的情况下,根据排序列在数据分组之间进行排序的方式可以是但不限于以下几种:
方式C1:在多个排序列中选择一个基准排序列,按照基准排序列以指定的排序顺序,在数据分组之间进行排序。关于基准排序列的选择方式不做限定。可选地,可以随机选择一个排序列作为基准排序列,或者,也可以在排序指令中限定多个排序列之间的优先级,根据排序列之间的优先级,选择最高优先级对应的排序列作为基准排序列;或者,也可以根据排序列的数据属性,选择数据属性最适合进行排序的排序列作为基准排序列。在选择出基准排序列之后,根据基准排序列在数据分组之间进行排序包括:以基准排序列为基准,确定各数据分组对应的基准数据,进而基于基准数据在至少两个数据分组之间进行排序,详细实施过程可参见前述实施例,在此不再赘述。
方式C2:根据排序列之间的优先级,依次利用多个排序列以指定的排序顺序,在数据分组之间进行多轮排序。其中,在以每个排序列在数据分组之间进行本轮排序时,也是以当前使用的排序列为基准,确定各数据分组对应的基准数据,进而基于基准数据在至少两个数据分组之间进行本轮排序,详细实施过程可参见前述实施例,在此不再赘述。
在排序列的数量为多个的情况下,根据排序列在每个数据分组之内进行排序的方式可以是但不限于以下几种:
方式D1:在多个排序列中选择一个基准排序列,按照基准排序列以指定的排序顺序,在数据分组内的各数据行之间进行排序。
方式D2:根据排序列之间的优先级,依次利用多个排序列以指定的排序顺序,在数据分组内的各数据行之间进行多轮排序。
需要说明的是,本申请实施例提供的数据排序方法,可用于对同时包含聚簇列和排序列的数据集进行排序。在数据集中,哪个或哪几个数据列是聚簇列,哪个或哪几个数据列是排序列可以是预先配置好的,当然,也可以没有配置。在没有配置排序列和聚簇列的情况下,在获取待排序的数据集之后,需要根据排序需求为该数据集配置合适的聚簇列和排序列。在预先配置了聚簇列和排序列的情况下,这些聚簇列和排序列可能适合本申请实施例提供的数据排序方法,也可能不适合本实施例提供的数据排序方法,在不适合的情况下,可以重新调整或配置数据集中的聚簇列和排序列。基于此,在获取待排序的数据集之后,还包括以下操作:根据数据集中各数据列的数据属性和/或数据分布特性,配置适合采用本申请实施例提供的数据排序方法进行数据排序的聚簇列和排序列。这里的配置可以是初始配置聚簇列和排序列的过程,也可以是对已有聚簇列和陪序列进行重新配置或调整的过程。其中,数据列的数据属性反应该数据列所承载数据的属性、类型或特点。以订单信息为例,对于存储订单号的数据列,其数据属性反应订单号这一数据对象;对于存储订单对应的行为数据的数据列,其数据属性反应与订单相关的下单、支付或发货等行为数据;对于存储产生行为数据的时间信息的数据列,其数据属性反应是行为数据产生的时间信息。其中,数据列的数据分布特性包括该数据列存储的数据的分布情况,这种分布情况主要是指该数据列所存储数据的全局数据波动范围以及在特定条件下的局部数据波动范围以及局部波动范围与全局数据波动范围的比例关系等信息。
在一可选实施例中,考虑到在数据库分析性场景中,数据排序需求更为普遍,而这种数据分析主要是针对待分析对象,例如某个订单、某个学生、某个应用等。这就需要待分析对象的标识信息具有聚簇性质,通过将同一待分析对象的相关数据连续存储,这样在进行数据分析时可以方便、快速地获取待分析对象的相关数据。基于此,可以根据待排序数据集中M个数据列的数据属性,识别出用于存储待分析对象的标识信息的数据列,将用于存储待分析对象的标识信息的数据列配置为聚簇列。
进一步,本实施例提供的排序方法需要同时兼顾聚簇特性和排序特性,为了尽量保持数据之间的全局排序特性,需要排序列上数据的局部波动范围相对于全局数据波动范围要尽量小,这里的局部数据波动范围是指同一待分析对象在排序列上的数据波动范围。以订单为例,同一订单产生各种行为数据的时间范围通常不会超过一天,但是对于不同订单产生各种行为数据的时间范围会非常宽泛,可能是一个月、三个月或一年等。假设时间信息上的全局波动范围在一年之内,而对同一订单在时间信息上的波动范围在一天之内,这种局部数据波动范围相对于全局数据波动范围要小很多。另外,以学生成绩为例,同一学生在不同学期的成绩不会有太大变化,但是整个学校全体学生在不同学期的成绩波动会比较大,则对应同一学生的成绩波动相对于全体学生学习成绩的波动要小很多。在本实施例中,可以通过局部数据波动范围相对全局数据波动范围的比例关系来判断局部数据波动范围是否比全局数据波动范围要小的多。基于此,在确定聚簇列之后,可以根据数据集中其余数据列的数据分布特性,识别出对应同一待分析对象的局部数据波动范围相对全局数据波动范围的比例关系符合设定条件(例如小于设定的比例阈值)的数据列,将对应同一待分析对象的局部数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列设置为排序列。其中,设定条件可以根据应用需求灵活设定,对此不做限定。
进一步,在一些分析场景中,待分析对象相关的数据除了包括待分析对象的标识信息之外,还包括待分析对象产生的行为数据以及待分析对象产生相关行为数据的时间信息。基于此,在对应同一待分析对象的数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列中,可以将数据集中用于存储待分析对象产生的行为数据的数据列和/或用于存储待分析对象产生行为数据的时间信息的数据列配置为排序列。简单而言,一个数据列可以作为排序列的前提条件是该数据列上的数据针对同一待分析对象的局部数据波动范围相对全局数据波动范围要小很多,以不影响该数据列上数据的全局排序性为基准。
在得到聚簇列和排序列的基础上,可以采用上述实施例描述的方式对待排序的数据集进行排序,从而得到兼顾数据聚簇特性和全局排序特性的排序结果。本申请实施例提供的方法在保证数据聚簇特性的同时,结合了同一分组内的数据在排序列上的波动范围相对于全局数据范围极小的特性,并基于由分组内排序列上的数据得到的基准数据在分组之间进行排序,从而保证分组间的数据总体上呈现从小到大或从大到小的排序趋势,即使出现排序抖动这种抖动也仅会出现在极小范围内,而这种抖动对于以数据范围进行查询的性能几乎没有影响,却可以极大地提供分组查询的性能。如图1d所示,以同样的数据集,斜直线是采用排序列对该数据集进行排序得到的数据排序结果,该排序结果中数据完全遵从从小到大的排序顺序;折线是采用本申请实施例提供的方法对该数据集进行排序得到的数据排序结果;折线表示的排序结果在趋势上与斜直线表示的趋势相同,只是在小范围内存在排序抖动,而这种排序抖动对以数据范围为条件进行查询的情况而言基本没有影响,也就是说在查询某个范围内的数据时,这种抖动范围都会落在查询范围之内。举例说明,假设某个查询请求可能要求查询1-10之内的数据,而排序抖动通常在0.5-1之间。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤11至步骤13的执行主体可以为设备A;又比如,步骤11和12的执行主体可以为设备A,步骤13的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如11、12等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图2为本申请示例性实施例提供的一种数据排序装置的结构示意图。如图2所示,该装置包括:获取模块21、分组模块22和排序模块23。
其中,获取模块21,用于响应于排序指令,获取待排序的数据集,数据集包括N个数据行M个数据列,M个数据列中至少包括聚簇列和排序列,N、M是大于等于2的自然数。分组模块22,用于按照聚簇列对数据集中的N个数据行进行分组,以得到至少两个数据分组。排序模块23,用于按照排序列以同样的排序顺序,在至少两个数据分组之间以及每个数据分组内进行排序,以得到排序结果。
在一可选实施例中,分组模块22在按照所述聚簇列对所述数据集中的N个数据行进行分组时,具体用于:将所述聚簇列中数据相同或在同一数据范围内的数据行划分到同一数据分组中,以得到至少两个数据分组。
在一可选实施例中,排序模块23在按照所述排序列以同样的排序顺序,在所述至少两个数据分组之间以及每个数据分组内进行排序时,具体用于:
按照所述排序列以指定的排序顺序,在所述至少两个数据分组之间进行排序后,在每个数据分组内进行排序,以得到排序结果;
或者
按照所述排序列以指定的排序顺序,在每个数据分组内进行排序后,在所述至少两个数据分组之间进行排序,以得到排序结果。
进一步可选地,排序模块23在至少两个数据分组之间进行排序后,在每个数据分组内进行排序时,具体用于:根据所述至少两个数据分组各自包含的所述排序列中的数据,确定所述至少两个数据分组对应的基准数据;按照指定的排序顺序,将所述至少两个数据分组对应的基准数据添加到目标数据表中,以得到所述至少两个数据分组在所述目标数据表中对应的数据分区;针对每个数据分组,按照所述排序行以指定的排序顺序,将所述数据分组中的数据行填充到所述数据分组所在的数据分区内,以得到排序结果。
进一步可选地,排序模块23在确定所述至少两个数据分组对应的基准数据时,具体用于:针对每个数据分组,将所述数据分组包含的所述排序列中的最小数据、最大数据、中位数或平均数,作为所述数据分组对应的基准数据。
进一步可选地,若所述数据分组对应的基准数据不属于所述数据分组包含的所述排序列中的数据,排序模块23还用于:在将所述数据分组中的数据行填充到所述数据分组所在的数据分区内之后,将所述基准数据所在的数据行从所述目标数据表中删除。
在一可选实施例中,排序模块23在每个数据分组内进行排序后,在所述至少两个数据分组之间进行排序时,具体用于:按照所述排序列以指定的排序顺序,将每个数据分组中的数据行存储到临时存储区内;根据所述至少两个数据分组各自包含的所述排序列中的数据,确定所述至少两个数据分组对应的基准数据;按照指定的排序顺序对所述至少两个数据分组对应的基准数据进行排序,以得到所述至少两个数据分组之间的排序顺序;根据所述至少两个数据分组之间的排序顺序,依次从所述临时存储区内读取所述至少两个数据分组中的数据行并写入目标数据表中,以得到排序结果。
在一可选实施例中,如图2所示,该装置还包括:配置模块24。配置模块24,用于根据所述数据集中M个数据列的数据属性,将所述数据集中用于存储待分析对象的标识信息的数据列配置为聚簇列;根据所述数据集中其余数据列的数据分布特性,将对应同一待分析对象的局部数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列配置为排序列。
进一步可选地,配置模块24在配置排序列时,具体用于:在对应同一待分析对象的数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列中,将所述数据集中用于存储待分析对象产生的行为数据的数据列和/或用于存储待分析对象产生行为数据的时间信息的数据列配置为排序列。
以上描述了数据排序装置的内部功能和结构,实际中,该数据排序装置可实现为数据库引擎,该数据库引擎可以应用于各种数据库系统中,例如可以应用于传统的数据库、云数据库以及数据仓库、数据湖等。如图3所示,该数据库引擎包括:存储器31和处理器32。
存储器31,用于存储计算机程序,并可被配置为存储其它各种数据以支持在数据库引擎上的操作。这些数据的示例包括用于在数据库引擎上操作的任何应用程序或方法的指令,数据,各种数据库语句等。
存储器31可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器32,与存储器31耦合,用于执行存储器31中的计算机程序,以用于:响应于排序指令,获取待排序的数据集,所述数据集包括N个数据行M个数据列,所述M个数据列中至少包括聚簇列和排序列,N、M是大于等于2的自然数;按照所述聚簇列对所述数据集中的N个数据行进行分组,以得到至少两个数据分组;按照所述排序列以同样的排序顺序,在所述至少两个数据分组之间以及每个数据分组内进行排序,以得到排序结果。
在一可选实施例中,处理器32在按照所述聚簇列对所述数据集中的N个数据行进行分组时,具体用于:将所述聚簇列中数据相同或在同一数据范围内的数据行划分到同一数据分组中,以得到至少两个数据分组。
在一可选实施例中,处理器32在按照所述排序列以同样的排序顺序,在所述至少两个数据分组之间以及每个数据分组内进行排序时,具体用于:
按照所述排序列以指定的排序顺序,在所述至少两个数据分组之间进行排序后,在每个数据分组内进行排序,以得到排序结果;
或者
按照所述排序列以指定的排序顺序,在每个数据分组内进行排序后,在所述至少两个数据分组之间进行排序,以得到排序结果。
进一步可选地,处理器32在至少两个数据分组之间进行排序后,在每个数据分组内进行排序时,具体用于:根据所述至少两个数据分组各自包含的所述排序列中的数据,确定所述至少两个数据分组对应的基准数据;按照指定的排序顺序,将所述至少两个数据分组对应的基准数据添加到目标数据表中,以得到所述至少两个数据分组在所述目标数据表中对应的数据分区;针对每个数据分组,按照所述排序行以指定的排序顺序,将所述数据分组中的数据行填充到所述数据分组所在的数据分区内,以得到排序结果。
进一步可选地,处理器32在确定所述至少两个数据分组对应的基准数据时,具体用于:针对每个数据分组,将所述数据分组包含的所述排序列中的最小数据、最大数据、中位数或平均数,作为所述数据分组对应的基准数据。
进一步可选地,若所述数据分组对应的基准数据不属于所述数据分组包含的所述排序列中的数据,处理器32还用于:在将所述数据分组中的数据行填充到所述数据分组所在的数据分区内之后,将所述基准数据所在的数据行从所述目标数据表中删除。
在一可选实施例中,处理器32在每个数据分组内进行排序后,在所述至少两个数据分组之间进行排序时,具体用于:按照所述排序列以指定的排序顺序,将每个数据分组中的数据行存储到临时存储区内;根据所述至少两个数据分组各自包含的所述排序列中的数据,确定所述至少两个数据分组对应的基准数据;按照指定的排序顺序对所述至少两个数据分组对应的基准数据进行排序,以得到所述至少两个数据分组之间的排序顺序;根据所述至少两个数据分组之间的排序顺序,依次从所述临时存储区内读取所述至少两个数据分组中的数据行并写入目标数据表中,以得到排序结果。
在一可选实施例中,处理器32还用于根据所述数据集中M个数据列的数据属性,将所述数据集中用于存储待分析对象的标识信息的数据列配置为聚簇列;根据所述数据集中其余数据列的数据分布特性,将对应同一待分析对象的局部数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列配置为排序列。
进一步可选地,处理器32在配置排序列时,具体用于:在对应同一待分析对象的数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列中,将所述数据集中用于存储待分析对象产生的行为数据的数据列和/或用于存储待分析对象产生行为数据的时间信息的数据列配置为排序列。
进一步,如图3所示,该数据库引擎还包括:通信组件33和电源组件34等其它组件。电源组件34负责为数据库引擎的各种组件提供电力。电源组件34可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。图3中仅示意性给出部分组件,并不意味着数据库引擎只包括图3所示组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器能够实现上述数据排序方法实施例中的各步骤。
相应地,本申请实施例还提供一种计算机程序产品,包括计算机程序/指令,当计算机程序/指令被处理器执行时,致使处理器能够实现上述数据排序方法实施例中的各步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种数据排序方法,其特征在于,包括:
响应于排序指令,获取待排序的数据集,所述数据集包括N个数据行M个数据列,所述M个数据列中至少包括聚簇列和排序列,N、M是大于等于2的自然数;
按照所述聚簇列对所述数据集中的N个数据行进行分组,以得到至少两个数据分组;
按照所述排序列以同样的排序顺序,在所述至少两个数据分组之间以及每个数据分组内进行排序,以得到排序结果。
2.根据权利要求1所述的方法,其特征在于,按照所述聚簇列对所述数据集中的N个数据行进行分组,以得到至少两个数据分组,包括:
将所述聚簇列中数据相同或在同一数据范围内的数据行划分到同一数据分组中,以得到至少两个数据分组。
3.根据权利要求2所述的方法,其特征在于,按照所述排序列以同样的排序顺序,在所述至少两个数据分组之间以及每个数据分组内进行排序,以得到排序结果,包括:
按照所述排序列以指定的排序顺序,在所述至少两个数据分组之间进行排序后,在每个数据分组内进行排序,以得到排序结果;
或者
按照所述排序列以指定的排序顺序,在每个数据分组内进行排序后,在所述至少两个数据分组之间进行排序,以得到排序结果。
4.根据权利要求3所述的方法,其特征在于,按照所述排序列以指定的排序顺序,在所述至少两个数据分组之间进行排序后,在每个数据分组内进行排序,以得到排序结果,包括:
根据所述至少两个数据分组各自包含的所述排序列中的数据,确定所述至少两个数据分组对应的基准数据;
按照指定的排序顺序,将所述至少两个数据分组对应的基准数据添加到目标数据表中,以得到所述至少两个数据分组在所述目标数据表中对应的数据分区;
针对每个数据分组,按照所述排序行以指定的排序顺序,将所述数据分组中的数据行填充到所述数据分组所在的数据分区内,以得到排序结果。
5.根据权利要求4所述的方法,其特征在于,根据所述至少两个数据分组各自包含的所述排序列中的数据,确定所述至少两个数据分组对应的基准数据,包括:
针对每个数据分组,将所述数据分组包含的所述排序列中的最小数据、最大数据、中位数或平均数,作为所述数据分组对应的基准数据。
6.根据权利要求5所述的方法,其特征在于,若所述数据分组对应的基准数据不属于所述数据分组包含的所述排序列中的数据,所述方法还包括:
在将所述数据分组中的数据行填充到所述数据分组所在的数据分区内之后,将所述基准数据所在的数据行从所述目标数据表中删除。
7.根据权利要求3所述的方法,其特征在于,按照所述排序列以指定的排序顺序,在每个数据分组内进行排序后,在所述至少两个数据分组之间进行排序,以得到排序结果,包括:
按照所述排序列以指定的排序顺序,将每个数据分组中的数据行存储到临时存储区内;
根据所述至少两个数据分组各自包含的所述排序列中的数据,确定所述至少两个数据分组对应的基准数据;
按照指定的排序顺序对所述至少两个数据分组对应的基准数据进行排序,以得到所述至少两个数据分组之间的排序顺序;
根据所述至少两个数据分组之间的排序顺序,依次从所述临时存储区内读取所述至少两个数据分组中的数据行并写入目标数据表中,以得到排序结果。
8.根据权利要求1-7任一项所述的方法,其特征在于,还包括:
根据所述数据集中M个数据列的数据属性,将所述数据集中用于存储待分析对象的标识信息的数据列配置为聚簇列;
根据所述数据集中其余数据列的数据分布特性,将对应同一待分析对象的局部数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列配置为排序列。
9.根据权利要求8所述的方法,其特征在于,根据所述数据集中其余数据列的数据分布特性,将对应同一待分析对象的局部数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列配置为排序列,包括:
在对应同一待分析对象的数据波动范围相对全局数据波动范围的比例关系符合设定条件的数据列中,将所述数据集中用于存储待分析对象产生的行为数据的数据列和/或用于存储待分析对象产生行为数据的时间信息的数据列配置为排序列。
10.一种数据库引擎,其特征在于,包括:存储器和处理器;所述存储器用于存储计算机程序;所述处理器,与所述存储器耦合,用于执行所述计算机程序,以用于:
响应于排序指令,获取待排序的数据集,所述数据集包括N行M列,所述M列中至少包括聚簇列和排序列,N、M是大于等于2的自然数;
按照所述聚簇列对所述数据集中的N个数据行进行分组,以得到至少两个数据分组;
按照所述排序列以同样的排序顺序,在所述至少两个数据分组之间以及每个数据分组内进行排序,以得到排序结果。
11.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器实现权利要求1-9任一项所述方法中的步骤。
12.一种计算机程序产品,包括计算机程序/指令,其特征在于,当所述计算机程序/指令被处理器执行时,致使所述处理器实现权利要求1-9任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110621131.1A CN113392134A (zh) | 2021-06-03 | 2021-06-03 | 数据排序方法、数据库引擎及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110621131.1A CN113392134A (zh) | 2021-06-03 | 2021-06-03 | 数据排序方法、数据库引擎及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113392134A true CN113392134A (zh) | 2021-09-14 |
Family
ID=77618240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110621131.1A Pending CN113392134A (zh) | 2021-06-03 | 2021-06-03 | 数据排序方法、数据库引擎及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113392134A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023230943A1 (en) * | 2022-06-01 | 2023-12-07 | Huawei Technologies Co., Ltd. | System and method of data management |
-
2021
- 2021-06-03 CN CN202110621131.1A patent/CN113392134A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023230943A1 (en) * | 2022-06-01 | 2023-12-07 | Huawei Technologies Co., Ltd. | System and method of data management |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956394B2 (en) | Reclustering of database tables based on peaks and widths | |
US20180165348A1 (en) | Distributed storage of aggregated data | |
CN107016001B (zh) | 一种数据查询方法及装置 | |
US8732118B1 (en) | Distributed performance of data aggregation operations | |
US10162855B2 (en) | Systems and methods for optimizing data analysis | |
US9195701B2 (en) | System and method for flexible distributed massively parallel processing (MPP) database | |
US20170116032A1 (en) | System and method for parallel support of multidimensional slices with a multidimensional database | |
CN111177081B (zh) | 游戏日志内容查询方法、装置、计算机设备和存储介质 | |
US20100161565A1 (en) | Cluster data management system and method for data restoration using shared redo log in cluster data management system | |
CN110297869B (zh) | 一种ai数据仓库平台及操作方法 | |
CN104112008A (zh) | 一种多表数据关联查询优化方法和装置 | |
CN103714096A (zh) | 基于Lucene的倒排索引系统构建、数据处理方法及装置 | |
US20200026592A1 (en) | System and method for automatic root cause analysis and automatic generation of key metrics in a multidimensional database environment | |
US7080072B1 (en) | Row hash match scan in a partitioned database system | |
CN115422205A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN113392134A (zh) | 数据排序方法、数据库引擎及存储介质 | |
CN115062027A (zh) | 哈希连接方法、计算节点、存储介质及程序产品 | |
US20030149698A1 (en) | System and method for positioning records in a database | |
US20120109875A1 (en) | Organization of data mart using clustered key | |
CN111125157A (zh) | 查询数据的处理方法、装置、存储介质及处理器 | |
CN111221814A (zh) | 二级索引的构建方法、装置及设备 | |
CN108241624B (zh) | 一种查询脚本的生成方法及装置 | |
CN110427390B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN111026759B (zh) | 基于Hbase的报表生成方法及装置 | |
Oonhawat et al. | Hotspot management strategy for real-time log data in MongoDB |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240313 Address after: # 03-06, Lai Zan Da Building 1, 51 Belarusian Road, Singapore Applicant after: Alibaba Innovation Co. Country or region after: Singapore Address before: Room 01, 45th Floor, AXA Building, 8 Shanton Road, Singapore Applicant before: Alibaba Singapore Holdings Ltd. Country or region before: Singapore |