CN112464045A - 一种数据处理方法、装置、设备及存储介质 - Google Patents

一种数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112464045A
CN112464045A CN202011435011.4A CN202011435011A CN112464045A CN 112464045 A CN112464045 A CN 112464045A CN 202011435011 A CN202011435011 A CN 202011435011A CN 112464045 A CN112464045 A CN 112464045A
Authority
CN
China
Prior art keywords
node
data
path
current
determining
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.)
Granted
Application number
CN202011435011.4A
Other languages
English (en)
Other versions
CN112464045B (zh
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.)
Zhejiang Nuonuo Network Technology Co ltd
Original Assignee
Zhejiang Nuonuo Network 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 Zhejiang Nuonuo Network Technology Co ltd filed Critical Zhejiang Nuonuo Network Technology Co ltd
Priority to CN202011435011.4A priority Critical patent/CN112464045B/zh
Publication of CN112464045A publication Critical patent/CN112464045A/zh
Application granted granted Critical
Publication of CN112464045B publication Critical patent/CN112464045B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据处理方法、装置、设备及存储介质;本方案在处理数据时,由于每个数据都有懒惰的特性,因此每个数据通过路径存储至对应的节点时,如果途经的节点未存储数据,则就将该数据存储至该节点,提高了数据存储速度。进而,通过该方式对数据执行查找及删除等操作时,同样可直接根据对应的节点及路径进行查找及删除,进一步提高查找及删除的速度,从而提高了数据处理效率。

Description

一种数据处理方法、装置、设备及存储介质
技术领域
本发明涉及数据处理技术领域,更具体地说,涉及一种数据处理方法、装置、设备及存储介质。
背景技术
目前,最主流的用于查找数据的方案很多是基于红黑树或哈希表,这是各个语言基本都会自带的数据结构。但是,上述两种最常用的数据结构也各自有着一定的缺点。例如:红黑树虽然能够把时间复杂度控制在n的对数级之内,但在插入和删除时需要对数进行旋转和染色操作,查找过程中也需要分别和左右子节点进行比较,每一步所需要的时间相对会多一些。而哈希表需要占用更大的空间,并且在数据发生碰撞时,结构会不断发生劣化。
因此,如何节省空间并提高数据处理效率,是本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种数据处理方法、装置、设备及存储介质,以节省空间并提高数据处理效率。
为实现上述目的,本发明提供一种数据处理方法,包括:
接收待存储的第一数据;
利用预先确定的数据结构确定与所述第一数据对应的第一节点;
确定从所述数据结构的根节点至所述第一节点的第一路径;所述第一路径包括路径中各个节点的第一遍历顺序;
按照第一遍历顺序依次遍历第一路径中的每个节点,判断遍历的当前节点是否已创建;若否,则创建当前节点,并将所述第一数据存储至当前节点;若是,则判断当前节点是否为空节点;
若为空节点,则将所述第一数据存储至当前节点;若为非空节点,则判断当前节点是否为所述第一节点;若否,则根据所述第一路径继续遍历下一个节点;若是,则将所述第一数据存储至当前节点。
其中,所述将所述第一数据存储至当前节点,包括:
将当前节点中原存储的第二数据替换为第一数据;
获取与所述第二数据对应的第二节点及第二路径;
以当前节点为开始节点,按照第二路径中的遍历顺序继续遍历下一个节点,并将下一个节点作为当前节点;
判断当前节点是否已创建;若否,则创建当前节点,并将所述第二数据存储至当前节点;若是,则判断当前节点是否为空节点;
若为空节点,则将所述第二数据存储至当前节点;若为非空节点,则判断所述当前节点是否为第二节点;
若否,则按照第二路径中的遍历顺序继续遍历下一个节点;若是,则将所述第二数据作为第一数据,继续执行所述将当前节点中原存储的第二数据替换为第一数据的步骤。
其中,本方案还包括:
确定待删除的第三数据;
利用所述数据结构确定与所述第三数据对应的第三节点;
确定从所述数据结构的根节点至所述第三节点的第三路径;所述第三路径包括路径中各个节点的第三遍历顺序;
按照所述第三遍历顺序依次遍历所述第三路径中的每个节点,并判断遍历的当前节点存储的数据是否为所述第三数据;
若是,则将当前节点内存储的第三数据删除,并设置当前节点为空节点;若否,则根据所述第三路径继续遍历下一个节点。
其中,本方案还包括:
确定待查找的第四数据;
利用所述数据结构确定与所述第四数据对应的第四节点;
确定从所述数据结构的根节点至所述第四节点的第四路径;所述第四路径包括路径中各个节点的第四遍历顺序;
按照所述第四遍历顺序依次遍历所述第四路径中的每个节点,并判断遍历的当前节点存储的数据是否为所述第四数据;
若是,则查找成功;若否,则根据所述第四路径继续遍历下一个节点;其中,若遍历完所述第四路径后未查找到存储所述第四数据的节点,则查找失败。
其中,本方案还包括:
统计所述数据结构中每个非空节点的检索次数,并根据每个非空节点的检索次数确定待调整的第五节点;
判断所述第五节点的上层节点中是否存在空节点;
若存在,则将所述第五节点的数据迁移至上层节点的空节点。
其中,本方案还包括:
确定待调整的第六节点;其中,所述第六节点为空节点;
以所述第六节点为开始节点向叶子节点方向遍历,确定最后一个非空节点,将所述最后一个非空节点的数据迁移至所述第六节点。
其中,所述接收待存储的第一数据之后,还包括:
判断映射表中是否存储了与所述第一数据对应的替换节点及替换路径;
若存在,则将所述替换节点作为第一节点,将所述替换路径作为第一路径,将所述替换路径中的遍历顺序作为第一遍历顺序,继续执行所述按照第一遍历顺序依次遍历第一路径中的每个节点的步骤;
若不存在,则继续执行所述利用预先确定的数据结构确定与所述第一数据对应的第一节点的步骤。
其中,所述接收待存储的第一数据之后,还包括:
判断所述第一数据待存储的数据结构,是否存在对应的映射函数;
若是,则利用所述映射函数确定与所述第一数据对应的第一节点,并继续执行所述确定从所述数据结构的根节点至所述第一节点的第一路径的步骤。
为实现上述目的,本发明进一步提供一种数据处理装置,包括:
接收模块,用于接收待存储的第一数据;
第一确定模块,用于利用预先确定的数据结构确定与所述第一数据对应的第一节点;
第二确定模块,用于确定从所述数据结构的根节点至所述第一节点的第一路径;所述第一路径包括路径中各个节点的第一遍历顺序;
第一遍历模块,用于按照第一遍历顺序依次遍历第一路径中的每个节点;
第一判断模块,用于判断遍历的当前节点是否已创建;若否,则触发创建模块;若是,则触发第二判断模块;
所述创建模块,用于创建当前节点,并将所述第一数据存储至当前节点;
所述第二判断模块,用于判断当前节点是否为空节点;若为空节点,则触发第一存储模块;若为非空节点,则触发第三判断模块;
所述第一存储模块,用于将所述第一数据存储至当前节点;
所述第三判断模块,用于判断当前节点是否为所述第一节点;若否,则触发第一遍历模块根据所述第一路径继续遍历下一个节点;若是,则触发第二存储模块;
所述第二存储模块,用于将所述第一数据存储至当前节点。
为实现上述目的,本发明进一步提供一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述数据处理方法的步骤。
为实现上述目的,本发明进一步提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
通过以上方案可知,本发明实施例提供的一种数据处理方法,包括:接收待存储的第一数据;利用预先确定的数据结构确定与第一数据对应的第一节点;确定从数据结构的根节点至第一节点的第一路径;第一路径包括路径中各个节点的第一遍历顺序;按照第一遍历顺序依次遍历第一路径中的每个节点,判断遍历的当前节点是否已创建;若否,则创建当前节点,并将所述第一数据存储至当前节点;若是,则判断当前节点是否为空节点;若为空节点,则将第一数据存储至当前节点;若为非空节点,则判断当前节点是否为第一节点;若否,则根据第一路径继续遍历下一个节点;若是,则将第一数据存储至当前节点。
可见,本方案在处理数据时,由于每个数据都有懒惰的特性,因此每个数据通过路径存储至对应的节点时,如果途经的节点未存储数据,则就将该数据存储至该节点,提高了数据存储速度。进而,通过该方式对数据执行查找及删除等操作时,同样可直接根据对应的节点及路径进行查找及删除,进一步提高查找及删除的速度,从而提高了数据处理效率;本发明还公开了一种数据处理装置、设备及存储介质,同样可以实现上述技术效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种数据处理方法流程示意图;
图2a为本发明实施例公开的假想树示意图;
图2b为本发明实施例公开的另一假想树示意图;
图2c为本发明实施例公开的另一假想树示意图;
图2d为本发明实施例公开的另一假想树示意图;
图2e为本发明实施例公开的另一假想树示意图;
图2f为本发明实施例公开的另一假想树示意图;
图2g为本发明实施例公开的另一假想树示意图;
图2h为本发明实施例公开的另一假想树示意图;
图3为本发明实施例公开的完整的数据处理方法流程图;
图4a为本发明实施例公开的另一假想树示意图;
图4b为本发明实施例公开的另一假想树示意图;
图4c为本发明实施例公开的另一假想树示意图;
图5为本发明实施例公开的一种数据处理装置结构示意图;
图6为本发明实施例公开的一种电子产品结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种数据处理方法、装置、设备及存储介质,以节省空间并提高数据处理效率。
参见图1,本发明实施例提供的一种数据处理方法流程,包括:
S101、接收待存储的第一数据;
S102、利用预先确定的数据结构确定与第一数据对应的第一节点;
在本实施例中,该数据结构为树形结构,在本实施例中也可将该树形结构称之为假想树;在执行本方案之前,首先需要确定一个假想树,在本实施例中,可选择大顶堆、小顶堆或平衡二叉树等构建假想树,在此以小顶堆为例进行说明,并为小顶堆附加一些额外的属性:小顶堆的下一层节点的所有数都比上一层节点大,并且同一层更右边的结点比左边的结点更大若将所有的数从1开始全部填入这个堆,那么1必然是这个堆的根节点,2必然是根节点的左子节点,3必然是根节点的右子节点,以此类推。
需要说明的是,小顶堆在内存中表现出来,必然是1、2、3、...这样有序的。并且,该小顶堆只存在于概念中,实际上并不需要在内存或磁盘上创建这个堆,也不用连续内存保存堆,而是用树的方法存储堆。
S103、确定从数据结构的根节点至第一节点的第一路径;所述第一路径包括路径中各个节点的第一遍历顺序;
具体来说,用于构建假想树的结构都是符合一定规律的,所以任何一个数要放入这个堆,都可以通过简单的计算,得出这个数字要放在哪个节点,如在上文所述的这个小顶堆中,可通过数值的二进制确定到达最终节点的路径。其中,由于小顶堆是从1开始的,0代表了空的结点,所以需要将数字+1,因此本申请中的第一数据为原数据加1后的数值,当然,如果在存储时不需要对数据执行加1操作,则第一数据即为原数据;例如:若待存储的数字12,由于在本实施例中需要对数值加1,则第一数据会变为13,则与第一数据对应的第一节点为存储13的节点。需要说明的是,本方案中的各数据的值及各节点中存储的数据的值,均为对原数据加1后的数字,后续便不再重复说明。
在确定第一节点13的第一路径时,可先计算节点13的二进制:1101,其中,二进制中的第一个1代表根节点,其他几位代表路径的走向,1表示向右走,0表示向左走,则与第一节点对应的第一路径为:从根节点1开始,先向右走到根节点的右子节点3,然后向左走到3的左子节点6,然后向右走到6的右子节点13,该路径中遍历顺序为:节点1-节点3-节点6-节点13。
S104、按照第一遍历顺序依次遍历第一路径中的每个节点,判断遍历的当前节点是否已创建;若否,则创建当前节点,并将所述第一数据存储至当前节点;若是,则判断当前节点是否为空节点;若为空节点,则将第一数据存储至当前节点;若为非空节点,则判断当前节点是否为第一节点;若否,则根据第一路径继续遍历下一个节点;若是,则将第一数据存储至当前节点。
需要说明的是,在本申请中,为缩短每个数到达属于自己的节点位置所走的步数,为每个数据设定一个“懒惰”的属性,如果在“回家”的过程中,发现了空着的“房屋”,就会在这个空着的节点上停下来。其中,“回家”是指数据从根节点至对应的第一节点的过程,空着的“房屋”即为没有存储数据的节点,包括:没有创建的节点或创建了但未存储数据的空节点。
具体来说,本申请中的假想树的初始状态为没有创建节点的树,参见图2a,为本发明实施例公开的一种假想树示意图,在该图中的虚线表示不存在的、假想的节点,其中的数字代表存储数据时,如果该数据没有“懒惰”属性时,原本应该存储的位置,如:根节点1应该存储数据1、根节点的左子节点2应该存储数据2、根节点的右子节点3应该存储数据3……。参见图2b,为本发明实施例公开的另一种假想树示意图,在进行数据存储时,若数字13第一个进入这个假想树,该数据13对应的节点为存储13的节点13,对应的第一路径为节点1-节点3-节点6-节点13。在遍历该路径时,若当前节点为节点1,该节点1为根节点,若此时没有创建根节点,则创建根节点,并根据数据的懒惰特性,将数据13存储至空着的根节点,存储后的假想树见图2c,图中的深色底实线框表示真实存在的节点,其中的数字代表该节点存储的数据值。
如果再进入一个待存储的数字为8,则与数字8对应的节点为节点8(8的二进制为1000,其中最高位的1代表根节点,后面3个0代表连续3次向左,即对应为节点8),对应的路径为:节点1-节点2-节点4-节点8,根据该路径遍历时,首先遍历节点1,发现节点1已经创建了,且为非空节点,且该节点1并非是节点8,则继续向下遍历,继续遍历节点2,此时节点2未创建,则创建节点2,设为根节点的左子节点,并将数据8存储至节点2,存储后的假想树见图2d。
需要说明的是,若当前节点为非空节点且当前节点为第一节点的情况下,将第一数据存储至当前节点后,还需要将当前节点的原存储的第二数据存储至其他节点。参见图3,为本发明实施例提供的完整的数据处理方法流程图,在该流程图中,在当前节点为非空节点且当前节点为第一节点时,对数据的处理方法进行了具体说明,该方法具体包括如下步骤:
S201、接收待存储的第一数据;
S202、利用预先确定的数据结构确定与第一数据对应的第一节点;
S203、确定从数据结构的根节点至第一节点的第一路径,按照第一遍历顺序依次遍历第一路径中的每个节点;所述第一路径包括路径中各个节点的第一遍历顺序;
S204、判断遍历的当前节点是否已创建;
若否,则执行S205;若是,则执行S206;
S205、创建当前节点,并将第一数据存储至当前节点;
S206、判断当前节点是否为空节点;
若是,则执行S207;若否,则执行S208;
S207、将第一数据存储至当前节点;
S208、判断当前节点是否为第一节点;
若否,则执行S209;若是,则继续执行S210;
S209、根据第一路径继续遍历下一个节点,将下一个节点作为当前节点,执行S204;
S210、将当前节点中原存储的第二数据替换为第一数据;
S211、获取与第二数据对应的第二节点及第二路径;
S212、以当前节点为开始节点,按照第二路径中的遍历顺序继续遍历下一个节点,并将下一个节点作为当前节点;
S213、判断当前节点是否已创建;
若否,则执行S214;若是,则执行S215;
S214、创建当前节点,并将第二数据存储至当前节点;
S215、判断当前节点是否为空节点;
若是,则执行S216;若否,则执行S217
S216、将第二数据存储至当前节点;
S217、判断当前节点是否为第二节点;
若否,则执行S212;若是,则执行218;
218、将第二数据作为第一数据,继续执行S210。
具体来说,上述的第二数据为第一节点中原存储的历史数据,第二节点为利用预先确定的数据结构确定与第二数据对应的节点,第二路径为从数据结构的根节点至第二节点的路径。
参见图2d,如果待存储的数字为2,则与数字2对应的第一节点为节点2,对应的第一路径为:节点1-节点2,根据该路径遍历时,首先遍历节点1,发现节点1已经创建了,且为非空节点,且该节点1并非是节点2,则继续向下遍历,若遍历的当前节点为节点2,发现该节点2已经建立,且已经存储了数据8,并且该节点2即为数据2对应的第一节点,此时需要将数字2存储至节点2,此时的数字8即为图3流程图中的第二数据,对应的第二节点为节点8,对应的第二路径为节点1-节点2-节点4-节点8,从当前的节点2作为开始节点,根据第二路径继续向下遍历,下一个遍历的节点为节点4,此时发现节点4未建立,则建立节点4,设置该节点4为节点2的左子节点,并将数字8存储至节点4,存储后的假想树见图2e。若再存储一组数字,依次为14、6、30,则假想树会变成图2f。
综上可以看出,本方案在处理数据时,由于每个数据都有懒惰的特性,因此每个数据通过路径存储至对应的节点时,如果途经的节点未存储数据,则就将该数据存储至该节点,提高了数据存储速度。
基于上述实施例所述的数据处理方法,在本实施例中,若接收到对第三数据的删除指令,则该数据处理方法,还包括:
确定待删除的第三数据;
利用所述数据结构确定与所述第三数据对应的第三节点;
确定从所述数据结构的根节点至所述第三节点的第三路径;所述第三路径包括路径中各个节点的第三遍历顺序;
按照所述第三遍历顺序依次遍历所述第三路径中的每个节点,并判断遍历的当前节点存储的数据是否为所述第三数据;
若是,则将当前节点内存储的第三数据删除,并设置当前节点为空节点;若否,则根据所述第三路径继续遍历下一个节点。
具体来说,数据删除过程与存储过程类似,就是节点往家的方向走,一路上看看每一个节点是否为待删除的数据,并在找到后删除该节点中的数值,将数值设置为0。例如:参见图2f,若待删除的第三数据为14,则与之对应的节点为节点14,对应的路径为:节点1-节点3-节点7-节点14,在删除时,先遍历节点1,节点1的数值13不等于14,继续遍历节点3,节点3的数值14等于待删除的14,则将节点3的数值置为0,表示该结点未被占用,为空节点,删除后的假想树见图2g。如果此时还需要存储数字31,则按照上述方法存储时,确定节点为:节点31,确定的路径为:节点1-节点3-节点7-节点15-节点31,先遍历节点1,根据上一实施例所述的存储方法,遍历至节点3后,发现该节点为空节点,则将数据31存储至节点3,存储后的假想树见图2h。
进一步,若接收到对第四数据的查找指令,则该数据处理方法,还包括:
确定待查找的第四数据;
利用所述数据结构确定与所述第四数据对应的第四节点;
确定从所述数据结构的根节点至所述第四节点的第四路径;所述第四路径包括路径中各个节点的第四遍历顺序;
按照所述第四遍历顺序依次遍历所述第四路径中的每个节点,并判断遍历的当前节点存储的数据是否为所述第四数据;
若是,则查找成功;若否,则根据所述第四路径继续遍历下一个节点;其中,若遍历完第四路径后未查找到存储第四数据的节点,则查找失败。
具体来说,数据查找过程与存储过程类似,就是节点往家的方向走,一路上看看每一个节点是否和自己一样,如果一直到家了都没有和自己一样的节点,那就说明不存在该值。以图2f为例:若待查找的第四数据为8,则与之对应的第四节点为节点8,对应的第四路径为:节点1-节点2-节点4-节点8,从节点1开始遍历,节点1中存储的数值13与8不相同,继续遍历节点2,节点2中存储的数值2与8不相同,继续遍历节点4,节点4中存储的数值8与待查找的第四数据相同,查找成功。
综上可以看出,本方案通过假想树执行数据的查找、删除等操作时,每一步都只需要进行一次是否相等的比较即可,相比于红黑树的两次大小比较更快。并且,由于本申请中每一个数都是懒惰的,所以会尽可能的停在低层级,因此插入、查找和删除结点所需走的步数,不会超过该值的对数。并且每往下走一层,节点数就会翻一倍,节点数呈指数爆炸的形式增长,那么结点未被占据的概率也会更大,实质是通过概率来让树趋于一种大致上的平衡。
需要说明的是,如果删除过多的数据,又没有重新插入,会导致数功能劣化,因此在本实施例中,通过如下两种方式将存储至下层的节点换至上层节点,当然,如果在删除数据后还要执行存储操作,则可等数据存储完之后,再决定是否执行以下数据调整操作。
调整方式一:
统计所述数据结构中每个非空节点的检索次数,并根据每个非空节点的检索次数确定待调整的第五节点;
判断所述第五节点的上层节点中是否存在空节点;
若存在,则将所述第五节点的数据迁移至上层节点的空节点。
具体来说,在该调整方式中,可以统计每个数据的检索次数,并根据各个数据的检索次数生成热度,如果该节点的上层节点中存在空节点,则将热度较高的数据迁移至空节点内,通过这种将热度较高的数据迁移至上层节点的方式,可以让热度高的数据较快被遍历到,进一步提升检索速度。在本实施例中,可设定检索次数阈值,如果非空节点的检索次数大于该阈值,则判定该节点为热度较高的节点,则进行数据调整;参见图4a,为本实施例提供的另一种假想树示意图,如果存储14的节点14的检索次数较高,此时需要判断节点14的上层节点中是否存在空节点,该上层节点是以待调整的第五节点至根节点的路径中的节点,节点14的上层节点为节点7、节点3和节点1,其中节点3为空节点,则可将节点14中的数据14存储至节点3,调整后假想树参见图4b。
调整方式二:
确定待调整的第六节点;其中,所述第六节点为空节点;
以所述第六节点为开始节点向叶子节点方向遍历,确定最后一个非空节点,将所述最后一个非空节点的数据迁移至所述第六节点。
具体来说,在该调整方式中,如果假想树中存在待调整的空节点,则以该空节点为开始节点,选一个方向继续向下遍历,将最后一个值换上来。参见图4a,如空节点3沿着节点7的方向向下遍历,遍历至节点15及节点31,由于节点31为最后一个节点,则将节点31中的数值31迁移至节点3,调整后假想树参见图4c。
进一步,在本申请中,接收待存储的第一数据之后,还包括:
判断映射表中是否存储了与所述第一数据对应的替换节点及替换路径;若存在,则将所述替换节点作为第一节点,将所述替换路径作为第一路径,将所述替换路径中的遍历顺序作为第一遍历顺序,继续执行所述按照第一遍历顺序依次遍历第一路径中的每个节点的步骤;若不存在,则继续执行所述利用预先确定的数据结构确定与所述第一数据对应的第一节点的步骤。或者,
判断所述第一数据待存储的数据结构,是否存在对应的映射函数;若是,则利用所述映射函数确定与所述第一数据对应的第一节点,并继续执行所述确定从所述数据结构的根节点至所述第一节点的第一路径的步骤。
具体来说,由于假想树的抗攻击性比红黑树略弱,但高于哈希表,因此在本申请中,可以通过映射表、映射函数等方式进行保护。
例如:在没有映射情况下,插入的数据为1、2、4、8,此时这四个数据待存储的节点为:节点1、节点2、节点4和节点8,若通过映射表的方式进行节点替换,则可预先设置映射表中包括:
替换节点:节点8;
与节点8对应的替换路径为:将节点8的路径替换至节点7的路径;
替换节点:节点7;
与节点7对应的替换路径为:将节点7的路径替换至节点8的路径;
则在向节点7和8存储数据时,由于节点7和8为替换节点,则将向节点8存储的数据通过节点7的路径存储至节点7,将向节点7存储的数据通过节点8的路径存储至节点8。
若通过映射函数的方式进行节点替换,需要预先设置映射函数,该映射函数可确定每一个待存储数据对应的节点,并且,通过映射函数确定的节点与原方式确定的节点不同,例如:若映射函数为:f(x)=x+1,x为待存储的数据,f(x)为映射后的节点,则在存储数据1时,通过该映射函数可确定对应的映射结果为2,也即:将数据1存储至节点2,以此类推,可将数据2、4、8分别存储至节点3、5、9;通过上述两种方式,提高数据结构的抗攻击性。
在此,通过如下测试对本方案所达到的效果进行说明:
测试一:
生成一千万个随机数进行插入,假想树数据结构的耗时为11734ms,红黑树耗时为23875ms;然后再对这一千万个数进行查找,假想树的耗时为9782ms,红黑树的耗时为14125ms。为降低偶然性,又进行了3次测试,结果数据分别为(数据的意义与前文中出现的顺序一致):(17625,22500;11407,14937)(19891,23328;10578,15234)(16922,21797;9734,13750),可以算出在测试电脑上,假想树平均插入一千万个随机数的耗时约为:16543(红黑树为22875),全查找的平均耗时约为:10375(红黑树为14512)。可以看到,四次测试中,假想树的插入和查找速度均高于红黑树。
上面的测试是一千万个数全面中的测试,另外也测试了生成两组一千万个的随机数,在一组随机数中匹配另外一组随机数,测试的结果为:(18641,22515;11703,15344)(17906,22610;12594,16125)(17641,22844;12094,16390),得到的结论与上面一样,假想树的速度更快一些。另外还测试了数据量为十万的随机数,结论也是一样。
测试二:
考虑到随机数的分布也会对假想树的性能造成影响,因此修改了随机数的算法,在一千万个数的基础上(在一组一千万个的随机数中匹配另外一组一千万个的随机数),测试了不同分布下假想树和红黑树的效率。
均匀分布:假想树插入耗时19391ms,红黑树插入耗时24656ms;假想树查找耗时14062ms,红黑树查找耗时17297ms;
正态分布(期望值10000000,标准差5000000):假想树插入耗时17422ms,红黑树插入耗时21343ms;假想树查找耗时11078ms,红黑树查找耗时15766ms;
泊松分布(期望和方差均为20000000):假想树插入耗时1828ms,红黑树插入耗时2125ms;假想树查找耗时1375ms,红黑树查找耗时1844ms(随机数富集了,导致数的个数变少);
可以看出,在上述分布下的随机数,假想树均优于红黑树。
测试三:
测试假想树的删除效率,在测试删除效率时,需要找到待删除的数后,还要继续向下层遍历,找到一个叶子结点换上来。这种方法比直接删除置为0慢,但这种删除方式的数据结构不会发生劣化。
假想树删除时16375ms,红黑树删除耗时22891ms(作为对比参考,此次测试,假想树插入耗时16375ms,红黑树插入耗时23422ms;假想树查找耗时12578ms,红黑树查找耗时16343ms)。
测试可得,假想树在插入、删除和查找上的性能期望,均优于红黑树。通过该发明对文档的内容进行索引,并统计不同词的搜索热度,可以快速提取出文档中的关键词。
下面对本发明实施例提供的数据处理装置进行介绍,下文描述的数据处理装置与上文描述的数据处理方法可以相互参照。
参见图5,本发明实施例提供的一种数据处理装置,包括:
接收模块100,用于接收待存储的第一数据;
第一确定模块200,用于利用预先确定的数据结构确定与所述第一数据对应的第一节点;
第二确定模块300,用于确定从所述数据结构的根节点至所述第一节点的第一路径;所述第一路径包括路径中各个节点的第一遍历顺序;
第一遍历模块400,用于按照第一遍历顺序依次遍历第一路径中的每个节点;
第一判断模块500,用于判断遍历的当前节点是否已创建;若否,则触发创建模块600;若是,则触发第二判断模块700;
所述创建模块600,用于创建当前节点,并将所述第一数据存储至当前节点;
所述第二判断模块700,用于判断当前节点是否为空节点;若为空节点,则触发第一存储模块800;若为非空节点,则触发第三判断模块900;
所述第一存储模块800,用于将所述第一数据存储至当前节点;
所述第三判断模块900,用于判断当前节点是否为所述第一节点;若否,则触发第一遍历模块400根据所述第一路径继续遍历下一个节点;若是,则触发第二存储模块1000;
所述第二存储模块1000,用于将所述第一数据存储至当前节点。
其中,第二存储模块包括:
替换单元,用于将当前节点中原存储的第二数据替换为第一数据;
第一获取单元,用于获取与所述第二数据对应的第二节点及第二路径;
遍历单元,用于以当前节点为开始节点,按照第二路径中的遍历顺序继续遍历下一个节点,并将下一个节点作为当前节点;
第一判断单元,用于判断当前节点是否已创建;若否,则触发第一创建单元;若是,则触发第二判断单元;
所述第一创建单元,用于创建当前节点,并将所述第二数据存储至当前节点;
第二判断单元,用于判断当前节点是否为空节点;若为空节点,则触发存储单元;若为非空节点,则触发第三判断单元;
存储单元,用于将所述第二数据存储至当前节点;
第三判断单元,用于判断所述当前节点是否为第二节点;若否,则触发所述遍历单元按照第二路径中的遍历顺序继续遍历下一个节点;若是,则将所述第二数据作为第一数据,继续触发所述替换单元。
其中,本装置还包括:
第三确定模块,用于确定待删除的第三数据;
第四确定模块,用于利用所述数据结构确定与所述第三数据对应的第三节点;
第五确定模块,用于确定从所述数据结构的根节点至所述第三节点的第三路径;所述第三路径包括路径中各个节点的第三遍历顺序;
第二遍历模块,用于按照所述第三遍历顺序依次遍历所述第三路径中的每个节点;
第四判断模块,用于判断遍历的当前节点存储的数据是否为所述第三数据;若是,则触发删除模块;若否,则触发所述第二遍历模块根据所述第三路径继续遍历下一个节点
删除模块,用于将当前节点内存储的第三数据删除,并设置当前节点为空节点。
其中,本装置还包括:
第六确定模块,用于确定待查找的第四数据;
第七确定模块,用于利用所述数据结构确定与所述第四数据对应的第四节点;
第八确定模块,用于确定从所述数据结构的根节点至所述第四节点的第四路径;所述第四路径包括路径中各个节点的第四遍历顺序;
第三遍历模块,用于按照所述第四遍历顺序依次遍历所述第四路径中的每个节点;
第五判断模块,用于判断遍历的当前节点存储的数据是否为所述第四数据;若是,则查找成功;若否,则触发第三遍历模块根据所述第四路径继续遍历下一个节点。
其中,本装置还包括:
统计模块,用于统计所述数据结构中每个非空节点的检索次数,并根据每个非空节点的检索次数确定待调整的第五节点;
第六判断模块,用于判断所述第五节点的上层节点中是否存在空节点;若存在,则将所述第五节点的数据迁移至上层节点的空节点。
其中,本装置还包括:
第九确定模块,用于确定待调整的第六节点;其中,所述第六节点为空节点;
数据迁移模块,用于以第六节点为开始节点向叶子节点方向遍历,确定最后一个非空节点,将所述最后一个非空节点的数据迁移至所述第六节点。
其中,本装置还包括:
第七判断模块,用于判断映射表中是否存储了与所述第一数据对应的替换节点及替换路径;若存在,则将所述替换节点作为第一节点,将所述替换路径作为第一路径,将所述替换路径中的遍历顺序作为第一遍历顺序,触发第一遍历模块;若不存在,则触发所述第一确定模块。
其中,本装置还包括:
第八判断模块,用于判断所述第一数据待存储的数据结构,是否存在对应的映射函数;若是,则利用所述映射函数确定与所述第一数据对应的第一节点,并触发第二确定模块。
参见图6,本发明实施例提供的一种电子设备结构示意图,包括:
存储器11,用于存储计算机程序;
处理器12,用于执行所述计算机程序时实现上述任意一项所述的数据处理方法的步骤。
在本实施例中,设备可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机等终端设备。
该设备可以包括存储器11、处理器12和总线13。
其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是设备的内部存储单元,例如该设备的硬盘。存储器11在另一些实施例中也可以是设备的外部存储设备,例如设备上配备的插接式硬盘,智能存储卡(SmartMedia Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括设备的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于设备的应用软件及各类数据,例如执行数据处理方法的程序代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行数据处理方法的程序代码等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,设备还可以包括网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该设备与其他电子设备之间建立通信连接。
可选地,该设备还可以包括用户接口15,用户接口15可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口15还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在设备中处理的信息以及用于显示可视化的用户界面。
图6仅示出了具有组件11-15的设备,本领域技术人员可以理解的是,图6示出的结构并不构成对设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本发明实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的数据处理方法的步骤。
其中,该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
通过上述内容可以看出,本方案所述的数据处理方案,在插入数据、删除数据和查找数据上的速度要优于红黑树。并且该方法更易于理解,所需的内存要少于基于红黑树的方法。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (11)

1.一种数据处理方法,其特征在于,包括:
接收待存储的第一数据;
利用预先确定的数据结构确定与所述第一数据对应的第一节点;
确定从所述数据结构的根节点至所述第一节点的第一路径;所述第一路径包括路径中各个节点的第一遍历顺序;
按照第一遍历顺序依次遍历第一路径中的每个节点,判断遍历的当前节点是否已创建;若否,则创建当前节点,并将所述第一数据存储至当前节点;若是,则判断当前节点是否为空节点;
若为空节点,则将所述第一数据存储至当前节点;若为非空节点,则判断当前节点是否为所述第一节点;若否,则根据所述第一路径继续遍历下一个节点;若是,则将所述第一数据存储至当前节点。
2.根据权利要求1所述的数据处理方法,其特征在于,所述将所述第一数据存储至当前节点,包括:
将当前节点中原存储的第二数据替换为第一数据;
获取与所述第二数据对应的第二节点及第二路径;
以当前节点为开始节点,按照第二路径中的遍历顺序继续遍历下一个节点,并将下一个节点作为当前节点;
判断当前节点是否已创建;若否,则创建当前节点,并将所述第二数据存储至当前节点;若是,则判断当前节点是否为空节点;
若为空节点,则将所述第二数据存储至当前节点;若为非空节点,则判断所述当前节点是否为第二节点;
若否,则按照第二路径中的遍历顺序继续遍历下一个节点;若是,则将所述第二数据作为第一数据,继续执行所述将当前节点中原存储的第二数据替换为第一数据的步骤。
3.根据权利要求2所述的数据处理方法,其特征在于,还包括:
确定待删除的第三数据;
利用所述数据结构确定与所述第三数据对应的第三节点;
确定从所述数据结构的根节点至所述第三节点的第三路径;所述第三路径包括路径中各个节点的第三遍历顺序;
按照所述第三遍历顺序依次遍历所述第三路径中的每个节点,并判断遍历的当前节点存储的数据是否为所述第三数据;
若是,则将当前节点内存储的第三数据删除,并设置当前节点为空节点;若否,则根据所述第三路径继续遍历下一个节点。
4.根据权利要求2所述的数据处理方法,其特征在于,还包括:
确定待查找的第四数据;
利用所述数据结构确定与所述第四数据对应的第四节点;
确定从所述数据结构的根节点至所述第四节点的第四路径;所述第四路径包括路径中各个节点的第四遍历顺序;
按照所述第四遍历顺序依次遍历所述第四路径中的每个节点,并判断遍历的当前节点存储的数据是否为所述第四数据;
若是,则查找成功;若否,则根据所述第四路径继续遍历下一个节点;其中,若遍历完所述第四路径后未查找到存储所述第四数据的节点,则查找失败。
5.根据权利要求1所述的数据处理方法,其特征在于,还包括:
统计所述数据结构中每个非空节点的检索次数,并根据每个非空节点的检索次数确定待调整的第五节点;
判断所述第五节点的上层节点中是否存在空节点;
若存在,则将所述第五节点的数据迁移至上层节点的空节点。
6.根据权利要求1所述的数据处理方法,其特征在于,还包括:
确定待调整的第六节点;其中,所述第六节点为空节点;
以所述第六节点为开始节点向叶子节点方向遍历,确定最后一个非空节点,将所述最后一个非空节点的数据迁移至所述第六节点。
7.根据权利要求1至6中任意一项所述的数据处理方法,其特征在于,所述接收待存储的第一数据之后,还包括:
判断映射表中是否存储了与所述第一数据对应的替换节点及替换路径;
若存在,则将所述替换节点作为第一节点,将所述替换路径作为第一路径,将所述替换路径中的遍历顺序作为第一遍历顺序,继续执行所述按照第一遍历顺序依次遍历第一路径中的每个节点的步骤;
若不存在,则继续执行所述利用预先确定的数据结构确定与所述第一数据对应的第一节点的步骤。
8.根据权利要求1至6中任意一项所述的数据处理方法,其特征在于,所述接收待存储的第一数据之后,还包括:
判断所述第一数据待存储的数据结构,是否存在对应的映射函数;
若是,则利用所述映射函数确定与所述第一数据对应的第一节点,并继续执行所述确定从所述数据结构的根节点至所述第一节点的第一路径的步骤。
9.一种数据处理装置,其特征在于,包括:
接收模块,用于接收待存储的第一数据;
第一确定模块,用于利用预先确定的数据结构确定与所述第一数据对应的第一节点;
第二确定模块,用于确定从所述数据结构的根节点至所述第一节点的第一路径;所述第一路径包括路径中各个节点的第一遍历顺序;
第一遍历模块,用于按照第一遍历顺序依次遍历第一路径中的每个节点;
第一判断模块,用于判断遍历的当前节点是否已创建;若否,则触发创建模块;若是,则触发第二判断模块;
所述创建模块,用于创建当前节点,并将所述第一数据存储至当前节点;
所述第二判断模块,用于判断当前节点是否为空节点;若为空节点,则触发第一存储模块;若为非空节点,则触发第三判断模块;
所述第一存储模块,用于将所述第一数据存储至当前节点;
所述第三判断模块,用于判断当前节点是否为所述第一节点;若否,则触发第一遍历模块根据所述第一路径继续遍历下一个节点;若是,则触发第二存储模块;
所述第二存储模块,用于将所述第一数据存储至当前节点。
10.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至8任一项所述的数据处理方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述的数据处理方法的步骤。
CN202011435011.4A 2020-12-10 2020-12-10 一种数据处理方法、装置、设备及存储介质 Active CN112464045B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011435011.4A CN112464045B (zh) 2020-12-10 2020-12-10 一种数据处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011435011.4A CN112464045B (zh) 2020-12-10 2020-12-10 一种数据处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112464045A true CN112464045A (zh) 2021-03-09
CN112464045B CN112464045B (zh) 2023-03-14

Family

ID=74801047

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011435011.4A Active CN112464045B (zh) 2020-12-10 2020-12-10 一种数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112464045B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102867059A (zh) * 2012-09-19 2013-01-09 浪潮(北京)电子信息产业有限公司 一种树形结构中数据的处理方法和系统
CN111190896A (zh) * 2019-08-16 2020-05-22 腾讯科技(深圳)有限公司 数据处理方法、装置、存储介质和计算机设备
US20210303533A1 (en) * 2020-03-26 2021-09-30 Sap Se Automated optimization for in-memory data structures of column store databases

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102867059A (zh) * 2012-09-19 2013-01-09 浪潮(北京)电子信息产业有限公司 一种树形结构中数据的处理方法和系统
CN111190896A (zh) * 2019-08-16 2020-05-22 腾讯科技(深圳)有限公司 数据处理方法、装置、存储介质和计算机设备
US20210303533A1 (en) * 2020-03-26 2021-09-30 Sap Se Automated optimization for in-memory data structures of column store databases

Also Published As

Publication number Publication date
CN112464045B (zh) 2023-03-14

Similar Documents

Publication Publication Date Title
US9195738B2 (en) Tokenization platform
CN111562920A (zh) 小程序代码相似度确定方法、装置、服务器及存储介质
CN113672628A (zh) 数据血缘分析方法、终端设备及介质
CN108182234B (zh) 正则表达式筛选方法和装置
CN111026765A (zh) 严格平衡二叉树的动态处理方法、设备、存储介质及装置
CN112416880A (zh) 一种基于实时归并的海量小文件存储性能优化方法及装置
CN115525580A (zh) 一种namespace设置方法、装置及可读存储介质
CN109101595B (zh) 一种信息查询方法、装置、设备及计算机可读存储介质
CN108875050B (zh) 面向文本的数字取证分析方法、装置和计算机可读介质
KR101358793B1 (ko) 인덱스 파일 생성방법, 사전 인덱스 파일을 이용한 데이터 검색 방법 및 데이터 관리 시스템, 기록매체
CN112464045B (zh) 一种数据处理方法、装置、设备及存储介质
CN112511629B (zh) 一种mpt结构的账户树的数据压缩方法及系统
CN106951531B (zh) 数据查询方法及装置
CN109254962B (zh) 一种基于t-树的索引优化方法、装置及存储介质
CN110688223B (zh) 数据处理方法及相关产品
CN108959584B (zh) 一种基于社区结构的处理图数据的方法及装置
CN114490673B (zh) 数据信息处理方法、装置、电子设备及存储介质
CN108376054B (zh) 一种对标识数据进行索引的处理方法及装置
US20220207075A1 (en) Method and apparatus for generating unordered list, method for managing images and terminal device
CN105653713B (zh) 一种确定设备识别码存在的方法及装置
CN109840080B (zh) 字符属性比较方法、装置、存储介质及电子设备
CN108920676B (zh) 一种处理图数据的方法及系统
CN110781351A (zh) 一种字典值文件生成方法、系统及相关装置
CN114385792B (zh) 一种工单数据提取词语的方法、装置、设备及存储介质
CN117743558B (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
GR01 Patent grant
GR01 Patent grant