数据处理方法、数据处理装置、电子设备和可读存储介质与流程
未命名
07-23
阅读:98
评论:0

1.本技术属于数据处理技术领域,具体涉及一种数据处理方法、数据处理装置、电子设备和可读存储介质。
背景技术:
2.目前,计算机系统中广泛使用b树、红黑树、trie树等索引数据结构进行数据索引,例如根据用户名查询密码、验证是否本人登陆等。相关技术中,利用索引数据结构进行数据索引时,随着需要索引的数据的增长,消耗的内存也大幅上升,从而导致需要使用的空间不确定,以及内存使用效率较低、数据索引效率较低的问题。
技术实现要素:
3.本技术实施例的目的是提供一种数据处理方法、数据处理装置、电子设备和可读存储介质,旨在至少解决现有技术存在的需要使用的空间不确定,以及内存使用效率较低、数据索引效率较低的问题。
4.第一方面,本技术实施例提供了一种数据处理方法,该数据处理方法包括:
5.按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组,目标数组的一个元素对应字典树结构的一个节点,字典树结构的节点仅用于存储数据字符串的分歧点,且节点的节点指针用于指示节点的分支方向;
6.接收对目标数据字符串的查询请求,该查询请求中携带有目标数据字符串的字符串标识;
7.根据目标数组的元素对应的分歧点和节点指针,对目标数据字符串进行索引处理。
8.第二方面,本技术实施例提供了一种数据处理装置,该数据处理装置包括:
9.转换模块,用于按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组,目标数组的一个元素对应字典树结构的一个节点,字典树结构的节点仅用于存储数据字符串的分歧点,且节点的节点指针用于指示节点的分支方向;
10.接收模块,用于接收对目标数据字符串的查询请求,该查询请求中携带有目标数据字符串的字符串标识;
11.索引模块,用于根据目标数组的元素对应的分歧点和节点指针,对目标数据字符串进行索引处理。
12.第三方面,本技术实施例提供了一种电子设备,该电子设备包括处理器和存储器,存储器存储可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
13.第四方面,本技术实施例提供了一种可读存储介质,可读存储介质上存储程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
14.第五方面,本技术实施例提供了一种芯片,芯片包括处理器和通信接口,通信接口
和处理器耦合,处理器用于运行程序或指令,实现如第一方面的方法。
15.第六方面,本技术实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面的方法。
16.在本技术实施例中,字典树结构(也即,trie树结构)的节点存储有数据字符串的分歧点。具体地,字典树结构的节点存储有第i+1个数据字符串与第i个数据字符串的分歧点,分歧点为第i+1个数据字符串与第i个数据字符串数值不同的位,i为正整数,进而在trie树结构的节点上存储该分歧点。进一步地,根据中序遍历方式,也即首先访问左子树,然后访问根结点,最后访问右子树的遍历方式,将字典树结构的存储空间压缩为目标数组。进一步地,在接收到对目标数据字符串的索引请求后,根据这个压缩的目标数组的元素对应的分歧点和节点指针,对目标数组进行数组划分,以实现对待进行查询的目标数据字符串的查询。其中,该索引请求携带有目标数据字符串的字符串标识,该目标数据字符串为i+1个数据字符串中的一个。本技术实施例,一方面,通过在trie树结构的节点中只存储数据字符串之间的分歧点,而不存储完整的字符串,使得每插入一条记录对应恒定增加一个定长节点,使需要消耗的空间确定;另一方面,使用中序遍历的方式压缩trie树节点,减小占用的存储空间,从而提升内存使用率;再一方面,根据分歧点和分支方向进行目标数组的划分,实现对目标数据字符串的查询,能够大幅度地降低了索引的空间消耗,提高了数据访问效率。
附图说明
17.图1是本技术实施例的数据处理方法的流程示意图;
18.图2是本技术实施例的trie树结构的示意图之一;
19.图3是本技术实施例的trie树结构的示意图之二;
20.图4是本技术实施例的trie树结构的示意图之三;
21.图5是相关技术中的trie树结构的示意图之一;
22.图6是本技术实施例的trie树结构的示意图之四;
23.图7是本技术实施例的trie树结构的示意图之五;
24.图8是本技术实施例的trie树结构的示意图之六;
25.图9是本技术实施例的trie树结构的示意图之七;
26.图10是本技术实施例的目标数组的裁剪示意图之一;
27.图11是本技术实施例的目标数组的裁剪示意图之二;
28.图12是本技术实施例的目标数组的裁剪示意图之三;
29.图13是本技术实施例的trie树结构的示意图之八;
30.图14是本技术实施例的trie树结构的示意图之九;
31.图15是本技术实施例的trie树结构的示意图之十;
32.图16是本技术实施例的trie树结构的示意图之十一;
33.图17是本技术实施例的trie树结构的示意图之十二;
34.图18是相关技术中的trie树结构的示意图之二;
35.图19是本技术实施例的数据处理装置的示意框图;
36.图20是本技术实施例的电子设备的示意框图。
具体实施方式
37.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本技术保护的范围。
38.本技术的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
39.下面结合附图,通过具体的实施例及其应用场景对本技术实施例提供的数据处理方法、数据处理装置、电子设备和可读存储介质进行详细地说明。
40.本技术实施例提供一种数据处理方法,如图1所示,该方法包括:
41.步骤102,按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组,目标数组的一个元素对应字典树结构的一个节点,字典树结构的节点仅用于存储数据字符串的分歧点,且节点的节点指针用于指示节点的分支方向;
42.步骤104,接收对目标数据字符串的查询请求,该查询请求中携带有目标数据字符串的字符串标识;
43.步骤106,根据目标数组的元素对应的分歧点和节点指针,对目标数据字符串进行索引处理。
44.在该实施例中,字典树结构(也即,trie树结构)的节点存储有数据字符串的分歧点。具体地,字典树结构的节点存储有第i+1个数据字符串与第i个数据字符串的分歧点,分歧点为第i+1个数据字符串与第i个数据字符串数值不同的位,i为正整数,进而在trie树结构的节点上存储该分歧点。
45.进一步地,根据中序遍历方式,也即首先访问左子树,然后访问根结点,最后访问右子树的遍历方式,将字典树结构的存储空间压缩为目标数组。
46.示例性地,对于如图2所示的11个节点的trie树结构,如果按照相关技术中使用指针表示,则如图3所示,每个trie树结构内部节点用1个uint64_t(占用8字节)和2个指针(在64位cpu下一个指针占用8字节)表示,叶节点用uint64_t表示,trie树结构一共消耗168字节,较大地浪费了存储空间。本技术实施例中,通过如图4所示的中序遍历顺位,将图2所示的trie树结构压缩为一个目标数组2,1,2,0,4,3,4,2,3,1,2,目标数组一共消耗11个uint16,共计22个字节。
47.进一步地,在接收到对目标数据字符串的索引请求后,根据这个压缩的目标数组的元素对应的分歧点和节点指针,对目标数组进行数组划分,以实现对待进行查询的目标数据字符串的查询。其中,该索引请求携带有目标数据字符串的字符串标识,该目标数据字符串为i+1个数据字符串中的一个。
48.本技术实施例,一方面,通过在trie树结构的节点中只存储数据字符串之间的分歧点,而不存储完整的字符串,使得每插入一条记录对应恒定增加一个定长节点,使需要消耗的空间确定;另一方面,使用中序遍历的方式压缩trie树节点,减小占用的存储空间,从
而提升内存使用率;再一方面,根据分歧点和分支方向进行目标数组的划分,实现对目标数据字符串的查询,能够大幅度地降低了索引的空间消耗,提高了数据访问效率。
49.进一步地,在本技术的一个实施例中,在按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组之前,还包括:获取第i+1个数据字符串;在字典树结构的第i个节点,存储第i+1个数据字符串与第i个数据字符串的分歧点;将第i个节点的第一节点指针的指针地址记录为第一数值,并将第一节点指针指向第i个节点的第一分支方向,以及,将第i个节点的第二节点指针的指针地址记录为第二数值,并将第二节点指针指向第i个节点的第二分支方向;其中,第一数值为第i+1个数据字符串在分歧点上的数值以及第i个数据字符串在分歧点上的数值中的一个,第二数值为另一个。
50.在该实施例中,在利用字典树结构存储数据字符串时,将当前数据字符串(也即第i+1个数据字符串)与其前一个数据字符串(也即第i个数据字符串)进行比较,得到二者的分歧点,分歧点即为二者数值不同的位,进而在trie树结构的节点上存储该分歧点。
51.相关技术中,如图5所示,为索引ab、ac以及adefghijklmn的trie树结构,节点defghijklmn的空间占用大于节点b和节点c,因为字符串defghijklmn长度大于b、c。显然,内存占用与添加记录的key长度正相关,而key长度是不固定的,存在有超长key的可能性。
52.例如,本技术实施例对于key长度不超过8192字节的记录,每添加一条,索引空间开销恒定为约16字节。
53.在第i个节点存储了分歧点之后,设置第i个节点的第一节点指针和第二节点指针。具体地,将第一节点指针的指针地址记录为第一数值,并将第一节点指针指向第i个节点的第一分支方向,以及,将第二节点指针的指针地址记录为第二数值,并将第二节点指针指向第i个节点的第二分支方向。
54.示例性地,图6至图9分别是插入数字9、1、5、7的过程。实线内容为索引,lp(leftpointer)是当前节点的左指针(也即第一节点指针),指向当前节点的左节点,rp(rightpointer)是当前节点的右指针(也即第二节点指针),指向当前节点的右节点。需要说明的是,虚线内容是索引的记录,不属于索引。
55.以二进制字符串为例,如图6所示,9的二进制表达是1001,此时索引为空,所以根指针(root pointer)直接指向9即可。
56.如图7所示,1的二进制表达是0001,和9(1001)的分歧点在第0个bit上,所以索引中只需要新增一个节点并记录分歧点为第0个bit。1(0001)的第0个bit为0,所以新增节点的lp指向1(0001),9(1001)第0个bit为1,所以新增节点的rp指向9(1001)。
57.如图8所示,5的二进制表达是0101,第0个bit为0,所以会和1(0001)比较,得出分歧点在第1个bit上,同样新增一个节点并记录分歧点为1。1(0001)的第1个bit为0,所以新增节点的lp指向1,5(0101)的第1个bit为1,所以新增节点的rp指向5。
58.如图9所示,7的二进制表达是0111,第0个bit为0,所以会沿着lp到达下一个节点。这个节点记录分歧点为1,7(0101)的第1个bit为1,沿着rp到达5(0101)。7(0111)和5(0101)的分歧点在第2个bit上,同样新建一个节点,其lp指向5,rp指向7。
59.相比于相关技术,本技术实施例在trie树结构的节点中只存储数据字符串之间的分歧点,而不存储完整的字符串,并且通过设置节点指针对下一个数据字符串进行指示,使得每插入一条记录,恒定增加一个定长节点,需要消耗的空间确定,能够向用户承诺索引数
据需要消耗的内存,避免用户过多预留内存所带来的资源浪费的问题。
60.进一步地,在本技术的一个实施例中,根据目标数组的元素对应的分歧点和节点指针,对目标数据字符串进行索引处理,包括:根据目标数据字符串在目标数组的第一分歧点上的数值、指针地址为数值的第一目标指针的指示方向,对目标数组进行数组划分,得到子数组,其中,第一分歧点为目标数组中的最小元素,第一目标指针为第一分歧点对应的第一节点指针或第二节点指针;根据目标数据字符串在子数组的第二分歧点上的数值、指针地址为数值的第二目标指针的指示方向,对子数组进行数组划分,直至得到的子数组的元素数量为1,其中,第二分歧点为子数组中的最小元素,第二目标指针为第二分歧点对应的第一节点指针或第二节点指针。
61.在该实施例中,由于分歧点下层一定比上层大的设定,可以使用区间最小值查询(rangeminquery)的方法,在这个压缩的目标数组上对目标数据字符串进行索引操作。具体地,在接收到对目标数据字符串的索引请求(该索引请求携带有目标数据字符串的字符串标识)后,以目标数组的最小元素为分隔点,并根据该最小元素对应的指针的指示方向将目标数组进行数组划分,重复该步骤,直至划分得到的子数组的元素数量为1,以完成对目标数据字符串的查询,其中,指针的指示方向根据目标数据字符串中与该最小元素对应的位的数值所确定。
62.另外,可以将第一目标指针、第二目标指针作为该目标数据字符串的索引信息。
63.以查询12(01100)为例,如图10所示,先在目标数组[2,1,2,0,4,3,4,2,3,1,2]中找最小元素0(也即,第一分歧点),说明根节点的分歧点在第0个bit上,12(01100)的第0个bit为0,则第一分歧点的第一目标指针为向左指向。也即,如图11所示,将目标数组裁剪为子数组[2,1,2],继续找最小元素,得到1(也即,第二分歧点),说明下层分歧点在第1个bit上,12(01100)的第1个bit为1,则第二分歧点的第二目标指针为向右指向。也即,如图12所示,数组裁剪为2,只有一个分歧点,不需要进一步裁减,12(01100)的第2个bit为1,第二分歧点的第二目标指针为向右指向。综上,找到了最终指向记录的指针,索引查询操作结束。
[0064]
需要说明的是,区间最小值查询使用intelsse向量化指令集(也即节点指针)来加速,能够提高查询效率。
[0065]
本技术实施例中,基于压缩的trie树节点,采用最小值查询方法进行索引操作,在不损失范围查询能力与性能的前提下,大幅度降低了索引空间,提高了数据访问效率。
[0066]
进一步地,在本技术的一个实施例中,在按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组之前,该方法还包括:将字典树结构,划分为n个子树结构;存储n个子树结构;其中,每个子树结构包括至少一个字典树结构的节点,n为正整数。
[0067]
在该实施例中,将trie树结构进行分块处理,也即,将其划分为n个子树结构,任一子树结构包括至少一个节点。
[0068]
示例性地,如图13所示,trie树结构包括11个节点,为了提升缓存效率,将其分为子树结构702和子树结构704。分块后,trie树结构的高度从5降为了2。分块算法采用kundu算法,具体地,找到还没有被分割的最底层的节点,生成一棵只包含这一个节点的子树,向上尝试合并父节点以及父节点的子树,若子树节点数量总和没有超过子树大小上限,则为继续尝试合并,若子树节点数量总和超过上限,则当前子树就是最佳分割,不再尝试合并。
继续找到还没有被分割的最底层的节点进行分割,直至没有未分割的节点,流程结束。例如,如图14所示,找到节点4,向上合并父节点以及父节点的子树,如图15所示,当子树节点数量总和超过上限阈值4的情况下,当前子树就是一个最佳分割,虚线表示这个子树和其余节点逻辑上“断开”,不再参与后续分割。继续分割,如图16所示,在剩余的节点中找到节点2,向上合并父节点以及父节点的子树,如图17所示,当子树节点数量总和超过上限阈值5的情况下,当前子树就是另一个最佳分割。至此没有未分割的节点,分割结束。
[0069]
相关技术中,如果trie树结构的扇出都很小,那么单条查询路径就会很长,这会带来严重的缓存缺失。如图18所示,每个节点的扇出均为2,到达节点d只要2个节点,但要到达节点i会经历4个节点,过多的节点会带来严重的缓存失效问题,降低了运行速度。
[0070]
相比于相关技术,本技术实施例中trie树结构不是存储连续的一段字符串,而是采用分块技术,能够降低过多的节点所带来的缓存失效问题,从而提高系统运行速度。
[0071]
本技术实施例提供的数据处理方法,执行主体可以为数据处理装置。本技术实施例中以数据处理装置执行数据处理方法为例,说明本技术实施例提供的数据处理装置。
[0072]
本技术实施例提供一种数据处理装置,如图19所示,该数据处理装置1900包括:
[0073]
转换模块1902,用于按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组,目标数组的一个元素对应字典树结构的一个节点,字典树结构的节点仅用于存储数据字符串的分歧点,且节点的节点指针用于指示节点的分支方向;
[0074]
接收模块1904,用于接收对目标数据字符串的查询请求,该查询请求中携带有目标数据字符串的字符串标识;
[0075]
索引模块1906,用于根据目标数组的元素对应的分歧点和节点指针,对目标数据字符串进行索引处理。
[0076]
在该实施例中,字典树结构(也即,trie树结构)的节点存储有数据字符串的分歧点。具体地,字典树结构的节点存储有第i+1个数据字符串与第i个数据字符串的分歧点,分歧点为第i+1个数据字符串与第i个数据字符串数值不同的位,i为正整数,进而在trie树结构的节点上存储该分歧点。
[0077]
进一步地,根据中序遍历方式,也即首先访问左子树,然后访问根结点,最后访问右子树的遍历方式,将字典树结构的存储空间压缩为目标数组。进一步地,在接收到对目标数据字符串的索引请求后,根据这个压缩的目标数组的元素对应的分歧点和节点指针,对目标数组进行数组划分,以实现对待进行查询的目标数据字符串的查询。其中,该索引请求携带有目标数据字符串的字符串标识,该目标数据字符串为i+1个数据字符串中的一个。
[0078]
本技术实施例,一方面,通过在trie树结构的节点中只存储数据字符串之间的分歧点,而不存储完整的字符串,使得每插入一条记录对应恒定增加一个定长节点,使需要消耗的空间确定;另一方面,使用中序遍历的方式压缩trie树节点,减小占用的存储空间,从而提升内存使用率;再一方面,根据分歧点和分支方向进行目标数组的划分,实现对目标数据字符串的查询,能够大幅度地降低了索引的空间消耗,提高了数据访问效率。
[0079]
进一步地,在本技术的一个实施例中,该数据处理装置1900还包括:获取模块,用于获取第i+1个数据字符串;第一存储模块,用于在字典树结构的第i个节点,存储第i+1个数据字符串与第i个数据字符串的分歧点;
[0080]
记录模块,用于将第i个节点的第一节点指针的指针地址记录为第一数值,并将第
一节点指针指向第i个节点的第一分支方向,以及,将第i个节点的第二节点指针的指针地址记录为第二数值,并将第二节点指针指向第i个节点的第二分支方向;其中,第一数值为第i+1个数据字符串在分歧点上的数值以及第i个数据字符串在分歧点上的数值中的一个,第二数值为另一个。
[0081]
进一步地,在本技术的一个实施例中,索引模块,具体用于:根据目标数据字符串在目标数组的第一分歧点上的数值、指针地址为数值的第一目标指针的指示方向,对目标数组进行数组划分,得到子数组,其中,第一分歧点为目标数组中的最小元素,第一目标指针为第一分歧点对应的第一节点指针或第二节点指针;根据目标数据字符串在子数组的第二分歧点上的数值、指针地址为数值的第二目标指针的指示方向,对子数组进行数组划分,直至得到的子数组的元素数量为1,其中,第二分歧点为子数组中的最小元素,第二目标指针为第二分歧点对应的第一节点指针或第二节点指针。
[0082]
进一步地,在本技术的一个实施例中,该数据处理装置1900还包括:划分模块,用于将字典树结构,划分为n个子树结构;第二存储模块,用于存储n个子树结构;其中,每个子树结构包括至少一个字典树结构的节点,n为正整数。
[0083]
本技术实施例中的数据处理装置1900可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(mobile internet device,mid)、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本或者个人数字助理(personal digital assistant,pda)等,还可以为服务器、网络附属存储器(network attached storage,nas)、个人计算机(personal computer,pc)、电视机(television,tv)、柜员机或者自助机等,本技术实施例不作具体限定。
[0084]
本技术实施例中的数据处理装置1900可以为具有操作系统的装置。该操作系统可以为安卓(android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本技术实施例不作具体限定。
[0085]
本技术实施例提供的数据处理装置1900能够实现图1的数据处理方法实施例实现的各个过程,为避免重复,这里不再赘述。
[0086]
可选地,如图20所示,本技术实施例还提供一种电子设备2000,包括处理器2002和存储器2004,存储器2004上存储有可在处理器2002上运行的程序或指令,该程序或指令被处理器2002执行时实现上述数据处理方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0087]
需要说明的是,本技术实施例中的电子设备包括上述的移动电子设备和非移动电子设备。
[0088]
本技术实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0089]
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器rom、随机存取存储器ram、磁碟或者光
盘等。
[0090]
本技术实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述数据处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0091]
应理解,本技术实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
[0092]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本技术实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
[0093]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
[0094]
上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
技术特征:
1.一种数据处理方法,其特征在于,包括:按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组,所述目标数组的一个元素对应所述字典树结构的一个节点,所述字典树结构的节点仅用于存储数据字符串的分歧点,且所述节点的节点指针用于指示所述节点的分支方向;接收对目标数据字符串的查询请求,所述查询请求中携带有所述目标数据字符串的字符串标识;根据所述目标数组的元素对应的分歧点和节点指针,对所述目标数据字符串进行索引处理。2.根据权利要求1所述的数据处理方法,其特征在于,在所述按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组之前,还包括:获取第i+1个数据字符串;在所述字典树结构的第i个节点,存储所述第i+1个数据字符串与第i个数据字符串的分歧点;将所述第i个节点的第一节点指针的指针地址记录为第一数值,并将所述第一节点指针指向所述第i个节点的第一分支方向,以及,将所述第i个节点的第二节点指针的指针地址记录为第二数值,并将所述第二节点指针指向所述第i个节点的第二分支方向;其中,所述第一数值为所述第i+1个数据字符串在所述分歧点上的数值以及所述第i个数据字符串在所述分歧点上的数值中的一个,所述第二数值为另一个。3.根据权利要求2所述的数据处理方法,其特征在于,所述根据所述目标数组的元素对应的分歧点和节点指针,对所述目标数据字符串进行索引处理,包括:根据所述目标数据字符串在所述目标数组的第一分歧点上的数值、指针地址为所述数值的第一目标指针的指示方向,对所述目标数组进行数组划分,得到子数组,其中,所述第一分歧点为所述目标数组中的最小元素,所述第一目标指针为所述第一分歧点对应的第一节点指针或第二节点指针;根据所述目标数据字符串在所述子数组的第二分歧点上的数值、指针地址为所述数值的第二目标指针的指示方向,对所述子数组进行数组划分,直至得到的子数组的元素数量为1,其中,所述第二分歧点为所述子数组中的最小元素,所述第二目标指针为所述第二分歧点对应的第一节点指针或第二节点指针。4.根据权利要求1至3中任一项所述的数据处理方法,其特征在于,在所述按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组之前,还包括:将所述字典树结构,划分为n个子树结构;存储n个所述子树结构;其中,每个所述子树结构包括至少一个所述字典树结构的节点,n为正整数。5.一种数据处理装置,其特征在于,包括:转换模块,用于按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组,所述目标数组的一个元素对应所述字典树结构的一个节点,所述字典树结构的节点仅用于存储数据字符串的分歧点,且所述节点的节点指针用于指示所述节点的分支方向;接收模块,用于接收对目标数据字符串的查询请求,所述查询请求中携带有所述目标
数据字符串的字符串标识;索引模块,用于根据所述目标数组的元素对应的分歧点和节点指针,对所述目标数据字符串进行索引处理。6.根据权利要求5所述的数据处理装置,其特征在于,还包括:获取模块,用于获取第i+1个数据字符串;第一存储模块,用于在所述字典树结构的第i个节点,存储所述第i+1个数据字符串与第i个数据字符串的分歧点;记录模块,用于将所述第i个节点的第一节点指针的指针地址记录为第一数值,并将所述第一节点指针指向所述第i个节点的第一分支方向,以及,将所述第i个节点的第二节点指针的指针地址记录为第二数值,并将所述第二节点指针指向所述第i个节点的第二分支方向;其中,所述第一数值为所述第i+1个数据字符串在所述分歧点上的数值以及所述第i个数据字符串在所述分歧点上的数值中的一个,所述第二数值为另一个。7.根据权利要求6所述的数据处理装置,其特征在于,所述索引模块,具体用于:根据所述目标数据字符串在所述目标数组的第一分歧点上的数值、指针地址为所述数值的第一目标指针的指示方向,对所述目标数组进行数组划分,得到子数组,其中,所述第一分歧点为所述目标数组中的最小元素,所述第一目标指针为所述第一分歧点对应的第一节点指针或第二节点指针;根据所述目标数据字符串在所述子数组的第二分歧点上的数值、指针地址为所述数值的第二目标指针的指示方向,对所述子数组进行数组划分,直至得到的子数组的元素数量为1,其中,所述第二分歧点为所述子数组中的最小元素,所述第二目标指针为所述第二分歧点对应的第一节点指针或第二节点指针。8.根据权利要求5至7中任一项所述的数据处理装置,其特征在于,还包括:划分模块,用于将所述字典树结构,划分为n个子树结构;第二存储模块,用于存储n个所述子树结构;其中,每个所述子树结构包括至少一个所述字典树结构的节点,n为正整数。9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至4中任一项所述的数据处理方法的步骤。10.一种可读存储介质,其上存储有程序或指令,其特征在于,所述程序或指令被处理器执行时实现如权利要求1至4中任一项所述的数据处理方法的步骤。
技术总结
本申请公开了一种数据处理方法、数据处理装置、电子设备和可读存储介质,其中,该数据处理方法包括:按照左节点、根节点、右节点的遍历顺序对字典树结构的存储空间进行压缩得到目标数组,目标数组的一个元素对应字典树结构的一个节点,字典树结构的节点仅用于存储数据字符串的分歧点,且节点的节点指针用于指示节点的分支方向;接收对目标数据字符串的查询请求,该查询请求中携带有目标数据字符串的字符串标识;根据目标数组的元素对应的分歧点和节点指针,对目标数据字符串进行索引处理。对目标数据字符串进行索引处理。对目标数据字符串进行索引处理。
技术研发人员:林源劲 郭宽宽 黄凯欣
受保护的技术使用者:北京火山引擎科技有限公司
技术研发日:2022.01.10
技术公布日:2023/7/22
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/