一种数据库的b树索引的生成方法及装置的制作方法

文档序号:6585131阅读:231来源:国知局
专利名称:一种数据库的b树索引的生成方法及装置的制作方法
技术领域
本发明属于数据库处理技术领域,特别涉及一种数据库的B树索引的生成方法及 装置。
背景技术
随着智能卡技术的发展,卡内存放的数据量越来越大,传统的文件系统,从中寻找 特定的数据就要遍历整个文件,效率低下。为了克服这一缺陷,达到快速查找数据的目的, 我们在智能卡中引进了一种数据库索引技术,即B树索引技术。 B树索引是指把索引组织成B树数据结构来达到高效执行索引的目的,B树是一 种多路的平衡查找树,一颗M阶的B树,需满足下列性质树中每个节点至多有M棵子树; 若根节点不是叶节点,则至少有两棵子树;除根之外的所有非终端节点至少有[m/2]棵子 树;所有的非终端节点(根节点和导航节点)包含下列信息数据(n, A0, Kl, Al, K2, A2,
K3,A3......Kn,An),其中Ki为关键字,且Ki < K(i+1) {i = 1,2. ,n_l},Ai{i = 0. n}
为指向子树根节点的指针,且指针A(i-l)所指子树中所有节点的关键字均小于KiU = 1, 2. . . n} ,An所指子树中所有结点的关键字均大于Kn,n{[M/2]-l < = n < = M_l}为关键字 的个数。所有的叶子节点都出现在同一层次上,并且不带指针信息。如图l所示,图l是一 棵索引树示意图,包含根节点(包括记录R18的节点),导航节点(如包括记录R4、 R7、 RIO 和R15的节点)和叶节点(如包括记录Rl、 R2和R3的节点)。其中根节点和导航节点中 的记录包括关键字和指针,叶节点中的记录只包括关键字但不包括指针。各节点中可容纳 的记录数量也为n,并也应满足n {[M/2] -1 < = n < = M_l}。 现有B树索引算法的主要内容包括对B树各节点中的记录的查询,删除,插入,更 新操作,对B树的查询操作有标准的算法实现,而对B树的删除,插入,更新因为涉及到对B 树的平衡操作,所以会根据具体的硬件和软件环境具体实现。现有的B树索引算法的实现 为了达到快速执行索引的目的,需要分为删除,插入,更新(可分解为删除和插入)操作,占 用大量的内存对硬件的要求较高。

发明内容
为了解决现有B树索引算法需要占用大量的内存,对硬件的要求较高的问题,本 发明实施例提供了一种数据库的B树索引的生成方法,包括 对索引树一个节点进行插入或删除记录操作前确定会导致索引树不平衡,则获取
待更新节点中所有记录,待更新节点为进行操作的节点和其相邻的兄弟节点; 以获取的记录和待插入的记录作为待重新分配的记录,或以除待删除的记录之外
的获取的记录作为待重新分配的记录,计算待重新分配的记录的大小总和; 根据单个节点容纳记录的大小和待重新分配的记录的大小总和,重新计算生成新
的平衡索引树所需新节点的数量和各新节点容纳的记录数量; 根据新节点的数量和各新节点容纳的记录数量将待重新分配的记录分配到新节树。 同时本发明实施例还提供一种数据库的B树索引的生成方法,包括 对阶数为M的索引树一个节点进行插入或删除记录操作前确定会导致索引树不
平衡,则获取待更新节点中所有记录,待更新节点为进行操作的节点和其相邻的兄弟节
点; 将获取的记录载入到第一内存空间中,把第一内存空间中的记录拷贝到第二内存 空间,第二内存空间最多可容纳M个记录; 若生成新的平衡索引树所需的新节点中需包括待插入记录,则记录拷贝后第二内 存空间中包括除待插入记录之外的生成新节点所需的记录,将存于第二内存空间中生成新 节点所需的记录以及待插入记录导入到第一内存空间中,并进行标记用于生成新节点,以 新节点代替待更新节点生成新的平衡索引树; 若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括生成新节
点所需的全部记录,将存于第二内存空间生成新节点所需的全部记录导入到第一内存空间
中,并进行标记用于生成新节点,以新节点代替待更新节点生成新的平衡索引树。
同时本发明实施例还提供一种数据库的B树索引的生成装置,包括 第一获取模块用于对索引树一个节点进行插入或删除记录操作前确定会导致索
引树不平衡,则获取待更新节点中所有记录,待更新节点为进行操作的节点和其相邻的兄
弟节点; 第一计算模块用于以获取的记录和待插入的记录作为待重新分配的记录,或以 除待删除的记录之外的获取的记录作为待重新分配的记录,计算待重新分配的记录的大小 总和; 第二计算模块用于根据单个节点容纳记录的大小和待重新分配的记录的大小总
和,重新计算生成新的平衡索引树所需新节点的数量和各新节点容纳的记录数量; 索引树生成模块用于根据新节点的数量和各新节点容纳的记录数量将待重新分
配的记录分配到新节点中,并以新节点代替待更新节点生成新的平衡索引树。
同时本发明实施例还提供一种数据库的B树索引的生成装置,包括 第二获取模块用于对阶数为M的索引树一个节点进行插入或删除记录操作前确
定会导致索引树不平衡,则获取待更新节点中所有记录,待更新节点为进行操作的节点和
其相邻的兄弟节点; 记录拷贝模块用于将获取的记录载入到第一内存空间中,把第一内存空间中的 记录拷贝到第二内存空间,第二内存空间最多可容纳M个记录; 若生成新的平衡索引树所需的新节点中需包括待插入记录,则记录拷贝后第二内 存空间中包括除待插入记录之外的生成新节点所需的记录,将存于第二内存空间中生成新 节点所需的记录以及待插入记录导入到第一内存空间中,并进行标记用于生成新节点,以 新节点代替待更新节点生成新的平衡索引树; 若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括新节点中 的全部记录,将存于第二内存空间的新节点中的全部记录导入到第一内存空间中,并进行 标记用于生成新节点,以新节点代替待更新节点生成新的平衡索引树。 由上述本发明提供的具体实施方案可以看出,正是由于重新计算生成新的平衡索引树所需新节点的数量和各新节点容纳的记录数量并据此重新分配,不需区分插入或删除 操作,占用内存少,对硬件的要求较低。


图1为现有技术中的一棵索引树示意图; 图2为本发明提供的第一实施例方法流程图; 图3为本发明提供的第一实施例提供的索引树的示意图; 图4-6为本发明提供的第一实施例生成新索引树的示意图; 图7为本发明提供的第二实施例装置结构图; 图8为本发明提供的第三实施例装置结构图。
具体实施例方式
为了解决用户身份验证的安全性较低的问题,本发明提供的第一实施例是一种数
据库的B树索引的生成方法,方法流程如图2所示,包括 步骤101 :对B树中待插入或删除记录的节点10进行查找。 步骤102 :在对节点10进行插入或删除记录操作前进行判断,如果节点10空间足 够,则执行插入操作结束。否则转步骤103。如果删除记录后,节点IO空间大于等于一半, 则执行删除操作结束。否则转步骤103。 步骤103 :查找父节点以此来获取节点10及其左兄弟节点11和右兄弟节点12, 3 个节点中的全部记录。 步骤104 :分配一段内存空间即01d,载入节点10以及其左兄弟节点11和右兄弟 节点12,3个节点中的全部记录,对应的内存指针分别为即01d
,即01d[l],即01d[2]。
步骤105 :计算上述3个节点中的记录的大小和插入的记录的大小之和,或与删除 的记录的大小之差。 步骤106 :根据步骤105的计算结果以及单个节点容纳记录的大小,重新计算每个 新节点能容纳的记录数量和需要多少新节点,重新利用即Old[O],即Old[l],即01d[2]来 作为新节点的内存指针。 步骤107 :分配一新内存空间apcell,从内存空间即01d中把需要的数据拷贝到 apcell[]中,然后再从apcell[]中把数据导入到内存空间即01d中并分配对应的内存指 针。 步骤108 :以分配的内存指针将内存空间即01d中的记录分配到新节点中,并以新 节点代替待更新节点生成新的平衡索引树。 由上述步骤可知,生成新的索引树的过程并不区分是插入记录操作还是删除记录
操作,因此本实施例中的方法占用内存少非常适用于智能卡等内存小的环境使用。 其中步骤101中,对节点中记录的操作包括插入、删除和更新记录,其中更新记
录可分解为删除记录和插入记录两部分,因此本实施例仅以插入和更新记录进行说明。 其中步骤102中,节点IO进行插入或删除记录操作前需进行判断,判断节点10的
空间是否符合插入或删除记录的条件,例如本实施例中B树的阶数M为6,每个节点可容纳
的记录数为n,且满足n{[M/2]-l < = n < = M_l},则每个节点可容纳的记录数的范围为2-5个,若插入1个记录时发现节点10中已有4个记录,则如果插入后节点10中有5个记 录,则认为节点10空间足够,若节点10已有5个记录,则插入后节点10中有6个记录,则 认为节点10空间不够。同样,若删除1个记录时发现节点10中已有3个记录,则删除后节 点10中有2个记录,则认为节点IO大于等于一半,若节点10已有2个记录,则删除后节点 10中有1个记录,则认为节点10空间小于一半。无论是节点10空间不够进行插入操作,还 是节点10空间小于一半(当然若删除记录后节点10中的记录不得小于2)进行删除操作, 都会导致B树不平衡,此时需执行步骤103。 其中步骤103中,查找父节点时,还可能是节点IO只有左兄弟节点ll,没有右兄 弟节点,或只有右兄弟节点12没有左兄弟节点,此时就只获取节点IO和左兄弟节点中的记 录,或者只获取节点IO和右兄弟节点中的记录。后续计算时也只是根据2个节点中的记录 进行计算无论是节点10、节点11还是节点12,这3个节点都是作为待更新节点,在后续步 骤中待更新节点将被新节点代替。 其中步骤104中,内存空间ap01d用于存储节点10、节点11和节点12中的全部记 录,本实施例中本步骤是为各节点中的记录分别分配内存指针,当然也可以不为各节点中 的记录分别分配内存指针。 其中步骤105中,本实施例中每个记录的大小为4Bytes,3个节点中总共包括 12个记录则总的记录大小为48Bytes,加上插入的1个记录,13个记录总的记录大小为 52Bytes。同样12个记录总的记录大小为48Bytes,删除1个记录,11个记录总的记录大小 为44Bytes本实施例中,无论是3个节点中总共包括的12个记录,加上1个记录后的13个 记录,还是删除一个记录后的11个记录,都是作为待重新分配的记录。
其中步骤106中,根据步骤105的计算结果52Bytes以及单个节点容纳记录数为 2-5个对应的记录的大小8-20Bytes,重新计算需要3个新节点,每个新节点能容纳的记录 数量非别为4个、5个、4个,或5个、3个、5个。同样根据步骤105的计算结果44Bytes,以 及单个节点容纳记录数为2-5个对应的记录的大小8-20Bytes,重新计算需要3个新节点, 每个新节点能容纳的记录数量分别为4个、4个、3个,或5个、3个、3个。
其中步骤107中,新内存空间apcell最多可容纳6个记录,即大小为24Bytes。根 据步骤106计算的新节点数,和每个新节点能容纳的记录数量,分次将步骤105中得到的待 重新分配的记录,按生成各新节点所需拷贝到新内存空间即cell中、然后再由新内存空间 即cell中将生成新节点所需的记录导入到内存空间即01d中,并通过内存指针即Old[O], 即01d[l],即01d[2]进行标记,如内存指针即Old[O]所标记的内存空间中的记录用于生成 新节点13。插入记录R13之前如图3所示的索引树包括节点11(包括R2、R5、R6、R7、R8)、 节点10 (包括R12、R14、R15、R16、R19)和节点12 (包括R20和R21)总共有12个记录,即记 录R2、R5、R6、R7、R8、R12、R14、R15、R16、R19、R20和R21,节点11、节点10和节点12共有 一个父节点100、生成的新索引树父节点100下需要3个新节点,新节点13、新节点14和新 节点15能容纳的记录数量分别为4个、5个、4个,生成新索引树示意图如图4所示。将内 存空间即01d中的记录R2、 R5、 R6、 R7拷贝到新内存空间apcell中,将新内存空间apcell 中的记录R2、 R5、 R6、 R7,导入到内存空间ap01d中的记录R2、 R5、 R6、 R7所在位置,并以内 存指针即Old[O]标识作为生成节点13的记录。将内存空间即01d中的记录R8、R12、R14、 R15、R16拷贝到新内存空间即ce11中,使得此时的新内存空间apcell中的记录有R8、R12、R14、R15、R16,再将其中的R8、R12、R14、R15以及插入记录R13导入到内存空间即01d中的 记录R8、 R12、 R14、 R15、 R16所在位置,并以内存指针即Old[l]标识作为生成节点14的记 录。将内存空间ap01d中的记录R19、R20和R21拷贝到新内存空间apcell中,使得此时的 新内存空间即cell中的记录有R16、 R19、 R20和R21,将记录R16、 R19、 R20导入到内存空 间即01d中的记录R19、 R20和R21的位置,将记录R21导入到内存空间即01d中的一个其 它位置,并以内存指针即01d[2]标识作为生成节点15的记录。 删除操作时类似,例如节点11 (包括R2、 R5、 R6、 R7、 R8)、节点IO(包括R12、 R14) 和节电12 (包括R15、 R16、 R19、 R20和R21) , 3个节点共12个记录,分别为R2、 R5、 R6、 R7、 R8、 R12、 R14、 R15、 R16、 R19、 R20和R21,重新计算需要3个新节点,新节点13、新节点14和 新节点15能容纳的记录数量非别为4个、4个、3个,删除记录R12,将记录R2、R5、R6、R7由 内存空间ap01d拷贝到新内存空间apcell中,由新内存空间apcell中将R2、R5、R6、R7导 入到内存空间即01d R2、 R5、 R6、 R7所在位置,并以内存指针即Old[O]标识作为生成节点 13的记录,将记录R8、R14、R15、R16由内存空间ap01d拷贝到新内存空间寧el1中,由新 内存空间apcell中将R8、 R14、 R15、 R16导入到内存空间即01d R8、 R12、 R14、 R15所在位 置,并以内存指针apOld[l]标识作为生成节点14的记录。后续步骤与插入操作类似,此处 不再赘述。 本实施例的原则是,将由获取的总共12个记录,R2、R5、R6、R8、R9、R12、R14、R15、 R16、 R19、 R20禾口 R21载入到内存空间ap01d中,把内存空间ap01d中的记录拷贝到内存空 间apcell中,内存空间即cell中最多可容纳6(本实施例中的M值)个记录。以插入记录 为例,对于新节点14中需包括待插入记录R13,则把内存空间即01d中的记录拷贝到内存空 间apcell后,内存空间apcell中包括除待插入记录R13之外的生成新节点14所需的记录 R8、 R12、 R14、 R15,将存于内存空间apcell中的生成新节点所需的记录R8、 R12、 R14、 R15, 以及待插入记录R13导入到内存空间即01d中,并进行标记用于生成新节点14。
生成新索引树需要由原来的节点10、节点11、节点12,增加新节点数量变为节点 23、节点24、节点25、节点25的示意图如图5所示,生成新索引树需要由原来的节点10、节 点11、节点12,减少新节点数量新节点数量变为节点33、节点34的示意图如图6所示(本 示意图中B树的阶数为7)。 以插入记录为例,对于新节点13、 15中不需包括待插入记录,则进行记录拷贝后 内存空间apcell包括生成新节点所需的全部记录,将存于内存空间即cel1中生成新节点 所需的全部记录导入到内存空间ap01d中,并进行标记用于生成新节点。删除记录对于新 节点13、14、15类同。 因为生成新节点的内存空间是重利用存储原有记录的内存空间即01d,所以从内 存空间即01d中把需要的数据拷贝到apcell []中(数据不会多于一个记录的大小),然后 再从apcell []中把数据导入到内存空间即01d并标识,作为存储生成新节点的记录的内 存空间,如果原标识不够就重新分配新标识如即01d[3],如果原标识如即01d[2]多余就释 放。 本步骤中生成将记录重新分配到新节点的方法,不限于之前的步骤,具体而言,节 点13包括记录R2 、 R5 、 R6 、 R8 、 R9 ,若插入记录R7则会导致B树不平衡,则将R2 、 R5 、 R6 、 R8 、 R9和R7作为待重新分配的记录,根据本步骤中的方法直接重新分配到新节点,若删除记录R2与前述的删除方法类同,此处不再赘述。 其中步骤108中,以分配的内存指针即01d
、即01d[1]和即01d[2]将内存空间
即01d中的记录分配到新节点13、新节点14、新节点15中,并以新节点13、新节点14、新节
点15代替待更新节点(节点10、节点11、节点12)生成新的平衡索引树。 本发明提供的第二实施例是一种数据库的B树索引的装置,其结构如图7所示,包
括 第一获取模块201 :用于对索引树一个节点进行插入或删除记录操作前确定会导 致索引树不平衡,则获取待更新节点中所有记录,待更新节点为进行操作的节点和其相邻 的兄弟节点; 第一计算模块202 :用于以获取的记录和待插入的记录作为待重新分配的记录, 或以除待删除的记录之外的获取的记录作为待重新分配的记录,计算待重新分配的记录的 大小总和; 第二计算模块203 :用于根据单个节点容纳记录的大小和待重新分配的记录的大
小总和,重新计算生成新的平衡索引树所需新节点的数量和各新节点容纳的记录数量; 索引树生成模块204 :用于根据新节点的数量和各新节点容纳的记录数量将待重
新分配的记录分配到新节点中,并以新节点代替待更新节点生成新的平衡索引树。 进一步,第一获取模块201 :还用于对阶数为M的索引树节点进行插入记录操作前
进行预判断,若该节点中的记录数量与待插入记录的数量之和大于等于M,则导致索引树不
平衡;或 对阶数为M的索引树节点进行删除记录操作前进行预判断,若该节点中除待删除
的记录之外的记录数量小于M/2的整数部分减1且小于2个,则导致索引树不平衡。 进一步,索引树生成模块204 :还用于将获取的记录载入到第一内存空间中,把第
一内存空间中的记录拷贝到第二内存空间,第二内存空间最多可容纳M个记录; 若新节点中需包括待插入记录,则记录拷贝后第二内存空间中包括除待插入记录
之外的生成新节点所需的记录,将存于第二内存空间中生成新节点所需的记录以及待插入
记录导入到第一内存空间中,并进行标记用于生成新节点; 若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括生成新节 点所需的全部记录,将存于第二内存空间生成新节点所需的全部记录导入到第一内存空间 中,并进行标记用于生成新节点。 进一步,还包括,操作执行模块205 :用于对索引树节点进行插入或删除记录操作 前确定不会导致索引树不平衡,则进行插入或删除记录操作。 本发明提供的第三实施例是一种数据库的B树索引的装置,其结构如图8所示,包 括 第二获取模块301 :用于对阶数为M的索引树一个节点进行插入或删除记录操作 前确定会导致索引树不平衡,则获取待更新节点中所有记录,待更新节点为进行操作的节 点和其相邻的兄弟节点; 记录拷贝模块302 :用于将获取的记录载入到第一内存空间中,把第一内存空间 中的记录拷贝到第二内存空间,第二内存空间最多可容纳M个记录; 若新节点中需包括待插入记录,则记录拷贝后第二内存空间中包括除待插入记录
10之外的生成新节点所需的记录,将存于第二内存空间中生成新节点所需的记录以及待插入 记录导入到第一内存空间中,并进行标记用于生成新节点,以新节点代替待更新节点生成 新的平衡索引树; 若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括新节点中 的全部记录,将存于第二内存空间的新节点中的全部记录导入到第一内存空间中,并进行 标记用于生成新节点,以新节点代替待更新节点生成新的平衡索引树。 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
权利要求
一种数据库的B树索引的生成方法,其特征在于,包括对索引树一个节点进行插入或删除记录操作前确定会导致索引树不平衡,则获取待更新节点中所有记录,待更新节点为进行操作的节点和其相邻的兄弟节点;以获取的记录和待插入的记录作为待重新分配的记录,或以除待删除的记录之外的获取的记录作为待重新分配的记录,计算待重新分配的记录的大小总和;根据单个节点容纳记录的大小和待重新分配的记录的大小总和,重新计算生成新的平衡索引树所需新节点的数量和各新节点容纳的记录数量;根据新节点的数量和各新节点容纳的记录数量将待重新分配的记录分配到新节点中,并以新节点代替待更新节点生成新的平衡索引树。
2. 如权利要求1所述的方法,其特征在于,对索引树一个节点进行插入或删除记录操 作前确定会导致索引树不平衡包括对阶数为M的索引树节点进行插入记录操作前进行预判断,若该节点中的记录数量与 待插入记录的数量之和大于等于M,则导致索引树不平衡;或对阶数为M的索引树节点进行删除记录操作前进行预判断,若该节点中除待删除的记 录之外的记录数量小于M/2的整数部分减1且小于2个,则导致索引树不平衡。
3. 如权利要求2所述的方法,其特征在于,将待重新分配的记录分配到新节点中具体为将获取的记录载入到第一内存空间中,把第一内存空间中的记录拷贝到第二内存空 间,第二内存空间最多可容纳M个记录;若新节点中需包括待插入记录,则记录拷贝后第二内存空间中包括除待插入记录之外 的生成新节点所需的记录,将存于第二内存空间中生成新节点所需的记录以及待插入记录 导入到第一内存空间中,并进行标记用于生成新节点;若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括生成新节点所 需的全部记录,将存于第二内存空间生成新节点所需的全部记录导入到第一内存空间中, 并进行标记用于生成新节点。
4. 如权利要求1所述的方法,其特征在于,对索引树节点进行插入或删除记录操作前 确定不会导致索引树不平衡,则进行插入或删除记录操作。
5. 如权利要求1所述的方法,其特征在于,相邻的兄弟节点为左兄弟节点和右兄弟节 点,或相邻的兄弟节点为左兄弟节点,或相邻的兄弟节点为右兄弟节点。
6. —种数据库的B树索引的生成方法,其特征在于,包括对阶数为M的索引树一个节点进行插入或删除记录操作前确定会导致索引树不平衡, 则获取待更新节点中所有记录,待更新节点为进行操作的节点和其相邻的兄弟节点;将获取的记录载入到第一内存空间中,把第一内存空间中的记录拷贝到第二内存空 间,第二内存空间最多可容纳M个记录;若生成新的平衡索引树所需的新节点中需包括待插入记录,则记录拷贝后第二内存空 间中包括除待插入记录之外的生成新节点所需的记录,将存于第二内存空间中生成新节点 所需的记录以及待插入记录导入到第一内存空间中,并进行标记用于生成新节点,以新节 点代替待更新节点生成新的平衡索引树;若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括生成新节点所需的全部记录,将存于第二内存空间生成新节点所需的全部记录导入到第一内存空间中, 并进行标记用于生成新节点,以新节点代替待更新节点生成新的平衡索引树。
7. —种数据库的B树索引的装置,其特征在于,包括第一获取模块用于对索引树一个节点进行插入或删除记录操作前确定会导致索引树 不平衡,则获取待更新节点中所有记录,待更新节点为进行操作的节点和其相邻的兄弟节 点;第一计算模块用于以获取的记录和待插入的记录作为待重新分配的记录,或以除待 删除的记录之外的获取的记录作为待重新分配的记录,计算待重新分配的记录的大小总 和;第二计算模块用于根据单个节点容纳记录的大小和待重新分配的记录的大小总和, 重新计算生成新的平衡索引树所需新节点的数量和各新节点容纳的记录数量;索引树生成模块用于根据新节点的数量和各新节点容纳的记录数量将待重新分配的 记录分配到新节点中,并以新节点代替待更新节点生成新的平衡索引树。
8. 如权利要求7所述的装置,其特征在于,第一获取模块还用于对阶数为M的索引树 节点进行插入记录操作前进行预判断,若该节点中的记录数量与待插入记录的数量之和大 于等于M,则导致索引树不平衡;或对阶数为M的索引树节点进行删除记录操作前进行预判断,若该节点中除待删除的记 录之外的记录数量小于M/2的整数部分减1且小于2个,则导致索引树不平衡。
9. 如权利要求8所述的装置,其特征在于,索引树生成模块还用于将获取的记录载入到第一内存空间中,把第一内存空间中的记录拷贝到第二内存空间,第二内存空间最多可容纳M个记录;若新节点中需包括待插入记录,则记录拷贝后第二内存空间中包括除待插入记录之外 的生成新节点所需的记录,将存于第二内存空间中生成新节点所需的记录以及待插入记录导入到第一内存空间中,并进行标记用于生成新节点;若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括生成新节点所 需的全部记录,将存于第二内存空间生成新节点所需的全部记录导入到第一内存空间中, 并进行标记用于生成新节点。
10. 如权利要求7所述的装置,其特征在于,还包括,操作执行模块用于对索引树节点进行插入或删除记录操作前确定不会导致索引树不平衡,则进行插入或删除记录操作。
11. 一种数据库的B树索引的装置,其特征在于,包括第二获取模块用于对阶数为M的索引树一个节点进行插入或删除记录操作前确定会 导致索引树不平衡,则获取待更新节点中所有记录,待更新节点为进行操作的节点和其相 邻的兄弟节点;记录拷贝模块用于将获取的记录载入到第一内存空间中,把第一内存空间中的记录 拷贝到第二内存空间,第二内存空间最多可容纳M个记录;若生成新的平衡索引树所需的新节点中需包括待插入记录,则记录拷贝后第二内存空 间中包括除待插入记录之外的生成新节点所需的记录,将存于第二内存空间中生成新节点 所需的记录以及待插入记录导入到第一内存空间中,并进行标记用于生成新节点,以新节 点代替待更新节点生成新的平衡索引树;若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括新节点中的全 部记录,将存于第二内存空间的新节点中的全部记录导入到第一内存空间中,并进行标记 用于生成新节点,以新节点代替待更新节点生成新的平衡索引树。
全文摘要
为了解决现有B树索引算法需要占用大量的内存,对硬件的要求较高的问题,本发明公开了一种数据库的B树索引的生成方法及装置,该方法包括对索引树一个节点进行插入或删除记录操作前确定会导致索引树不平衡,则获取待更新节点中所有记录,以获取的记录并根据插入、删除记录得到待重新分配的记录,计算待重新分配的记录的大小总和,同时根据单个节点容纳记录的大小,重新计算生成新的平衡索引树所需新节点的数量和各新节点容纳的记录数量,以此将待重新分配的记录分配到新节点中,并生成新的平衡索引树,由于通过重新分配的记录的大小总和单个节点容纳记录的大小重新计算,并据此重新分配,不需区分插入或删除操作,占用内存少对硬件要求低。
文档编号G06F17/30GK101763415SQ20091024256
公开日2010年6月30日 申请日期2009年12月16日 优先权日2009年12月16日
发明者王国猛 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1