CN117932121A - 字符串排序方法、装置、计算机存储介质及加速卡 - Google Patents

字符串排序方法、装置、计算机存储介质及加速卡 Download PDF

Info

Publication number
CN117932121A
CN117932121A CN202311601254.4A CN202311601254A CN117932121A CN 117932121 A CN117932121 A CN 117932121A CN 202311601254 A CN202311601254 A CN 202311601254A CN 117932121 A CN117932121 A CN 117932121A
Authority
CN
China
Prior art keywords
character string
data
character
target
string data
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
Application number
CN202311601254.4A
Other languages
English (en)
Inventor
张宏
李晟
耿嘉
陈岩
张宇
鄢贵海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yusur Technology Co ltd
Original Assignee
Yusur Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Yusur Technology Co ltd filed Critical Yusur Technology Co ltd
Priority to CN202311601254.4A priority Critical patent/CN117932121A/zh
Publication of CN117932121A publication Critical patent/CN117932121A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种字符串排序方法、装置、计算机存储介质及加速卡,本实施例的整个字符串排序过程是在加速卡中完成的,避免了主计算设备中执行的其他任务影响字符串排序处理的效率,从而提高了处理效率。利用字符串数据的数据类型确定是否对字符串数据集进行拆分;若拆分,则基于字符串数据的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不拆分,则根据字符串数据的数据类型,从字符串数据集中直接获取多个目标字符串和对应的地址信息。根据多个目标排序数据和地址信息,对多个目标字符串进行排序得到排序结果,实现针对不同类型的字符串数据集进行不同处理,进一步提高了处理效率。

Description

字符串排序方法、装置、计算机存储介质及加速卡
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种字符串排序方法、装置、计算机存储介质及加速卡。
背景技术
在一些需要根据某种特定顺序处理或分析数据的场景中。例如在一个服务平台中,每天都会产生大量的用户日志数据,日志数据记录了用户在服务平台上的各种操作,日志数据通常是按照时间顺序生成,但由于网络延迟、服务器处理时间等因素,日志数据在到达日志服务器时的顺序与生成时间顺序不一致,从而不便于日志服务器进行日志数据分析处理,因此,为了进行高效的数据分析,通常需要将日志数据按生成时间顺序重新排序。
现有技术中通常是通过主计算设备执行字符串重新排序的处理过程,而由于主计算设备的算力有限,并且需要执行多个数据处理任务,从而导致主计算设备的算力不足,从而使得针对字符串重新排序的处理效率低。
发明内容
有鉴于此,本申请实施例提供一种字符串排序方法、装置、计算机存储介质及电子设备,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了一种字符串排序方法,用于与主计算设备连接的加速卡,加速卡中包括存储区和加速核,字符串排序方法包括:接收主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入存储区,其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型;通过加速核从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分;若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息;通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。
根据本申请实施例的第二方面,提供了一种字符串排序装置,用于与主计算设备连接的加速卡,加速卡中包括存储区和加速核,字符串排序装置包括数据接收模块、数据预处理模块和数据排序模块。数据接收模块用于接收主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入存储区,其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型;数据预处理模块用于通过加速核从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分;若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息;数据排序模块用于通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。
根据本申请实施例的第三方面,提供了一种加速卡,包括存储区和加速核,其中,存储区用于存储从主计算设备接收的字符串数据集、多个目标排序数据和排序参数,以及存储排序结果,其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型;加速核用于从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分;若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息;从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。
根据本申请实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的方法。
本申请实施例的字符串排序方法、装置、计算机存储介质及加速卡,其中,字符串排序方法用于与主计算设备连接的加速卡,加速卡中包括存储区和加速核,字符串排序方法包括:接收主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入存储区,其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型;通过加速核从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分;若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息;通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。本实施例的整个字符串排序过程是在加速卡中完成的,而主计算设备只需发送数据以及读取处理结果即可,从而减少了字符串排序处理对主计算设备的算力的占用,且避免了主计算设备中执行的其他任务影响字符串排序处理的效率,从而提高了处理效率。另外,利用字符串的数据类型,判断是否需要对字符串数据集进行拆分处理,从而可以针对不同类型的字符串数据集进行不同处理,提高了获得目标字符串和地址信息的效率,从而提高了整体的数据处理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A为根据本申请示例性实施例的一种字符串排序方法的应用场景示意图;
图1B为根据本申请实施例的另一种字符串排序方法的应用场景示意图;
图2为根据本申请示例性实施例的一种字符串排序方法的步骤流程图;
图3为根据本申请另一示例性实施例的字符串排序方法的步骤流程图;
图4A至4D为根据本申请示例性实施例的字符串排序方法的处理过程示意图;
图5为根据本申请示例性实施例的一种字符串排序装置的结构框图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
在对本申请实施例的字符串排序方法进行说明之前,先对字符串排序方法的应用场景进行简略说明,以便于理解。
首先,根据序列号对字符串进行重新排序是大数据中的一种数据处理操作。通常是在需要根据某种特定顺序处理或分析数据的场景中。例如在一个服务平台中,每天都会产生大量的用户日志数据,日志数据记录了用户在服务平台上的各种操作,如页面访问、点击、购买等。日志数据通常按照时间顺序生成,例如,每条日志数据都包含一个时间戳和相关的日志信息。但由于网络延迟、服务器处理时间等因素,日志数据在到达日志服务器时的顺序与生成时间顺序不一致。从而不便于日志服务器进行日志数据分析处理,因此,为了进行高效的数据分析,通常需要将日志数据按生成时间顺序重新排序。
通常,可以使用大数据处理框架(例如Apache Hadoop或Apache Spark)来处理日志数据。利用大数据处理框架提供的分布式排序算法,根据日志数据中的时间戳对日志信息进行排序。可以根据排序后的日志信息进行用户行为分析、异常检测等。
现有技术中通常是通过主计算设备执行字符串重新排序的处理过程,而由于主计算设备的算力有限,并且需要执行多个数据处理任务,从而导致主计算设备的算力不足,从而使得针对字符串重新排序的处理效率低。因此,本申请实施例提供了一种字符串排序方法、装置、计算机存储介质及电子设备,以至少部分解决上述问题。
参照图1A,图1A为根据本申请示例性实施例的一种字符串排序方法的应用场景示意图。本实施例的字符串排序方法可以用于与主计算设备连接的加速卡中。
其中,主计算设备执行字符串排序所在的任务的设备,加速卡是插接到主计算设备上的、用于提高主计算设备在某一方面的处理速度的附属设备。例如,加速卡具有标准的PCIE接口,可以通过PCIE插槽插接在著计算设备上,PCIE是指PCI-Express,是一种总线和接口标准,加速卡与主计算设备可以通过PCIE传输通道进行数据传输.在本实施例中,加速卡用于提高主计算设备数据处理的速度。
主计算设备可以是客户端,也可以是服务器。它可以体现为桌面计算机、膝上型计算机、手机、PDA、专用终端,也可以体现为若干终端组成的集群,另外,它还可以是一台终端上划分出来的一部分,如虚拟机。加速卡可以为附属设备,例如插接在卡槽上的卡,也可以为与主计算设备通过接口连接的另一台独立的设备。本实施例对此不进行限制。
本实施例中,主计算设备执行任务。当任务的一部分需要进行字符串排序时,将与进行字符串排序相关的数据传输到加速卡,由加速卡获得字符串排序的处理结果后,可以返回处理完成信息给主计算设备,主计算设备收到处理完成信息后,从加速卡中读取排序结果,从而减轻主计算设备进行字符串排序的算力占用,避免了主计算设备中执行的其他任务影响字符串排序的效率,从而提高了处理效率。
如图1A所示,主计算设备包括处理器(Central Processing Unit,CPU)和内存。处理器是用于执行主计算设备的任务的核心部件。内存是存储主计算设备的任务需要的数据、以及主计算设备执行任务产生的中间结果和最终结果的部件。例如,本实施例中的字符串数据集、多个目标排序数据和排序参数也是存储在内存中。在需要执行字符串排序时,处理器将字符串数据集、多个目标排序数据和排序参数从内存调出,通过主计算设备和加速卡之间的传输通道发送到加速卡。
加速卡包括加速核和存储区。加速核是加速卡中用于对数据进行字符串排序的处理单元。存储区是加速卡中用于存储数据的区域,如存储区可以是双倍速率同步动态随机存储器(Double Data Rate,DDR)。由于加速卡中具有加速核和存储区,因此,它在进行字符串排序时,可以一次性接收需要进行字符串排序的相关数据,不用多次与主计算设备进行数据传输,从而减少了数据传输开销。
参照图1B,本实施例中的存储区可以包括第一存储区和第二缓存区,其中,第一存储区用于存储从主计算设备接收到的数据,例如本实施例中的字符串数据集、多个目标排序数据和排序参数;第一存储区还用于存储主计算设备读取的数据处理结果,例如本实施例中的排序结果。第二缓存区用于对数据处理过程中的过程数据进行缓存,例如本实施例中的目标字符串和对应的地址信息。
参照图2,示出了根据本申请示例性实施例的一种字符串排序方法的步骤流程图。
本实施例的字符串排序方法用于与主计算设备连接的加速卡,加速卡中包括存储区和加速核,字符串排序方法具体包括以下步骤:
S202、接收主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入存储区。
其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型。
示例性地,字符串数据是要进行排序的数据,字符串数据对应的数据类型用于指示字符串数据的数据结构,例如,字符串数据中可以包含字符串内容和对应的字符长度,字符长度用于指示字符串内容占用的字符数量,例如字符串内容“aaaaa”对应的字符长度为5字节,需要说明的是,字符串内容占用的字符数量可以固定,也可以不固定,字符长度占用的字符数量固定,字符长度占用的字符数量可以是4字节;字符串数据中也可以只包含字符串内容,具体可以根据字符串数据对应的数据类型确定。字符串数据对应的数据类型可以包括第一数据类型和第二数据类型,其中,第一数据类型对应的字符串数据为可变长度字符串,可变长度字符串中包含第一字符串内容和对应的可变字符长度,可变长度字符串是指字符串数据集中每个字符串数据包含的字符串的字符长度不固定;第二数据类型对应的字符串数据为固定长度字符串,固定长度字符串可以包括第一固定长度字符串和第二固定长度字符串,其中,第一固定长度字符串中包含第二字符串内容和对应的固定字符长度,第二固定长度字符串中只包含第三字符串内容,固定长度字符串是指字符串数据集中每个字符串数据包含的字符串的字符长度固定。目标排序数据是指一组有序数据,包括数据值和数据值的排序,例如可以是序列号、时间等,例如,一组目标排序数据为“2531”,其中,数据值分别为“2”、“5”、“3”、“1”,数据值的排序为“2”排序为1、“5”排序为2、“3”排序为3、“1”排序为4,本实施例对此不进行限制。
排序参数包括字符串数据对应的数据类型,可以根据排序参数中字符串数据对应的数据类型确定字符串数据包含哪些数据。排序参数中还可以包括目标字符长度和输入数量,目标字符长度是指字符串数据集中每个字符串数据包含的字符串的字符长度,需要说明的是,目标字符长度只在字符串数据中只包含字符串内容时有效。输入数量是指加速卡分别接收到字符串数据和目标排序数据的数量,字符串数据和目标排序数据的输入数量可以相等,也可以不相等,本实施例对此不进行限制,例如,字符串数据和目标排序数据的输入数量分别为100个数据和150个数据。
S204、通过加速核从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分;若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息。
示例性地,预设的字符串处理规则用于指示字符串数据的数据类型与是否进行数据拆分之间的对应关系,可由本领域技术人员根据实际情况灵活设定,例如,第一数据类型对应的是对字符串数据集进行拆分,第二数据类型对应的是不对字符串数据集进行拆分。预设的字符串拆分规则用于指示字符串数据对应的数据类型与字符串数据拆分方式之间的对应关系,其中,可以根据不同的数据类型对应的不同字符串数据的数据结构,设置不同的字符串数据拆分方式。若对字符串数据集进行拆分,则基于字符串数据对应的数据类型,例如,参照图4B,字符串数据为可变长度字符串,从预设的字符串拆分规则中匹配对应的字符串数据拆分方式对字符串数据集进行拆分,可以将每个可变长度字符串中的第一字符串内容和可变字符长度拆分开得到多个第一字符串内容,以及每个第一字符串内容在所有得到的第一字符串内容中的位置,从而得到多个目标字符串和对应的地址信息。若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,例如参照图4C,字符串数据为第一固定长度字符串,则可以根据固定字符长度,直接从字符串数据集中获取每个第一固定长度字符串中的第二字符串内容以及对应的在字符串数据集中的位置,得到多个目标字符串和对应的地址信息。其中,目标字符串是指字符串内容,地址信息可以包括每个目标字符串的排序信息和读取起始地址信息,例如,共得到5个目标字符串,每个目标字符串的字符长度为4字节,则第二个目标字符串的排序信息为2,读取起始地址信息为第5字节。
S206、通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。
示例性地,查找每个目标排序数据中数据值对应的地址信息中的排序信息,确定该数据值对应的目标字符串,再根据目标字符串的读取起始地址信息读取该目标字符串,再对应的数据值的排序,可以得到该数据值对应的目标字符串的排序,遍历所有的目标排序数据,则可以将目标字符串按照对应的排序进行拼接,得到排序结果。需要说明的是,每个目标字符串再排序过程中可以使用一次,也可以使用多次,也可以不使用,本实施例对此不进行限制。
在一种可选实现方式中,存储区包括第一存储区和第二缓存区,第一存储区用于存储字符串数据集、多个目标排序数据、排序参数以及排序结果,本实施例的方法还包括:将多个目标字符串和对应的地址信息缓存至第二缓存区;其中,通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,包括:通过加速核从第一存储区读取目标排序数据,并根据多个目标排序数据和地址信息,从第二缓存区依次读取多个目标字符串进行排序,得到排序结果。
示例性地,参照图1B,存储区包括第一存储区和第二缓存区,接收主计算设备发送的字符串数据集、多个目标排序数据和排序参数,可以存入第一存储区,通过加速核从第一存储区读取字符串数据集和排序参数,此处,当字符串数据集中包含的字符串数据的数量过大时,加速核可以分批次读取字符串数据集中的字符串数据并进行处理,并将每一批次得到的目标字符串和对应的地址信息存入第二缓存区,之后,通过加速核从第一存储区读取目标排序数据,根据多个目标排序数据和地址信息,再从第二缓存区读取对应的目标字符串进行排序,得到排序结果。
本实现方式中,通过设置第二缓存区,可以将加速核处理得到的多个目标字符串和对应的地址信息缓存至第二缓存区,后续再从第二缓存区依次读取多个目标字符串进行排序,得到排序结果。避免在数据量较大的情况下,将大量处理过程中的数据缓存在加速核中,导致影响加速核的处理效率。
在一实现方式中,加速核还包括第三缓存区,第三缓存区设置有预设缓存数据量,例如预设缓存数据量可以为512bit,即64字节,本实施例对此不进行限制。将多个目标字符串和对应的地址信息缓存至第二缓存区之前,可以先将得到的目标字符串和对应的地址信息缓存至第三缓存区,每当第三缓存区缓存的数据达到预设缓存数据量,再通过加速核将第三缓存区中的目标字符串和对应的地址信息写入存储区的第三缓存区,直至将字符串数据集处理完成。本实现方式可以针对处理大量数据的场景,再加速核中设置第三缓存区,可以避免了再处理过程中实时或频繁的对存储区进行写入操作,降低了数据写入存储区的频率,从而减少了加速核和存储区之间数据传输的开销。
在一种可选实现方式中,本实施例的方法还包括:将排序结果写入第一存储区,并统计排序结果对应的总字符长度;返回处理完成信息至主计算设备,以使主计算设备从第一存储区读取排序结果和总字符长度。
示例性地,加速核在得到排序结果后,再将排序结果写入第一存储区,并且向主计算设备返回处理完成信息,例如,加速核可以在将排序结果写入第一存储区时,同时向主计算设备返回处理完成信息;或者,可以在将排序结果写入第一存储区后,再向主计算设备返回处理完成信息,本实施例对此不进行限制。总字符长度可以通过字符串数据中的字符长度和排序参数中字符串数据的输入数量确定,例如,若字符串数据为固定长度字符串,则总字符长度=固定字符长度(或排序参数中的目标字符长度)*输入数量;若字符串数据为可变长度字符串,则在排序过程中对目标字符串对应的可变字符长度进行累计,得到排序结果后,将可变字符长度的累计结果作为总字符长度。另外,第一存储区中可以包括多个区域,以分别存储字符串数据、目标排序数据、排序参数、排序结果和总字符长度等。主计算设备接收到处理完成信息后,由处理器从第一存储区读取排序结果和总字符长度,再通过处理器将排序结果和总字符长度传输至内存中进行存储。
本实现方式中,通过加速核将排序结果和总字符长度写入第一存储区,再返回处理完成信息至主计算设备,主计算设备响应于处理完成信息则可以从第一存储区读取排序结果,从而可以使主计算设备及时从加速卡中读回处理结果。
本申请实施例的字符串排序方法用于与主计算设备连接的加速卡,加速卡中包括存储区和加速核,具体包括:接收主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入存储区,其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型;通过加速核从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分;若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息;通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。本实施例的整个字符串排序过程是在加速卡中完成的,而主计算设备只需发送数据以及读取处理结果即可,从而减少了字符串排序处理对主计算设备的算力的占用,且避免了主计算设备中执行的其他任务影响字符串排序处理的效率,从而提高了处理效率。另外,利用字符串的数据类型,判断是否需要对字符串数据集进行拆分处理,从而可以针对不同类型的字符串数据集进行不同处理,提高了获得目标字符串和地址信息的效率,从而提高了整体的数据处理效率。
参照图3,示出了根据本申请另一示例性实施例的字符串排序方法的步骤流程图,如图所示,本实施例主要示出了上述实施例的步骤S204中的“通过加速核从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分”的具体实施方案,本实施例主要包括以下步骤:
S302、接收主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入存储区。
其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型。
需要说明的是,步骤S302可参照上述步骤S202的具体实施方式进行实施,在此不进行赘述。
S304、通过加速核从存储区读取字符串数据集和排序参数。
S306、若字符串数据对应的数据类型为第一数据类型,则确定对字符串数据集进行拆分,若字符串数据对应的数据类型为第二数据类型,则确定不对字符串数据集进行拆分。
其中,第一数据类型用于指示字符串数据的字符长度不固定,且字符串数据包含字符串内容和对应的字符长度信息。第二数据类型用于指示字符串数据的字符长度固定。
示例性地,参照图4A,第一数据类型可以为可变长度字符串,可变长度字符串中包含可变字符长度和第一字符串内容。第二数据类型对应的字符串数据为固定长度字符串,固定长度字符串可以包括第一固定长度字符串和第二固定长度字符串,其中,参照图4C,第一固定长度字符串中包含第二字符串内容和对应的固定字符长度,参照图4D,第二固定长度字符串中只包含第三字符串内容。
S308、若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息。
需要说明的是,步骤S308可参照上述步骤S204中的具体实施方式进行实施,在此不进行赘述。
在一种可选实现方式中,第一数据类型为可变长度字符串,基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息,包括:当第一数据类型为可变长度字符串,则确定字符串数据包含可变字符长度和第一字符串内容,其中,可变字符长度用于指示第一字符串内容包含的字符数量,可变字符长度所占用的字符数量为第一固定字符数量;根据可变字符长度和第一固定字符数量,利用字符串拆分规则将字符串数据集中的第一字符串内容进行拆分,并将得到的多个第一字符串内容进行整合,得到多个目标字符串和对应的地址信息。
示例性地,参照图4A和4B,字符串数据的数据类型为可变长度字符串,例如,字符串数据为“abcdefghigk[0,0,0,11]”,则字符串数据包含可变字符长度“[0,0,0,11]”和第一字符串内容“abcdefghigk”,其中,可变字符长度“[0,0,0,11]”是指第一字符串内容“abcdefghigk”包含的字符数量为“11”,可变字符长度“[0,0,0,11]”所占用的字符数量为第一固定字符数量,此处,第一固定字符数量为4字节;字符串拆分规则中可以包括可变长度字符串对应的字符串数据拆分方式,例如,可变长度字符串对应的字符串数据拆分方式可以是根据将可变字符长度和第一固定字符数量将字符串数据中的第一字符串内容“abcdefghigk”和可变字符长度“[0,0,0,11]”拆分,并将得到的多个第一字符串内容进行整合,得到多个目标字符串和对应的地址信息。
本实现方式中,由于字符串数据的数据类型为可变长度字符串,每个字符串数据中第一字符串内容的字符长度不固定,则无法确定每个第一字符串内容在字符串数据集中的位置,若要直接对第一字符串内容进行排序,则获取每个第一字符串内容时,均需要遍历整个字符串数据集查找,效率低。通过本实现方法,将每个字符串数据中的第一字符串内容拆分并整合,得到多个目标字符串和对应的地址信息,从而可以直接根据地址信息查找目标字符串进行排序,从而可以提高字符串排序的处理效率。
在一种可选实现方式中,第二数据类型为第一固定长度字符串,根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息,包括:当字符串数据对应的数据类型为第一固定长度字符串,则确定字符串数据包括固定字符长度和第二字符串内容,其中,固定字符长度用于指示第二字符串内容包含的字符数量,固定字符长度所占用的字符数量为第二固定字符数量;根据固定字符长度和第二固定字符数量,从字符串数据集中获取多个目标字符串和对应的地址信息。
示例性地,参照图4C,字符串数据的数据类型为第一固定长度字符串,例如,字符串数据为“ghigk[0,0,0,5]”,则确定字符串数据包括固定字符长度“[0,0,0,5]”和第二字符串内容“ghigk”,其中,固定字符长度“[0,0,0,5]”用于指示第二字符串内容“ghigk”包含的字符数量为“5”,固定字符长度“[0,0,0,5]”所占用的字符数量为第二固定字符数量为4字节。根据固定字符长度和第二固定字符数量,可以确定每个字符串数据的字符长度=固定字符长度+第二固定字符数量,且每个字符串数据的字符长度相同,则可以根据字符串数据集中每个字符串数据的排列顺序和字符长度,获取多个目标字符串和对应的地址信息。例如,字符串数据集中第2个字符串数据中的第二字符串内容的起始地址信息为排序序号1*(固定字符长度5+第二固定字符数量4)=第9号字符,此处字符串数据的排序序号和字符的排序序号均从0开始。
本实现方式中,当第二数据类型为第一固定长度字符串时,字符串数据的字符长度固定,因此,可以根据字符串数据中的固定字符长度和第二固定字符数量,直接从字符串数据集中获取多个目标字符串和对应的地址信息,无需对字符串数据进行拆分,提高了目标字符串的获取效率。
在一种可选实现方式中,排序参数还包括目标字符长度,第二数据类型为第二固定长度字符串,根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息,包括:当第二数据类型为第二固定长度字符串,则确定字符串数据包括第三字符串内容;根据目标字符长度,从字符串数据集中获取多个目标字符串和对应的地址信息。
示例性地,参照4D,字符串数据的数据类型为第二固定长度字符串,则确定字符串数据包括第三字符串内容,而第三字符串内容中包含的字符数量可由排序参数中的目标字符长度得到,可以确定每个字符串数据的字符长度=目标字符长度,且每个字符串数据的目标字符长度相同,则可以根据每个字符串数据的排列顺序和目标字符长度,获取多个目标字符串和对应的地址信息。例如,字符串数据集中第2个字符串数据中的第三字符串内容的起始地址信息为排序序号1*目标字符长度(假设为5)=第5号字符,此处字符串数据的排序序号和字符的排序序号均从0开始。
本实现方式中,当第二数据类型为第二固定长度字符串时,字符串数据中只包括第三字符串内容,且第三字符串内容的字符长度固定,可由排序参数中的目标字符长度得到,因此,可以根据目标字符长度,直接从字符串数据集中获取多个目标字符串和对应的地址信息,无需对字符串数据进行拆分处理,提高了目标字符串的获取效率。
S310、通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。
需要说明的是,步骤S310可参照上述步骤S206的具体实施方式进行实施,在此不进行赘述。
本实施例中,根据不同的字符串数据的数据类型,若字符串数据对应的数据类型为第一数据类型,则确定对字符串数据集进行拆分,若字符串数据对应的数据类型为第二数据类型,则确定不对字符串数据集进行拆分。从而可以对数据结构复杂的字符串数据进行拆分,对数据结构简单的字符串数据不进行拆分,相对于单一的处理方式,本实现方式针对不同的字符串数据采用不同的处理方式,可以有效的提高字符串排序的处理效率。
参照图5,示出了根据本申请示例性实施例的一种字符串排序装置的结构框图。
本实施例的字符串排序装置用于与主计算设备连接的加速卡,其中,加速卡中包括存储区和加速核,字符串排序装置包括数据接收模块502、数据预处理模块504和数据排序模块506。
其中,数据接收模块502用于接收主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入存储区,其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型;数据预处理模块504用于通过加速核从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分;若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息;数据排序模块506用于通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。
在一种可选实现方式中,数据预处理模块504还用于:若字符串数据对应的数据类型为第一数据类型,则确定对字符串数据集进行拆分,第一数据类型用于指示字符串数据的字符长度不固定,且字符串数据包含字符串内容和对应的字符长度信息;若字符串数据对应的数据类型为第二数据类型,则确定不对字符串数据集进行拆分,第二数据类型用于指示字符串数据的字符长度固定。
在一种可选实现方式中,第一数据类型为可变长度字符串,数据预处理模块504还用于:当第一数据类型为可变长度字符串,则确定字符串数据包含可变字符长度和第一字符串内容,其中,可变字符长度用于指示第一字符串内容包含的字符数量,可变字符长度所占用的字符数量为第一固定字符数量;根据可变字符长度和第一固定字符数量,利用字符串拆分规则将字符串数据集中的第一字符串内容进行拆分,并将得到的多个第一字符串内容进行整合,得到多个目标字符串和对应的地址信息。
在一种可选实现方式中,第二数据类型为第一固定长度字符串,数据预处理模块504还用于:当字符串数据对应的数据类型为第一固定长度字符串,则确定字符串数据包括固定字符长度和第二字符串内容,其中,固定字符长度用于指示第二字符串内容包含的字符数量,固定字符长度所占用的字符数量为第二固定字符数量;根据固定字符长度和第二固定字符数量,从字符串数据集中获取多个目标字符串和对应的地址信息。
在一种可选实现方式中,排序参数还包括目标字符长度,第二数据类型为第二固定长度字符串,数据预处理模块504还用于:当第二数据类型为第二固定长度字符串,则确定字符串数据包括第三字符串内容;根据目标字符长度,从字符串数据集中获取多个目标字符串和对应的地址信息。
在一种可选实现方式中,存储区包括第一存储区和第二缓存区,第一存储区用于存储字符串数据集、多个目标排序数据、排序参数以及排序结果,数据预处理模块504还用于:将多个目标字符串和对应的地址信息缓存至第二缓存区;数据排序模块506还用于:通过加速核从第一存储区读取目标排序数据,并根据多个目标排序数据和地址信息,从第二缓存区依次读取多个目标字符串进行排序,得到排序结果。
在一种可选实现方式中,数据排序模块506还用于:将排序结果写入第一存储区,并统计排序结果对应的总字符长度;返回处理完成信息至主计算设备,以使主计算设备从第一存储区读取排序结果和总字符长度。
本实施例的字符串排序装置用于实现前述多个方法实施例中相应的字符串排序方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的字符串排序装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
本申请实施例还提供了一种加速卡,加速卡包括存储区和加速核。
其中,存储区用于:存储从主计算设备接收的字符串数据集、多个目标排序数据和排序参数,以及存储排序结果,其中,字符串数据集包含多个字符串数据,排序参数包括字符串数据对应的数据类型;
加速核用于:从存储区读取字符串数据集和排序参数,根据字符串数据对应的数据类型和预设的字符串处理规则,确定是否对字符串数据集进行拆分;若对字符串数据集进行拆分,则基于字符串数据对应的数据类型和预设的字符串拆分规则对字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对字符串数据集进行拆分,则根据字符串数据对应的数据类型,从字符串数据集中获取多个目标字符串和对应的地址信息;通过加速核从存储区读取目标排序数据,根据多个目标排序数据和地址信息,对多个目标字符串进行排序,得到排序结果,并将排序结果写入存储区,以使主计算设备从存储区读取排序结果。
本申请实施例还提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述多个方法实施例中任一实施例所描述的字符串排序方法。
本申请实施例还提供了一种计算机程序产品,包括计算机指令,该计算机指令指示计算设备执行上述多个方法实施例中任一实施例所描述的字符串排序方法对应的操作。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的方法。此外,当通用计算机访问用于实现在此示出的方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。

Claims (10)

1.一种字符串排序方法,其特征在于,用于与主计算设备连接的加速卡,所述加速卡中包括存储区和加速核,所述字符串排序方法包括:
接收所述主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入所述存储区,其中,所述字符串数据集包含多个字符串数据,所述排序参数包括所述字符串数据对应的数据类型;
通过所述加速核从所述存储区读取所述字符串数据集和所述排序参数,根据所述字符串数据对应的数据类型和预设的字符串处理规则,确定是否对所述字符串数据集进行拆分;若对所述字符串数据集进行拆分,则基于所述字符串数据对应的数据类型和预设的字符串拆分规则对所述字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对所述字符串数据集进行拆分,则根据所述字符串数据对应的数据类型,从所述字符串数据集中获取多个所述目标字符串和对应的所述地址信息;
通过所述加速核从所述存储区读取所述目标排序数据,根据所述多个目标排序数据和所述地址信息,对所述多个所述目标字符串进行排序,得到排序结果,并将所述排序结果写入所述存储区,以使所述主计算设备从所述存储区读取所述排序结果。
2.根据权利要求1所述的字符串排序方法,其特征在于,所述根据所述字符串数据对应的数据类型和预设的字符串处理规则,确定是否对所述字符串数据集进行拆分,包括:
若所述字符串数据对应的数据类型为第一数据类型,则确定对所述字符串数据集进行拆分,所述第一数据类型用于指示所述字符串数据的字符长度不固定,且所述字符串数据包含字符串内容和对应的字符长度信息;
若所述字符串数据对应的数据类型为第二数据类型,则确定不对所述字符串数据集进行拆分,所述第二数据类型用于指示所述字符串数据的字符长度固定。
3.根据权利要求2所述的字符串排序方法,其特征在于,所述第一数据类型为可变长度字符串,所述基于所述字符串数据对应的数据类型和预设的字符串拆分规则对所述字符串数据集进行拆分,得到多个目标字符串和对应的地址信息,包括:
当所述第一数据类型为可变长度字符串,则确定所述字符串数据包含可变字符长度和第一字符串内容,其中,可变字符长度用于指示所述第一字符串内容包含的字符数量,所述可变字符长度所占用的字符数量为第一固定字符数量;
根据所述可变字符长度和所述第一固定字符数量,利用所述字符串拆分规则将所述字符串数据集中的所述第一字符串内容进行拆分,并将得到的多个所述第一字符串内容进行整合,得到多个目标字符串和对应的地址信息。
4.根据权利要求2所述的字符串排序方法,其特征在于,所述第二数据类型为第一固定长度字符串,所述根据所述字符串数据对应的数据类型,从所述字符串数据集中获取多个所述目标字符串和对应的所述地址信息,包括:
当所述字符串数据对应的数据类型为第一固定长度字符串,则确定所述字符串数据包括固定字符长度和第二字符串内容,其中,固定字符长度用于指示所述第二字符串内容包含的字符数量,所述固定字符长度所占用的字符数量为第二固定字符数量;
根据所述固定字符长度和所述第二固定字符数量,从所述字符串数据集中获取多个所述目标字符串和对应的所述地址信息。
5.根据权利要求2所述的字符串排序方法,其特征在于,所述排序参数还包括目标字符长度,所述第二数据类型为第二固定长度字符串,所述根据所述字符串数据对应的数据类型,从所述字符串数据集中获取多个所述目标字符串和对应的所述地址信息,包括:
当所述第二数据类型为第二固定长度字符串,则确定所述字符串数据包括第三字符串内容;
根据所述目标字符长度,从所述字符串数据集中获取多个所述目标字符串和对应的所述地址信息。
6.根据权利要求1所述的字符串排序方法,其特征在于,所述存储区包括第一存储区和第二缓存区,所述第一存储区用于存储所述字符串数据集、多个所述目标排序数据、所述排序参数以及所述排序结果,所述方法还包括:
将多个所述目标字符串和对应的所述地址信息缓存至所述第二缓存区;
其中,所述通过所述加速核从所述存储区读取所述目标排序数据,根据所述多个目标排序数据和所述地址信息,对所述多个所述目标字符串进行排序,得到排序结果,包括:
通过所述加速核从所述第一存储区读取所述目标排序数据,并根据所述多个目标排序数据和所述地址信息,从所述第二缓存区依次读取多个所述目标字符串进行排序,得到排序结果。
7.根据权利要求6所述的字符串排序方法,其特征在于,所述方法还包括:
将所述排序结果写入所述第一存储区,并统计所述排序结果对应的总字符长度;
返回处理完成信息至所述主计算设备,以使所述主计算设备从所述第一存储区读取所述排序结果和所述总字符长度。
8.一种字符串排序装置,其特征在于,用于与主计算设备连接的加速卡,所述加速卡中包括存储区和加速核,所述字符串排序装置包括:
数据接收模块,用于接收所述主计算设备发送的字符串数据集、多个目标排序数据和排序参数,并存入所述存储区,其中,所述字符串数据集包含多个字符串数据,所述排序参数包括所述字符串数据对应的数据类型;
数据预处理模块,用于通过所述加速核从所述存储区读取所述字符串数据集和所述排序参数,根据所述字符串数据对应的数据类型和预设的字符串处理规则,确定是否对所述字符串数据集进行拆分;若对所述字符串数据集进行拆分,则基于所述字符串数据对应的数据类型和预设的字符串拆分规则对所述字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对所述字符串数据集进行拆分,则根据所述字符串数据对应的数据类型,从所述字符串数据集中获取多个所述目标字符串和对应的所述地址信息;
数据排序模块,用于通过所述加速核从所述存储区读取所述目标排序数据,根据所述多个目标排序数据和所述地址信息,对所述多个所述目标字符串进行排序,得到排序结果,并将所述排序结果写入所述存储区,以使所述主计算设备从所述存储区读取所述排序结果。
9.一种加速卡,其特征在于,包括:
存储区,用于存储从所述主计算设备接收的字符串数据集、多个目标排序数据和排序参数,以及存储排序结果,其中,所述字符串数据集包含多个字符串数据,所述排序参数包括所述字符串数据对应的数据类型;
加速核,用于从所述存储区读取所述字符串数据集和所述排序参数,根据所述字符串数据对应的数据类型和预设的字符串处理规则,确定是否对所述字符串数据集进行拆分;若对所述字符串数据集进行拆分,则基于所述字符串数据对应的数据类型和预设的字符串拆分规则对所述字符串数据集进行拆分,得到多个目标字符串和对应的地址信息;若不对所述字符串数据集进行拆分,则根据所述字符串数据对应的数据类型,从所述字符串数据集中获取多个所述目标字符串和对应的所述地址信息;从所述存储区读取所述目标排序数据,根据所述多个目标排序数据和所述地址信息,对所述多个所述目标字符串进行排序,得到排序结果,并将所述排序结果写入所述存储区,以使所述主计算设备从所述存储区读取所述排序结果。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202311601254.4A 2023-11-28 2023-11-28 字符串排序方法、装置、计算机存储介质及加速卡 Pending CN117932121A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311601254.4A CN117932121A (zh) 2023-11-28 2023-11-28 字符串排序方法、装置、计算机存储介质及加速卡

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311601254.4A CN117932121A (zh) 2023-11-28 2023-11-28 字符串排序方法、装置、计算机存储介质及加速卡

Publications (1)

Publication Number Publication Date
CN117932121A true CN117932121A (zh) 2024-04-26

Family

ID=90752516

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311601254.4A Pending CN117932121A (zh) 2023-11-28 2023-11-28 字符串排序方法、装置、计算机存储介质及加速卡

Country Status (1)

Country Link
CN (1) CN117932121A (zh)

Similar Documents

Publication Publication Date Title
CN109802684B (zh) 进行数据压缩的方法和装置
CN110019873B (zh) 人脸数据处理方法、装置及设备
CN109213774B (zh) 数据的存储方法及装置、存储介质、终端
CN112613271A (zh) 数据分页方法、装置、计算机设备及存储介质
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
CN110457255B (zh) 数据归档的方法、服务器及计算机可读存储介质
CN111857574A (zh) 一种写请求数据压缩方法、系统、终端及存储介质
CN116126997B (zh) 一种文献去重存储方法、系统、设备及存储介质
CN112350912A (zh) 一种基于Modbus协议的数据采集方法、系统和装置
CN111913913A (zh) 访问请求的处理方法和装置
CN117932121A (zh) 字符串排序方法、装置、计算机存储介质及加速卡
CN116610262A (zh) 降低ssd顺序读延时的方法、装置、设备及介质
CN113626483B (zh) 一种填写表单的前端缓存方法、系统、设备及存储介质
CN113849125B (zh) 一种cdn服务器磁盘读取的方法、装置及系统
CN115904240A (zh) 数据处理方法、装置、电子设备和存储介质
CN115639966A (zh) 一种数据写入方法、装置、终端设备及存储介质
CN111209254A (zh) 文件指纹获取方法、装置、电子设备以及存储介质
CN113806249B (zh) 一种对象存储有序列举方法、装置、终端及存储介质
CN114138552B (zh) 数据动态重删方法、系统、终端及存储介质
CN111158994A (zh) 一种压测性能测试方法及装置
CN105468603A (zh) 数据选择方法及装置
CN111723266A (zh) 海量数据处理方法和装置
CN117194355B (zh) 基于数据库的数据处理方法、装置和电子设备
CN114661772B (zh) 数据处理方法及相关装置
CN117632015A (zh) 数据分区方法、装置、计算机存储介质及加速卡

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination