本发明专利技术涉及信息管理领域,公开了一种索引数据插入方法及系统。本发明专利技术首先获取大小达到第一设定阈值的目标子索引;然后将所述目标子索引融合到所述主索引中。本发明专利技术通过将子索引整体性插入主索引,大大减少了数据结构的破坏,便于数据的查询和其他操作;从子索引的最低节点层中的最小节点向最大节点扫描,能够保证子索引中的索引数据的完整性,同时也能提高数据查询效率,保证将子索引融合到主索引后不破坏主索引的架构。
【技术实现步骤摘要】
一种索引数据插入方法及系统
本专利技术涉及信息管理
,特别涉及一种索引数据插入方法及系统。
技术介绍
平衡树(b+tree)是关系数据库最常用的索引数据结构,它的优点非常明显:非常短的查询路径;很小的读写磁盘;可提供范围查找。但是在数据量很大的时候,平衡树往往变得低效。 数据量大我们很直观的一个理解可以是内存和数据总量的比值很小,由于平衡树通常以一个页面(4-8k)为一个节点,该节点内部可容纳指向下一级节点的指针的数目非常大,所以通常来说平衡树的层数是很低的。假设一个值和指针占用的空间为4+4=8byte来估算,页面为8k的平衡树的一个中间节点可以指向近1000个下一级的节点,更直观的来说如果平衡树的叶节点的总大小有U,那么所有中间节点的大小约等于1.llg。也就是说平衡树的叶节点的数目(大小)要远远大于中间节点的数目(大小)。 根据平衡树随机查询的特点,我们可以认为:由于平衡树的中间节点被重复访问的几率是很大的,并且数据量不像叶节点那么大,所以我们认为大部分的中间节点可以常驻于内存中,大部分的叶节点被重复访问的几率小于中间节点,所以我们可以认为大部分的叶节点都在磁盘上。根据平衡树的查询路径的特点:从根节点经过每一层的一个中间节点达到叶节点后,根据查找的范围,沿着叶节点之间的指针往一个方向遍历。由于叶节点大部分存在于磁盘上,在叶节点链表上的遍历产生的大量的读写磁盘,这种读写磁盘是不可避免的,为了提高读写磁盘的效率,我们只能保证叶节点的读写磁盘尽可能为顺序读写磁盘。 根据平衡树构建的算法,一个平衡树在建立的初期,叶节点有着很好的物理连续性。但是平衡树在经历了大量而且随机的插入和更新后,中间节点大量分裂后,数据的物理连续性遭到了很大的破坏。大大影响了数据的查询效率。 同时数据量越来越大的时候,平衡树的层次也变得越来越深,插入的时候会涉及到很多层次节点的层级分裂,插入的性能也变的越来越慢。
技术实现思路
本专利技术提供一种索引数据插入方法及系统,用以解决现有索引数据插入方法在大量随机插入和更新后出现的数据结构破坏、查询效率低等不足。 为解决上述技术问题,本专利技术提供了一种索引数据插入方法,应用于包含主索引的平衡树状的数据结构,所述索引数据插入方法包括以下步骤: 获取大小达到第一设定阈值的目标子索引; 将所述目标子索引融合到所述主索引中。 进一步地,所述目标子索引的构造方法为: 在所述主索引的大小达到第二设定阈值时构造所述目标子索引,并将待添加的索引数据插入所述目标子索引。 进一步地,所述构造所述目标子索引,并将待添加的索引数据插入所述目标子索引具体为: 构造含有设定个节点层的目标子索引; 将被查询的频率最高的待添加的索引数据放入所述目标子索引的最高节点层的节点中;将被查询的频率最低的待添加的索引数据放入所述目标子索引的最低节点层的节点中,将被查询的频率介于最高频率和最低频率之间的待添加的索引数据按被查询的频率的大小放入所述最高节点层和所述最低节点层之间的节点层的节点中。 进一步地,所述将所述目标子索引融合到所述主索引中具体为: 从所述达到所述第一设定阈值的所述目标子索引的最低节点层中的最小节点向最大节点扫描,复制扫描到的所述最小节点到所述最大节点的路径上的待添加的索引数据,按设定方法将所述路径上的待添加的索引数据融合到所述主索引中。 进一步地,所述设定方法为平衡树数据插入法。 进一步地,所述按设定方法将所述路径上的待添加的索引数据融合到所述主索引中之后还包括: 删除所述达到所述第一设定阈值的所述目标子索引。 进一步地,所述融合操作的隔离级别为可反复读操作。 进一步地,所述索引数据插入方法还包括: 若所述主索引的大小没有达到所述第二设定阈值,则将待添加的索引数据插入所述主索引。 进一步地,所述索引数据插入方法还包括: 若所述目标子索引的大小没有达到所述第一设定阈值,则将索引数据插入所述子索引。 本专利技术还提供了一种索引数据插入系统,应用于包含主索引的平衡树状的数据结构,所述索引数据插入系统包括: 目标子索引获取单元,用于获取大小达到第一设定阈值的目标子索引; 索引融合单元,用于将所述目标子索引融合到所述主索引中。 进一步地,所述目标子索引获取单元包括: 第一目标子索引构建单元,用于在所述主索引的大小达到第二设定阈值时构造所述目标子索引,并将待添加的索引数据插入所述目标子索引。 进一步地,还包括: 第二目标子索引构建单元,用于在所述目标子索引的大小达到第一设定阈值时,构造下一个目标子索引。 进一步地,还包括: 阈值查询单元,用于查询所述主索引的大小是否达到第二设定阈值或查询所述目标子索引的大小是否达到第一设定阈值,并将查询结果发送给所述第一目标子索引构建单元、所述第二目标子索引构建单元或所述索引融合单元。 和现有技术相比,本专利技术的上述技术方案的有益效果如下: 上述技术方案中,通过将子索引整体性插入主索引,大大减少了对数据结构的破坏,便于数据的查询和其他操作;保证了主索引的层次固定和结构稳定。 【附图说明】 图1表示本专利技术实施例1的流程图; 图2表示本专利技术实施例2的结构图; 图3表示本专利技术实施例3的结构图; 图4表示本专利技术实施例4的结构图。 【具体实施方式】 下面结合附图和实施例,对本专利技术的【具体实施方式】作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。 为了解决现有索引数据插入方法在大量随机插入和更新后出现的数据结构破坏、查询效率低等不足,本专利技术提供了索引数据插入方法及系统。 实施例1 本专利技术提供了一种索引数据插入方法,该方法应用各种数据管理系统,如oracle、DB2、sybase、informix、SQL Server等。更确切地,是应用于包含主索引的平衡树状的数据结构。对于新增加的数据,多数现有方法是直接在主索引中进行插入操作,当需要删除数据时,直接从主索引中删除。经过大量的插入和删除操作后,使得数据的连贯性遭到破坏。使得对数据进行的插入、删除、查询或其他操作越来越慢,甚至出现操作无法实现对应的功能。为此,所以本专利技术提出了一种数据插入方法,该方法包括以下步骤: S1:获取大小达到第一设定阈值的目标子索引; S2:将所述目标子索引融合到所述主索引中。本专利技术通过将目标子索引整体性插入主索引,大大减少了数据结构的破坏,便于数据的查询和其他操作。本实施例的流程图如图1所示。 为了实现上述步骤,首先要考虑的是如何构建目标子索引。目标子索引是为了对要插入的待添加的索引数据进行缓冲的,即,将要插入的待添加的索引数据先插入目标子索引,然后再将目标子索引融入主索引。这样就减少了插入主索引的次数,保证了主索引的结构稳定。 因此,步骤SI具体包括: Sll:在所述主索引的大小达到第二设定阈值时构造所述目标子索引,并将待添加的索引数据插入所述目标子索引。若所述主索引的大小没有达到所述第二设定阈值,则将待添加的索引数据插入所述主索引。 本专利技术首先判断所述主索引的大小,优先保证主索引的层次固定和结构稳定。在所述主索引的大小达到第二设定阈值时才构建目标子索引,既保证了所述主本文档来自技高网...
【技术保护点】
一种索引数据插入方法,应用于包含主索引的平衡树状的数据结构,其特征在于,所述索引数据插入方法包括以下步骤:获取大小达到第一设定阈值的目标子索引;将所述目标子索引融合到所述主索引中。
【技术特征摘要】
1.一种索引数据插入方法,应用于包含主索引的平衡树状的数据结构,其特征在于,所述索引数据插入方法包括以下步骤: 获取大小达到第一设定阈值的目标子索引; 将所述目标子索引融合到所述主索引中。2.如权利要求1所述的索引数据插入方法,其特征在于,所述目标子索引的构造方法为: 在所述主索引的大小达到第二设定阈值时构造所述目标子索引,并将待添加的索引数据插入所述目标子索引。3.如权利要求2所述的索引数据插入方法,其特征在于,所述构造所述目标子索引,并将待添加的索引数据插入所述目标子索引具体为: 构造含有设定个节点层的目标子索引; 将被查询的频率最高的待添加的索引数据放入所述目标子索引的最高节点层的节点中;将被查询的频率最低的待添加的索引数据放入所述目标子索引的最低节点层的节点中,将被查询的频率介于最高频率和最低频率之间的待添加的索引数据按被查询的频率的大小放入所述最高节点层和所述最低节点层之间的节点层的节点中。4.如权利要求3所述的索引数据插入方法,其特征在于,所述将所述目标子索引融合到所述主索引中具体为: 从所述达到所述第一设定阈值的所述目标子索引的最低节点层中的最小节点向最大节点扫描,复制扫描到的所述最小节点到所述最大节点的路径上的待添加的索引数据,按设定方法将所述路径上的待添加的索引数据融合到所述主索引中。5.如权利要求4所述的索引数据插入方法,其特征在于,所述设定方法为平衡树数据插入法。6.如权利要求4所述的索引数据插入方法,其特征在于,所述按设定方法将所述路径上的待添加的索引数据融合到所述主索引中之后还包括:...
【专利技术属性】
技术研发人员:郑程光,孙伟丰,罗正海,李浩,何奇,刘慧娟,王浩,郭春庭,
申请(专利权)人:北大方正集团有限公司,方正信息产业控股有限公司,上海方正数字出版技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。