CN103970739B - 一种存储信息的处理方法及装置 - Google Patents
一种存储信息的处理方法及装置 Download PDFInfo
- Publication number
- CN103970739B CN103970739B CN201310027573.9A CN201310027573A CN103970739B CN 103970739 B CN103970739 B CN 103970739B CN 201310027573 A CN201310027573 A CN 201310027573A CN 103970739 B CN103970739 B CN 103970739B
- Authority
- CN
- China
- Prior art keywords
- cryptographic hash
- index
- target data
- node
- storage information
- 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
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/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储信息的处理方法及装置,涉及信息管理领域。方法包括:建立一初级索引,用于保存数据的特征条件;建立一初级索引,用于保存数据的特征条件;针对所述初级索引的特征条件建立一次级索引,用于保存所述数据的存储信息至所述次级索引中;其中,所述次级索引为二叉树结构,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息;根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理。本发明的方法及装置,为存储信息提供了高效率的索引方式,从而提高数据信息的吞吐。
Description
技术领域
本发明涉及信息管理领域,特别是一种存储信息的处理方法及装置。
背景技术
NFC技术由非接触式射频识别(Radio Frequency Identification,RFID)技术和点对点通信技术融合演变而来,在0到20cm距离内工作于13.56MHz频率范围,以106kbit/s、212kbit/s、424kbit/s的传输速率进行数据传输,并可以在不同的传输速率之间自动切换。NFC技术符合ISO18092、ISO21481、ECMA(340、352和356)及ETSITS102标准,同时也兼容以ISO14441A为基础的感应式智能卡基础架构。
NFC应用中间件是一种独立的系统软件或服务程序,负责将底层NFC硬件和上层不同的具体应用结合在一起,在NFC应用系统的应用程序端使用中间件提供的一组通用的应用程序接口,即可访问NFC阅读器并进行NFC数据的读取,有效地屏蔽设备间的差异性。NFC应用中间件系统的数据管理模块需要存储和管理大量的临时NFC数据记录,而且对于NFC中间件系统来说,数据管理模块的执行效率关系到整个系统的性能。因此,需要为数据管理模块设计高效的索引方式,以加快系统吞吐率,提高存储空间的管理效率。
传统的中间件系统中,树结构索引是目前应用在海量数据管理系统中最流行的索引结构,AVL树、B-树、T树是树结构索引中最常见的三种索引结构。但是这些索引结构大多是针对磁盘索引而设计,也没有针对NFC的数据特点进行优化,难以满足NFC中间件对高速数据存取的要求。因此,需要针对NFC数据的特点,设计一种轻量,高效的数据索引结构。
发明内容
本发明要解决的技术问题是提供一种存储信息的处理方法及装置,能够提高存储信息的处理效率,从而提高数据信息的吞吐率。
为解决上述技术问题,本发明的实施例提供一种数据存储信息的处理方法,包括如下步骤:
建立一初级索引,用于保存数据的特征条件;
针对所述初级索引的特征条件建立一次级索引,用于保存所述数据的存储信息至所述次级索引中;其中,所述次级索引为二叉树结构,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息;
根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理。
其中,根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理的步骤包括:
根据所述初级索引中的特征条件找到所述次级索引,将所述目标数据的存储信息保存进所述次级索引中;和/或
根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息。
其中,所述特征条件为通过数据的读取时间和/或发布者信息计算得出的第一类哈希值;所述存储信息为根据数据的内容计算得出的第二类哈希值;所述门限范围为所述次级索引中,一个节点的存储信息达到预设上限后,所保存的最小第二类哈希值到最大第二类哈希值。
其中,根据所述初级索引中的特征条件找到所述次级索引,将所述目标数据的存储信息保存进所述次级索引中的步骤包括:
计算目标数据的第一类哈希值与第二类哈希值;
判断所述初级索引是否包含与所述目标数据的第一类哈希值相等的哈希值;
若不包含,则在所述初级索引中保存所述目标数据的第一类哈希值,并建立与其对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中;
若包含,则找到所述初级索引中与其相同的第一类哈希值所对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中。
其中,将所述目标数据的第二类哈希值保存至该次级索引中的步骤包括:
A1,以次级索引中根节点为当前节点;
A2,判断所述目标数据的第二类哈希值是否属于所述当前节点的门限范围;若属于,则进行A3;若不属于则进行A9;
A3,判断该当前节点的存储数量是否达到预设上限;若未达到预设上限,则进行A4;若达到预设上限,则进行A6;
A4,将所述目标数据的第二类哈希值保存至所述当前节点;之后进行A5;
A5,根据二叉树平衡特性对次级索引进行旋转,并结束;
A6,判断所述当前节点是否含有还有左子树;若含有,则以该左子树为当前节点,并进行A7;若未含有,则进行A8;
A7,将所述目标数据的第二类哈希值保存至当前节点中,将当前节点的最小第二类哈希值提取出,并以所述提取出的最小第二类哈希值为待保存的第二类哈希值,以当前节点的左子树的根节点作为新的当前节点,重新回到A2,保存所述待保存的第二类哈希值;
A8,将所述目标数据的第二类哈希值保存至当前节点中,在其当前节点生成一新的左子树,将当前节点的最小第二类哈希值提取出,并保存至所述新的左子树中,以该左子树为新的当前节点;之后回到A5;
A9,判断所述目标数据的第二类哈希值是否大于当前节点的门限范围;若大于,则进行A10;否,则进行A12;
A10,判断当前节点是否有右子树;是,则以该右子树为新的当前节点,并回到A2;否,则进行A11;
A11,判断当前节点的是否达到所述预设上限;否,则回到步骤A4;是,则回到步骤A8;
A12,判断当前节点是否有左子树;是,则以该做子树为新的当前节点,并回到步骤A2;否,则回到步骤A11。
其中,根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息的步骤包括:
B1,获取查找目标数据存储信息的指令;
B2,计算所述目标数据的第一类哈希值和第二类哈希值;
B3,在所述初级索引中搜索与所述目标数据的第一类哈希值相同的哈希值;
B4,对查找的结果进行判断;若所述初级索引中包含与所述目标数据的第一类哈希值相等的哈希值,则进行B6;否,则查询失败;
B6,进入与所述目标数据的第一类哈希值对应的次级索引,以次级索引的根节点为当前节点,开始查询所述目标数据的第二类哈希值;
B7,判断所述目标数据的第二哈希值是否属于当前节点的门限范围内;若属于,则进行B8;若不属于,则进行B11;
B8,进一步判断当前节点是否拥有与所述目标数据的第二哈希值相等的哈希值;若有,则进行B9;若无,则进行B10;
B9,查询成功;
B10,查询失败;
B11,判断当前节点是不是叶子节点;若是,则进行B10;若不是,则进行B12;
B12,判断所述目标数据的第二哈希值是否大于当前节点的门限范围;若大于,是则进行B13;若小于,则进行B14;
B13,判断当前节点是否有右子树;若有,则进行B15;若没有,则进行B10;
B15,选择当前节点的右子树的根节点作为新的当前节点;之后回到B7
B14,判断当前节点是否有左子树;若有,则进行B17;若没有,回到B10;
B17,选择当前节点的左子树的根节点作为新的当前节点;之后回到B7。
其中,若所述次级索引中的同一节点的左子树与右子树的高度差超出预设平衡因子的范围,对所述次级索引进行旋转操作。
本发明的实施例还一种数据存储信息的处理装置,包括:
第一建立模块,用于建立一初级索引,用于保存数据的特征条件;
第二建立模块,用于针对所述初级索引的特征条件建立一次级索引;其中所述次级索引为二叉树结构,用于保存所述数据的存储信息至所述次级索引中,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息;
处理模块,用于根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理。
其中,所述处理模块还包括:
保存单元,用于根据所述初级索引中的特征条件找到所述次级索引,将所述目标数据的存储信息保存进所述次级索引中;和/或
查询单元,根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息。
其中,本发明的装置还包括:
所述特征条件为通过数据的读取时间和/或发布者信息计算得出的第一类哈希值;所述存储信息为根据数据的内容计算得出的第二类哈希值;所述门限范围为所述次级索引中,一个节点的存储信息达到预设上限后,所保存的最小第二类哈希值到最大第二类哈希值。
其中,所述保存单元具体用于:
计算目标数据的第一类哈希值与第二类哈希值;
判断所述初级索引是否包含与所述目标数据的第一类哈希值相等的哈希值;
若不包含,则在所述初级索引中保存所述目标数据的第一类哈希值,并建立与其对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中;
若包含,则找到所述初级索引中与其相同的第一类哈希值所对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中。
其中,本发明的装置包括:
旋转模块,用于若所述次级索引中的同一节点的左子树与右子树的高度差超出预设平衡因子的范围,对所述次级索引进行旋转操作。
本发明的上述技术方案的有益效果如下:
在对数据的存储信息进行处理时(如进行查找或保存),能够通过数据的特征条件在初级索引中找到次级索引,并且由于所述次级索引采用二叉树结构,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息,因此只需要判断每个节点的门限范围,即可确定存储信息需在次级索引中要保存的位置或者已经保存了的位置,从而极大提高了存储信息的处理效率以及数据的吞吐量。
附图说明
图1为本发明中数据存储信息的处理方法的步骤示意图;
图2为本发明中初级索引与次级索引对应的关系示意图;
图3为本发明中对目标数据的存储信息进行查询的步骤示意图;
图4为本发明中对目标数据的存储信息进行保存的步骤示意图;
图5为本发明中数据存储信息的处理装置的结构示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明的实施例提供一种数据存储信息的处理方法,包括如下步骤:
步骤1,建立一初级索引,用于保存数据的特征条件;
步骤2,针对所述初级索引的特征条件建立一次级索引,用于保存所述数据的存储信息至所述次级索引中;其中,所述次级索引为二叉树结构,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息;
步骤3,根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理。
上述方法
在对数据的存储信息进行处理时(如进行查找或保存),能够通过数据的特征条件在初级索引中找到次级索引,并且由于所述次级索引采用二叉树结构,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息,因此只需要判断每个节点的门限范围,即可确定存储信息需在次级索引中要保存的位置或者已经保存了的位置,从而极大提高了存储信息的处理效率以及数据的吞吐量。
在本发明的上述实施例中,步骤3还可包括:
步骤A,根据所述初级索引中的特征条件找到所述次级索引,将所述目标数据的存储信息保存进所述次级索引中;或
步骤B,根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息。
其中,所述特征条件为通过数据的读取时间和/或发布者信息计算得出的第一类哈希值;所述存储信息为根据数据的内容计算得出的第二类哈希值;所述门限范围为所述次级索引中,一个节点的存储信息达到预设上限后,所保存的最小第二类哈希值到最大第二类哈希值。
在本发明的上述实施例中,步骤A包括:
计算目标数据的第一类哈希值与第二类哈希值;
判断所述初级索引是否包含与所述目标数据的第一类哈希值相等的哈希值;
若不包含,则在所述初级索引中保存所述目标数据的第一类哈希值,并建立与其对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中;
若包含,则找到所述初级索引中与其相同的第一类哈希值所对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中。
在本发明的上述实施例中,将所述目标数据的第二类哈希值保存至该次级索引中的步骤包括:
A1,以次级索引中根节点为当前节点;
A2,判断所述目标数据的第二类哈希值是否属于所述当前节点的门限范围;若属于,则进行A3;若不属于则进行A9;
A3,判断该当前节点的存储数量是否达到预设上限;若未达到预设上限,则进行A4;若达到预设上限,则进行A6;
A4,将所述目标数据的第二类哈希值保存至所述当前节点;之后进行A5;
A5,根据二叉树平衡特性对次级索引进行旋转,并结束;
A6,判断所述当前节点是否含有还有左子树;若含有,则以该左子树为当前节点,并进行A7;若未含有,则进行A8;
A7,将所述目标数据的第二类哈希值保存至当前节点中,将当前节点的最小第二类哈希值提取出,并以所述提取出的最小第二类哈希值为待保存的第二类哈希值,以当前节点的左子树的根节点作为新的当前节点,重新回到A2,保存所述待保存的第二类哈希值;
A8,将所述目标数据的第二类哈希值保存至当前节点中,在其当前节点生成一新的左子树,将当前节点的最小第二类哈希值提取出,并保存至所述新的左子树中,以该左子树为新的当前节点;之后回到A5;
A9,判断所述目标数据的第二类哈希值是否大于当前节点的门限范围;若大于,则进行A10;否,则进行A12;
A10,判断当前节点是否有右子树;是,则以该右子树为新的当前节点,并回到A2;否,则进行A11;
A11,判断当前节点的是否达到所述预设上限;否,则回到步骤A4;是,则回到步骤A8;
A12,判断当前节点是否有左子树;是,则以该做子树为新的当前节点,并回到步骤A2;否,则回到步骤A11。
在本发明的上述实施例中,步骤B包括:
B1,获取查找目标数据存储信息的指令;
B2,计算所述目标数据的第一类哈希值和第二类哈希值;
B3,在所述初级索引中搜索与所述目标数据的第一类哈希值相同的哈希值;
B4,对查找的结果进行判断;若所述初级索引中包含与所述目标数据的第一类哈希值相等的哈希值,则进行B6;否,则查询失败;
B6,进入与所述目标数据的第一类哈希值对应的次级索引,以次级索引的根节点为当前节点,开始查询所述目标数据的第二类哈希值;
B7,判断所述目标数据的第二哈希值是否属于当前节点的门限范围内;若属于,则进行B8;若不属于,则进行B11;
B8,进一步判断当前节点是否拥有与所述目标数据的第二哈希值相等的哈希值;若有,则进行B9;若无,则进行B10;
B9,查询成功;
B10,查询失败;
B11,判断当前节点是不是叶子节点;若是,则进行B10;若不是,则进行B12;
B12,判断所述目标数据的第二哈希值是否大于当前节点的门限范围;若大于,是则进行B13;若小于,则进行B14;
B13,判断当前节点是否有右子树;若有,则进行B15;若没有,则进行B10;
B15,选择当前节点的右子树的根节点作为新的当前节点;之后回到B7
B14,判断当前节点是否有左子树;若有,则进行B17;若没有,回到B10;
B17,选择当前节点的左子树的根节点作为新的当前节点;之后回到B7。
考虑到如果所述次级索引中存储数据进行删除后,可能会造成二叉树结构不能保持平衡,因此
在本发明的上述实施例中,在步骤3之后还可以包括:
步骤4,若所述次级索引中的同一节点的左子树与右子树的高度差超出预设平衡因子的范围,对所述次级索引进行旋转操作。
下面对上述方法进行具体描述:
根据NFC读取到的数据得到两个部分信息。第一部分信息为数据的特征条件,包含了数据的读取时间和/或发布者信息;第二部分信息为该数据的内容。利用SHA1算法算出第一部分信息的哈希值,将该哈希值定义为第一类哈希值(即初级编码);同理根据第二部分信息计算得到的第二类哈希值(即次级编码)。
如图2所示,首先构建初级索引,用于保存各个数据的初级编码;之后针对各个初级编码构建次级索引;需要指出的是,由于保存的数据量极为庞大,可能会同一个发布者和/或同一读取时间存在多个数据(即初级编码相同),那么将这些数据的次级编码都共享一个初级编码,如图2所示的次级编码a1-an都保存在与初级编码2对应的次级索引中。
在初步构建完成初级索引以及次级索引后,即可对目标数据的存储信息进行处理。
如图3所示,当需要查询目标数据的存储信息时可进行如下步骤:
步骤301,首先获取用户在查找时需要输入目标数据的信息;
步骤302,利用SHA1算法目标数据的初级编码以及次级编码;
步骤303,在初级索引中进行二分查找;
步骤304,对二分查找的结果进行判断;若初级索引表中存在与初级编码相同的哈希值,进入步骤306;否则进入步骤305,查询失败;
步骤306,进入与初级编码对应的次级索引中,在次级索引表的根节点开始查询次级编码对应的第二类哈希值;
步骤307,判断次级编码对应的第二类哈希值是否在该根节点拥有的哈希值的范围内;若在范围内,则进入步骤308,否则进入步骤311;
步骤308,进一步判断该节点是否拥有与初级编码相等的哈希值。若有,则进入步骤309,查询成功;若无,则进入步骤310,查询失败;
步骤311,判断当前节点是不是二叉树的叶子节点。若是,则进入步骤310,查询失败;若不是,则进入步骤312;
步骤312,判断次级编码对应的第二类哈希值是否大于当前节点已保存的最大第二类哈希值。若是则进入步骤313,否则进入步骤314;
步骤313,判断当前节点是否有右子树。若有则进入步骤315;否则进入步骤316,查询失败;
步骤315,由于该二叉树中节点的右子树只包含大于该节点最大哈希值的记录,因此选择当前节点的右子树的根节点作为新的当前节点,从其保存的第二类哈希值中继续进行查询;
步骤314,判断当前节点是否有左子树。若有则进入步骤317;否则进入步骤316,查询失败;
步骤317,由于该二叉树中节点的左子树只包含小于该节点最小哈希值的记录,因此选择当前节点的左子树的根节点作为新的当前节点,从其保存的第二类哈希值中继续进行查询;
步骤315和步骤317后续的过程重复步骤307至步骤313、步骤307至314的循环,直至查询成功或查询失败。
如图4所示,当需要查询目标数据的存储信息时可进行如下步骤:
步骤401,获取查找目标数据存储信息的指令;
步骤402,利用SHA1算法算出目标数据的初级编码以及次级编码;
步骤403,在初级索引中进行二分查找,若不存在与目标数据的初级编码相同的哈希值,进入步骤404,否则进入步骤407;
步骤404,将目标数据的初级编码插入到初级索引中,并新建一个与之对应次级索引,进入步骤405;
步骤405,新建一个根节点,将目标数据的次级编码作为该根节点的哈希值插入次级索引表,完成次级索引记录的添加,进入步骤406;
步骤406,由于次级索引表是一个平衡二叉树结构,记录的添加会导致二叉树不平衡,因此需要在此步骤进行旋转操作。由于旋转操作属于平衡二叉树中的基础内容,在本发明中就不再做详细叙述;完成旋转操作后,进入步骤420,整个添加过程结束;
步骤407,进入与目标数据的初级编码相同的哈希值所对应的次级索引,从该次级索引的根节点开始查询目标数据的次级编码应当插入的位置;
步骤408,判断目标数据的次级编码的哈希值是否在该根节点拥有的哈希值的范围内,即是否满足:该节点最小哈希值≤目标数据的次级编码≤该节点最大哈希值;若不在范围内,则进入步骤409,否则进入步骤414;
步骤409,判断此节点中是否有足够的存储空间;假设每个节点的存储上限为50,即判断是否满足该节点已保存的第二类哈希值的数量<50;若是,则进入步骤410,否则进入步骤411;
步骤410,在当前节点的哈希值中进行二分查找,找到应当插入目标数据的次级编码的位置,并将该次级编码插入;插入后该节点的所有哈希值依然可以保持从小到大排列;完成插入后,进入步骤406,进行旋转操作,完成整个添加过程;
步骤411,判断此当前节点是否有左子树,若有左子树则进入步骤412,否则进入步骤413;
步骤412,在当前节点的第二类哈希值中进行二分查找,找到应当插入目标数据的次级编码的位置,并将该次级编码插入;插入后该节点的所有哈希值依然保持从小到大排列;完成插入后,该节点中拥有51个哈希值,而一个节点只能存储50个哈希值,因此需要进行置换操作,即将节点的当前最小哈希值中抽出;抽出后的当前节点存储的哈希值中,最小的哈希值成为该节点新的门限范围的下限(即最小哈希值);以刚才抽出的哈希值作为新的待保存的次级编码,以当前节点的左子树的根节点作为新的当前节点,重新开始插入该待保存的次级编码的过程,进入步骤408;
置换操作相当于在当前节点所存数的第二类哈希值已达到预设上限的情况下,将目标数据的次级编码插入此结点,然后将结点中的最小第二类哈希插入到该节点的左子树中,之后以此类推,并重新开始递归插入操作;
步骤413,在当前节点的哈希值中进行查找,找到应当插入目标数据的次级编码的位置,并插入;插入后该节点所保存的哈希值可以保持从小到大的排列;完成插入后,将当前节点的最小哈希值抽出,为当前节点新建一个左子树节点,成为当前节点,将抽出的哈希值插入到当前节点中;由于此时的当前节点只有一个哈希值,因此可将该当前节点的最小哈希值看作0;插入操作完成后,进入步骤406,进行旋转操作,完成整个添加过程;
步骤414,判断目标数据的次级编码是否大于当前节点的最大哈希值;若是则进入步骤415,否则进入步骤417;
步骤415,判断当前节点是否存在右子树,若存在则进入步骤416,否则进入步骤419;
步骤416,由于该节点的右子树只包含哈希值大于该节点最大哈希值的记录,因此以当前节点的右子树的根节点作为新的当前节点,进入步骤408,重新开始递归插入操;
步骤417,判断当前节点是否存在左子树,若存在则进入步骤418,否则进入步骤419;
在步骤418,由于该节点的左子树只包含哈希值小于该节点最小哈希值的记录,因此以当前节点的左子树的根节点作为新的当前节点,进入步骤408,重新开始递归插入操作;
在步骤419,判断此节点中是否有足够的存储空间,即是否满足此节点保存的第二类哈希值数量<50;若是,则进入步骤410,否则进入步骤413。
当目标数据的存储信息查询成功后,还可对删除次级索引中的存储信息进行删除,但是这样一来会造成次级索引无法保持平衡,因此,可对每个节点都设一个平衡因子B,用于表示这个结点的左、右子树的高度差,也就是左子树的高度减去右子树的高度的结果值。若所有的节点上的B值为-1、0、1,则该二叉树保持平衡;若有一个节点的|B|>=2,则次级索引就不在是平衡二叉树结构,需要进行旋转操作。
综上所述本发明的方法对数据的存储信息进行处理时(如进行查找或保存),能够通过数据的特征条件在初级索引中找到次级索引,并且由于所述次级索引采用二叉树结构,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息,因此只需要判断每个节点的门限范围,即可确定存储信息需在次级索引中要保存的位置或者已经保存了的位置,从而极大提高了存储信息的处理效率以及数据的吞吐量;此外,具有相同特征条件的数据的存储信息共享同一个初级索引,可进一步加快存储信息的保存与查询时间;此外,对次级索引预设平衡因子,对超出预设平衡因子的次级索引进行旋转操作,从而维持次级索引的平衡。
如图5所示,本发明的实施例还提供一种数据存储信息的处理装置,包括:
第一建立模块,用于建立一初级索引,用于保存数据的特征条件;
第二建立模块,用于针对所述初级索引的特征条件建立一次级索引;其中所述次级索引为二叉树结构,用于保存所述数据的存储信息至所述次级索引中,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息;
处理模块,用于根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理。
上述装置在对数据的存储信息进行处理时(如进行查找或保存),能够通过数据的特征条件在初级索引中找到次级索引,并且由于所述次级索引采用二叉树结构,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息,因此只需要判断每个节点的门限范围,即可确定存储信息需在次级索引中要保存的位置或者已经保存了的位置,从而极大提高了存储信息的处理效率以及数据的吞吐量。
在本发明的上述实施例中,所述处理模块还包括:
保存单元,用于根据所述初级索引中的特征条件找到所述次级索引,将所述目标数据的存储信息保存进所述次级索引中;和/或
查询单元,根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息;
其中,所述特征条件为通过数据的读取时间和/或发布者信息计算得出的第一类哈希值;所述存储信息为根据数据的内容计算得出的第二类哈希值;所述门限范围为所述次级索引中,一个节点的存储信息达到预设上限后,所保存的最小第二类哈希值到最大第二类哈希值;
在本发明的上述实施例中,所述保存单元具体用于:
计算目标数据的第一类哈希值与第二类哈希值;
判断所述初级索引是否包含与所述目标数据的第一类哈希值相等的哈希值;
若不包含,则在所述初级索引中保存所述目标数据的第一类哈希值,并建立与其对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中;
若包含,则找到所述初级索引中与其相同的第一类哈希值所对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中。
下面对保存单元将第二类哈希值保存至次级索引所需的步骤进行进一步描述:
A1,以次级索引中根节点为当前节点;
A2,判断所述目标数据的第二类哈希值是否属于所述当前节点的门限范围;若属于,则进行A3;若不属于则进行A9;
A3,判断该当前节点的存储数量是否达到预设上限;若未达到预设上限,则进行A4;若达到预设上限,则进行A6;
A4,将所述目标数据的第二类哈希值保存至所述当前节点;之后进行A5;
A5,根据二叉树平衡特性对次级索引进行旋转,并结束;
A6,判断所述当前节点是否含有还有左子树;若含有,则以该左子树为当前节点,并进行A7;若未含有,则进行A8;
A7,将所述目标数据的第二类哈希值保存至当前节点中,将当前节点的最小第二类哈希值提取出,并以所述提取出的最小第二类哈希值为待保存的第二类哈希值,以当前节点的左子树的根节点作为新的当前节点,重新回到A2,保存所述待保存的第二类哈希值;
A8,将所述目标数据的第二类哈希值保存至当前节点中,在其当前节点生成一新的左子树,将当前节点的最小第二类哈希值提取出,并保存至所述新的左子树中,以该左子树为新的当前节点;之后回到A5;
A9,判断所述目标数据的第二类哈希值是否大于当前节点的门限范围;若大于,则进行A10;否,则进行A12;
A10,判断当前节点是否有右子树;是,则以该右子树为新的当前节点,并回到A2;否,则进行A11;
A11,判断当前节点的是否达到所述预设上限;否,则回到步骤A4;是,则回到步骤A8;
A12,判断当前节点是否有左子树;是,则以该做子树为新的当前节点,并回到步骤A2;否,则回到步骤A11。
下面对查询单元根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息的步骤进行详细描述:
B1,获取查找目标数据存储信息的指令;
B2,计算所述目标数据的第一类哈希值和第二类哈希值;
B3,在所述初级索引中进行搜索所述目标数据的第一类哈希值;
B4,对查找的结果进行判断;若所述初级索引中包含与所述目标数据的第一类哈希值相等的哈希值,则进行B6;否,则查询失败;
B6,进入与所述目标数据的第一类哈希值对应的次级索引,以次级索引的根节点为当前节点,开始查询所述目标数据的第二类哈希值;
B7,判断所述目标数据的第二哈希值是否属于当前节点的门限范围内;若属于,则进行B8;若不属于,则进行B11;
B8,进一步判断当前节点是否拥有与所述目标数据的第二哈希值相等的哈希值;若有,则进行B9,查询成功;若无,则进行B10,查询失败;
B11,判断当前节点是不是叶子节点;若是,则进行B10,查询失败;若不是,则进行B2;
B12,判断所述目标数据的第二哈希值是否大于当前节点的门限范围;若大于,是则进行B13;若小于,则进行B14;
B13,判断当前节点是否有右子树;若有,则进行B15;若没有,则进行B16,查询失败;
B15,选择当前节点的右子树的根节点作为新的当前节点;之后回到B7
B14,判断当前节点是否有左子树;若有,则进行B17;若没有,回到B16,查询失败;
B17,选择当前节点的左子树的根节点作为新的当前节点;之后回到B7。
当目标数据的存储信息查询成功后,还可对删除次级索引中的存储信息进行删除,但是这样一来会造成次级索引无法保持平衡,因此在本发明的上述实施例中,本装置还可以包括:
旋转模块,用于若所述次级索引中的同一节点的左子树与右子树的高度差超出预设平衡因子的范围,对所述次级索引进行旋转操作,从而维持次级索引的平衡。
显然,上述实施例为本发明中一种数据存储信息的处理方法对应的装置实施例,所述数据存储信息的处理方法达到的技术效果,本实施例的装置也同样能够达到。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种数据存储信息的处理方法,其特征在于,包括如下步骤:
建立一初级索引,用于保存数据的特征条件;
针对所述初级索引的特征条件建立一次级索引,用于保存所述数据的存储信息至所述次级索引中;其中,所述次级索引为二叉树结构,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息;
根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理;
其中,根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理的步骤包括:
根据所述初级索引中的特征条件找到所述次级索引,将所述目标数据的存储信息保存进所述次级索引中;和/或
根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息;
其中,所述特征条件为通过数据的读取时间和/或发布者信息计算得出的第一类哈希值;所述存储信息为根据数据的内容计算得出的第二类哈希值;所述门限范围为所述次级索引中,一个节点的存储信息达到预设上限后,所保存的最小第二类哈希值到最大第二类哈希值。
2.根据权利要求1所述的数据存储信息的处理方法,其特征在于,根据所述初级索引中的特征条件找到所述次级索引,将所述目标数据的存储信息保存进所述次级索引中的步骤包括:
计算目标数据的第一类哈希值与第二类哈希值;
判断所述初级索引是否包含与所述目标数据的第一类哈希值相等的哈希值;
若不包含,则在所述初级索引中保存所述目标数据的第一类哈希值,并建立与其对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中;
若包含,则找到所述初级索引中与其相同的第一类哈希值所对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中。
3.根据权利要求2所述的数据存储信息的处理方法,其特征在于,将所述目标数据的第二类哈希值保存至该次级索引中的步骤包括:
A1,以次级索引中根节点为当前节点;
A2,判断所述目标数据的第二类哈希值是否属于所述当前节点的门限范围;若属于,则进行A3;若不属于则进行A9;
A3,判断该当前节点的存储数量是否达到预设上限;若未达到预设上限,则进行A4;若达到预设上限,则进行A6;
A4,将所述目标数据的第二类哈希值保存至所述当前节点;之后进行A5;
A5,根据二叉树平衡特性对次级索引进行旋转,并结束;
A6,判断所述当前节点是否含有还有左子树;若含有,则以该左子树为当前节点,并进行A7;若未含有,则进行A8;
A7,将所述目标数据的第二类哈希值保存至当前节点中,将当前节点的最小第二类哈希值提取出,并以所述提取出的最小第二类哈希值为待保存的第二类哈希值,以当前节点的左子树的根节点作为新的当前节点,重新回到A2,保存所述待保存的第二类哈希值;
A8,将所述目标数据的第二类哈希值保存至当前节点中,在其当前节点生成一新的左子树,将当前节点的最小第二类哈希值提取出,并保存至所述新的左子树中,以该左子树为新的当前节点;之后回到A5;
A9,判断所述目标数据的第二类哈希值是否大于当前节点的门限范围;若大于,则进行A10;否,则进行A12;
A10,判断当前节点是否有右子树;是,则以该右子树为新的当前节点,并回到A2;否,则进行A11;
A11,判断当前节点的是否达到所述预设上限;否,则回到步骤A4;是,则回到步骤A8;
A12,判断当前节点是否有左子树;是,则以该左子树为新的当前节点,并回到步骤A2;否,则回到步骤A11。
4.根据权利要求3所述的数据存储信息的处理方法,其特征在于,根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息的步骤包括:
B1,获取查找目标数据存储信息的指令;
B2,计算所述目标数据的第一类哈希值和第二类哈希值;
B3,在所述初级索引中搜索与所述目标数据的第一类哈希值相同的哈希值;
B4,对查找的结果进行判断;若所述初级索引中包含与所述目标数据的第一类哈希值相等的哈希值,则进行B6;否,则查询失败;
B6,进入与所述目标数据的第一类哈希值对应的次级索引,以次级索引的根节点为当前节点,开始查询所述目标数据的第二类哈希值;
B7,判断所述目标数据的第二哈希值是否属于当前节点的门限范围内;若属于,则进行B8;若不属于,则进行B11;
B8,进一步判断当前节点是否拥有与所述目标数据的第二哈希值相等的哈希值;若有,则进行B9;若无,则进行B10;
B9,查询成功;
B10,查询失败;
B11,判断当前节点是不是叶子节点;若是,则进行B10;若不是,则进行B12;
B12,判断所述目标数据的第二哈希值是否大于当前节点的门限范围;若大于,是则进行B13;若小于,则进行B14;
B13,判断当前节点是否有右子树;若有,则进行B15;若没有,则进行B10;
B15,选择当前节点的右子树的根节点作为新的当前节点;之后回到B7
B14,判断当前节点是否有左子树;若有,则进行B17;若没有,回到B10;
B17,选择当前节点的左子树的根节点作为新的当前节点;之后回到B7。
5.根据权利要求1所述的数据存储信息的处理方法,其特征在于,若所述次级索引中的同一节点的左子树与右子树的高度差超出预设平衡因子的范围,对所述次级索引进行旋转操作。
6.一种数据存储信息的处理装置,其特征在于,包括:
第一建立模块,用于建立一初级索引,用于保存数据的特征条件;
第二建立模块,用于针对所述初级索引的特征条件建立一次级索引;其中所述次级索引为二叉树结构,用于保存所述数据的存储信息至所述次级索引中,其一个节点中的左子树只保存小于该节点门限范围的存储信息,右子树只保存大于该节点门限范围的存储信息;
处理模块,用于根据所述初级索引以及所述次级索引,对目标数据的存储信息进行处理;
其中,所述处理模块还包括:
保存单元,用于根据所述初级索引中的特征条件找到所述次级索引,将所述目标数据的存储信息保存进所述次级索引中;和/或
查询单元,根据所述初级索引中的特征条件找到所述次级索引,在所述次级索引中查询所述目标数据的存储信息;
其中,所述特征条件为通过数据的读取时间和/或发布者信息计算得出的第一类哈希值;所述存储信息为根据数据的内容计算得出的第二类哈希值;所述门限范围为所述次级索引中,一个节点的存储信息达到预设上限后,所保存的最小第二类哈希值到最大第二类哈希值。
7.根据权利要求6所述的存储信息的处理装置,其特征在于,所述保存单元具体用于:
计算目标数据的第一类哈希值与第二类哈希值;
判断所述初级索引是否包含与所述目标数据的第一类哈希值相等的哈希值;
若不包含,则在所述初级索引中保存所述目标数据的第一类哈希值,并建立与其对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中;
若包含,则找到所述初级索引中与其相同的第一类哈希值所对应的次级索引,将所述目标数据的第二类哈希值保存至该次级索引中。
8.根据权利要求6所述的存储信息的处理装置,其特征在于,包括:
旋转模块,用于若所述次级索引中的同一节点的左子树与右子树的高度差超出预设平衡因子的范围,对所述次级索引进行旋转操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310027573.9A CN103970739B (zh) | 2013-01-24 | 2013-01-24 | 一种存储信息的处理方法及装置 |
PCT/CN2013/080072 WO2013167080A2 (zh) | 2013-01-24 | 2013-07-25 | 一种存储信息的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310027573.9A CN103970739B (zh) | 2013-01-24 | 2013-01-24 | 一种存储信息的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103970739A CN103970739A (zh) | 2014-08-06 |
CN103970739B true CN103970739B (zh) | 2017-04-26 |
Family
ID=49551375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310027573.9A Active CN103970739B (zh) | 2013-01-24 | 2013-01-24 | 一种存储信息的处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103970739B (zh) |
WO (1) | WO2013167080A2 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778948A (zh) * | 2021-09-01 | 2021-12-10 | 中国人民银行清算总中心 | 消息持久化存储方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6567815B1 (en) * | 2000-08-01 | 2003-05-20 | International Business Machines Corporation | Technique of clustering and compaction of binary trees |
CN102387107A (zh) * | 2010-09-01 | 2012-03-21 | 夏普株式会社 | 基于二叉树的联合编码方法和编码器 |
CN102725754A (zh) * | 2011-12-26 | 2012-10-10 | 华为技术有限公司 | 一种索引数据处理方法及设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070162508A1 (en) * | 2004-11-08 | 2007-07-12 | Mazzagatti Jane C | Updating information in an interlocking trees datastore |
CN101039253B (zh) * | 2006-03-17 | 2010-12-29 | 中兴通讯股份有限公司 | 一种实现三重内容可寻址存储器范围匹配的前缀扩展方法 |
CN101419630B (zh) * | 2008-12-11 | 2011-03-23 | 中国科学院计算技术研究所 | 一种数据流中Top-k项的挖掘方法及系统 |
-
2013
- 2013-01-24 CN CN201310027573.9A patent/CN103970739B/zh active Active
- 2013-07-25 WO PCT/CN2013/080072 patent/WO2013167080A2/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6567815B1 (en) * | 2000-08-01 | 2003-05-20 | International Business Machines Corporation | Technique of clustering and compaction of binary trees |
CN102387107A (zh) * | 2010-09-01 | 2012-03-21 | 夏普株式会社 | 基于二叉树的联合编码方法和编码器 |
CN102725754A (zh) * | 2011-12-26 | 2012-10-10 | 华为技术有限公司 | 一种索引数据处理方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2013167080A2 (zh) | 2013-11-14 |
WO2013167080A3 (zh) | 2014-01-03 |
CN103970739A (zh) | 2014-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6411957B1 (en) | System and method of organizing nodes within a tree structure | |
CN103514210B (zh) | 小文件处理方法及装置 | |
US20130297570A1 (en) | Method and apparatus for deleting duplicate data | |
CN103228060A (zh) | 蓝牙配对信息的处理方法及装置 | |
CN106874348A (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN111061706B (zh) | 人脸识别算法模型清洗方法、装置及存储介质 | |
CN102629269A (zh) | 一种嵌入式数据库的检索及存储方法 | |
US20240104059A1 (en) | Method for Service Processing and System, Device, and Medium | |
CN103906039A (zh) | 一种防止手机号码泄露的方法和装置 | |
CN106503008A (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CN108717448B (zh) | 一种面向键值对存储的范围查询过滤方法和键值对存储系统 | |
CN103970739B (zh) | 一种存储信息的处理方法及装置 | |
CN105824943A (zh) | 一种二维地图引擎海量矢量数据存储方法 | |
CN110134646B (zh) | 知识平台服务数据存储与集成方法及系统 | |
CN102930204A (zh) | 基于软件保护装置的软件加壳方法、系统及软件保护方法 | |
CN106775843B (zh) | 基于内存加载的dalvik字节码优化方法 | |
CN103457929A (zh) | 一种数据访问处理方法及系统 | |
CN110389714A (zh) | 用于数据输入输出的方法、装置和计算机存储介质 | |
CN103049561A (zh) | 一种数据压缩方法、存储引擎及存储系统 | |
CN101789991A (zh) | 获取变更数据信息的方法、装置及移动终端 | |
CN110569291A (zh) | 一种数字货币钱包的密钥数据查询获取方法及装置 | |
CN107609143B (zh) | 一种分布式实时内存数据库的分片信息存储方法 | |
CN108376054A (zh) | 一种对标识数据进行索引的处理方法及装置 | |
CN101789070B (zh) | 一种智能卡初始化方法和终端设备 | |
CN111026748B (zh) | 网络访问频次管控的数据压缩方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |