CN101763415A - 一种数据库的b树索引的生成方法及装置 - Google Patents
一种数据库的b树索引的生成方法及装置 Download PDFInfo
- Publication number
- CN101763415A CN101763415A CN200910242567A CN200910242567A CN101763415A CN 101763415 A CN101763415 A CN 101763415A CN 200910242567 A CN200910242567 A CN 200910242567A CN 200910242567 A CN200910242567 A CN 200910242567A CN 101763415 A CN101763415 A CN 101763415A
- Authority
- CN
- China
- Prior art keywords
- record
- node
- memory headroom
- new
- new node
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
为了解决现有B树索引算法需要占用大量的内存,对硬件的要求较高的问题,本发明公开了一种数据库的B树索引的生成方法及装置,该方法包括:对索引树一个节点进行插入或删除记录操作前确定会导致索引树不平衡,则获取待更新节点中所有记录,以获取的记录并根据插入、删除记录得到待重新分配的记录,计算待重新分配的记录的大小总和,同时根据单个节点容纳记录的大小,重新计算生成新的平衡索引树所需新节点的数量和各新节点容纳的记录数量,以此将待重新分配的记录分配到新节点中,并生成新的平衡索引树,由于通过重新分配的记录的大小总和单个节点容纳记录的大小重新计算,并据此重新分配,不需区分插入或删除操作,占用内存少对硬件要求低。
Description
技术领域
本发明属于数据库处理技术领域,特别涉及一种数据库的B树索引的生成方法及装置。
背景技术
随着智能卡技术的发展,卡内存放的数据量越来越大,传统的文件系统,从中寻找特定的数据就要遍历整个文件,效率低下。为了克服这一缺陷,达到快速查找数据的目的,我们在智能卡中引进了一种数据库索引技术,即B树索引技术。
B树索引是指把索引组织成B树数据结构来达到高效执行索引的目的,B树是一种多路的平衡查找树,一颗M阶的B树,需满足下列性质:树中每个节点至多有M棵子树;若根节点不是叶节点,则至少有两棵子树;除根之外的所有非终端节点至少有[m/2]棵子树;所有的非终端节点(根节点和导航节点)包含下列信息数据:(n,A0,K1,A1,K2,A2,K3,A3......Kn,An),其中Ki为关键字,且Ki<K(i+1){i=1,2...,n-1},Ai{i=0...n}为指向子树根节点的指针,且指针A(i-1)所指子树中所有节点的关键字均小于Ki{i=1,2...n},An所指子树中所有结点的关键字均大于Kn,n{[M/2]-1<=n<=M-1}为关键字的个数。所有的叶子节点都出现在同一层次上,并且不带指针信息。如图1所示,图1是一棵索引树示意图,包含根节点(包括记录R18的节点),导航节点(如包括记录R4、R7、R10和R15的节点)和叶节点(如包括记录R1、R2和R3的节点)。其中根节点和导航节点中的记录包括关键字和指针,叶节点中的记录只包括关键字但不包括指针。各节点中可容纳的记录数量也为n,并也应满足n{[M/2]-1<=n<=M-1}。
现有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。如果删除记录后,节点10空间大于等于一半,则执行删除操作结束。否则转步骤103。
步骤103:查找父节点以此来获取节点10及其左兄弟节点11和右兄弟节点12,3个节点中的全部记录。
步骤104:分配一段内存空间apOld,载入节点10以及其左兄弟节点11和右兄弟节点12,3个节点中的全部记录,对应的内存指针分别为apOld[0],apOld[1],apOld[2]。
步骤105:计算上述3个节点中的记录的大小和插入的记录的大小之和,或与删除的记录的大小之差。
步骤106:根据步骤105的计算结果以及单个节点容纳记录的大小,重新计算每个新节点能容纳的记录数量和需要多少新节点,重新利用apOld[0],apOld[1],apOld[2]来作为新节点的内存指针。
步骤107:分配一新内存空间apcell,从内存空间apOld中把需要的数据拷贝到apcell[]中,然后再从apcell[]中把数据导入到内存空间apOld中并分配对应的内存指针。
步骤108:以分配的内存指针将内存空间apOld中的记录分配到新节点中,并以新节点代替待更新节点生成新的平衡索引树。
由上述步骤可知,生成新的索引树的过程并不区分是插入记录操作还是删除记录操作,因此本实施例中的方法占用内存少非常适用于智能卡等内存小的环境使用。
其中步骤101中,对节点中记录的操作包括:插入、删除和更新记录,其中更新记录可分解为删除记录和插入记录两部分,因此本实施例仅以插入和更新记录进行说明。
其中步骤102中,节点10进行插入或删除记录操作前需进行判断,判断节点10的空间是否符合插入或删除记录的条件,例如本实施例中B树的阶数M为6,每个节点可容纳的记录数为n,且满足n{[M/2]-1<=n<=M-1},则每个节点可容纳的记录数的范围为2-5个,若插入1个记录时发现节点10中已有4个记录,则如果插入后节点10中有5个记录,则认为节点10空间足够,若节点10已有5个记录,则插入后节点10中有6个记录,则认为节点10空间不够。同样,若删除1个记录时发现节点10中已有3个记录,则删除后节点10中有2个记录,则认为节点10大于等于一半,若节点10已有2个记录,则删除后节点10中有1个记录,则认为节点10空间小于一半。无论是节点10空间不够进行插入操作,还是节点10空间小于一半(当然若删除记录后节点10中的记录不得小于2)进行删除操作,都会导致B树不平衡,此时需执行步骤103。
其中步骤103中,查找父节点时,还可能是节点10只有左兄弟节点11,没有右兄弟节点,或只有右兄弟节点12没有左兄弟节点,此时就只获取节点10和左兄弟节点中的记录,或者只获取节点10和右兄弟节点中的记录。后续计算时也只是根据2个节点中的记录进行计算无论是节点10、节点11还是节点12,这3个节点都是作为待更新节点,在后续步骤中待更新节点将被新节点代替。
其中步骤104中,内存空间apOld用于存储节点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中得到的待重新分配的记录,按生成各新节点所需拷贝到新内存空间apcell中、然后再由新内存空间apcell中将生成新节点所需的记录导入到内存空间apOld中,并通过内存指针apOld[0],apOld[1],apOld[2]进行标记,如内存指针apOld[0]所标记的内存空间中的记录用于生成新节点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所示。将内存空间apOld中的记录R2、R5、R6、R7拷贝到新内存空间apcell中,将新内存空间apcell中的记录R2、R5、R6、R7,导入到内存空间apOld中的记录R2、R5、R6、R7所在位置,并以内存指针apOld[0]标识作为生成节点13的记录。将内存空间apOld中的记录R8、R12、R14、R15、R16拷贝到新内存空间apcell中,使得此时的新内存空间apcell中的记录有R8、R12、R14、R15、R16,再将其中的R8、R12、R14、R15以及插入记录R13导入到内存空间apOld中的记录R8、R12、R14、R15、R16所在位置,并以内存指针apOld[1]标识作为生成节点14的记录。将内存空间apOld中的记录R19、R20和R21拷贝到新内存空间apcell中,使得此时的新内存空间apcell中的记录有R16、R19、R20和R21,将记录R16、R19、R20导入到内存空间apOld中的记录R19、R20和R21的位置,将记录R21导入到内存空间apOld中的一个其它位置,并以内存指针apOld[2]标识作为生成节点15的记录。
删除操作时类似,例如节点11(包括R2、R5、R6、R7、R8)、节点10(包括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由内存空间apOld拷贝到新内存空间apcell中,由新内存空间apcell中将R2、R5、R6、R7导入到内存空间apOld R2、R5、R6、R7所在位置,并以内存指针apOld[0]标识作为生成节点13的记录,将记录R8、R14、R15、R16由内存空间apOld拷贝到新内存空间apcell中,由新内存空间apcell中将R8、R14、R15、R16导入到内存空间apOld R8、R12、R14、R15所在位置,并以内存指针apOld[1]标识作为生成节点14的记录。后续步骤与插入操作类似,此处不再赘述。
本实施例的原则是,将由获取的总共12个记录,R2、R5、R6、R8、R9、R12、R14、R15、R16、R19、R20和R21载入到内存空间apOld中,把内存空间apOld中的记录拷贝到内存空间apcell中,内存空间apcell中最多可容纳6(本实施例中的M值)个记录。以插入记录为例,对于新节点14中需包括待插入记录R13,则把内存空间apOld中的记录拷贝到内存空间apcell后,内存空间apcell中包括除待插入记录R13之外的生成新节点14所需的记录R8、R12、R14、R15,将存于内存空间apcell中的生成新节点所需的记录R8、R12、R14、R15,以及待插入记录R13导入到内存空间apOld中,并进行标记用于生成新节点14。
生成新索引树需要由原来的节点10、节点11、节点12,增加新节点数量变为节点23、节点24、节点25、节点25的示意图如图5所示,生成新索引树需要由原来的节点10、节点11、节点12,减少新节点数量新节点数量变为节点33、节点34的示意图如图6所示(本示意图中B树的阶数为7)。
以插入记录为例,对于新节点13、15中不需包括待插入记录,则进行记录拷贝后内存空间apcell包括生成新节点所需的全部记录,将存于内存空间apcell中生成新节点所需的全部记录导入到内存空间apOld中,并进行标记用于生成新节点。删除记录对于新节点13、14、15类同。
因为生成新节点的内存空间是重利用存储原有记录的内存空间apOld,所以从内存空间apOld中把需要的数据拷贝到apcell[]中(数据不会多于一个记录的大小),然后再从apcell[]中把数据导入到内存空间apOld并标识,作为存储生成新节点的记录的内存空间,如果原标识不够就重新分配新标识如apOld[3],如果原标识如apOld[2]多余就释放。
本步骤中生成将记录重新分配到新节点的方法,不限于之前的步骤,具体而言,节点13包括记录R2、R5、R6、R8、R9,若插入记录R7则会导致B树不平衡,则将R2、R5、R6、R8、R9和R7作为待重新分配的记录,根据本步骤中的方法直接重新分配到新节点,若删除记录R2与前述的删除方法类同,此处不再赘述。
其中步骤108中,以分配的内存指针apOld[0]、apOld[1]和apOld[2]将内存空间apOld中的记录分配到新节点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个记录;
若新节点中需包括待插入记录,则记录拷贝后第二内存空间中包括除待插入记录之外的生成新节点所需的记录,将存于第二内存空间中生成新节点所需的记录以及待插入记录导入到第一内存空间中,并进行标记用于生成新节点,以新节点代替待更新节点生成新的平衡索引树;
若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括新节点中的全部记录,将存于第二内存空间的新节点中的全部记录导入到第一内存空间中,并进行标记用于生成新节点,以新节点代替待更新节点生成新的平衡索引树。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (11)
1.一种数据库的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个记录;
若生成新的平衡索引树所需的新节点中需包括待插入记录,则记录拷贝后第二内存空间中包括除待插入记录之外的生成新节点所需的记录,将存于第二内存空间中生成新节点所需的记录以及待插入记录导入到第一内存空间中,并进行标记用于生成新节点,以新节点代替待更新节点生成新的平衡索引树;
若新节点中不需包括待插入记录,则进行记录拷贝后第二内存空间包括新节点中的全部记录,将存于第二内存空间的新节点中的全部记录导入到第一内存空间中,并进行标记用于生成新节点,以新节点代替待更新节点生成新的平衡索引树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910242567 CN101763415B (zh) | 2009-12-16 | 2009-12-16 | 一种数据库的b树索引的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910242567 CN101763415B (zh) | 2009-12-16 | 2009-12-16 | 一种数据库的b树索引的生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101763415A true CN101763415A (zh) | 2010-06-30 |
CN101763415B CN101763415B (zh) | 2012-10-17 |
Family
ID=42494579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910242567 Expired - Fee Related CN101763415B (zh) | 2009-12-16 | 2009-12-16 | 一种数据库的b树索引的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101763415B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521375A (zh) * | 2011-12-19 | 2012-06-27 | 山东中创软件商用中间件股份有限公司 | 一种目录服务数据检索方法及系统 |
CN103116652A (zh) * | 2013-03-06 | 2013-05-22 | 同方知网(北京)技术有限公司 | 一种基于拉链信息的索引存储管理方法 |
CN103164469A (zh) * | 2011-12-16 | 2013-06-19 | 苏州威世博知识产权服务有限公司 | 专利树构建、插入及删除节点的方法、装置及系统 |
CN103430178A (zh) * | 2013-01-30 | 2013-12-04 | 华为技术有限公司 | 数据更新方法及装置和产品 |
CN103548019A (zh) * | 2011-02-21 | 2014-01-29 | 阿玛得斯两合公司 | 用于根据数据仓库提供统计信息的方法和系统 |
CN104408128A (zh) * | 2014-11-26 | 2015-03-11 | 上海爱数软件有限公司 | 一种基于b+树异步更新索引的读优化方法 |
CN104899297A (zh) * | 2015-06-08 | 2015-09-09 | 南京航空航天大学 | 具有存储感知的混合索引结构 |
CN108052514A (zh) * | 2017-10-12 | 2018-05-18 | 南京航空航天大学 | 一种处理地理文本Skyline查询的混合空间索引机制 |
CN108989400A (zh) * | 2018-06-28 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种云存储网关读写文件的方法、装置及设备 |
CN110489601A (zh) * | 2019-07-18 | 2019-11-22 | 国电南瑞科技股份有限公司 | 一种基于缓存机制的实时数据索引快速动态更新方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286160B (zh) * | 2008-05-30 | 2010-09-22 | 同济大学 | 数据库索引的方法 |
-
2009
- 2009-12-16 CN CN 200910242567 patent/CN101763415B/zh not_active Expired - Fee Related
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103548019B (zh) * | 2011-02-21 | 2017-07-07 | 阿玛得斯两合公司 | 用于根据数据仓库提供统计信息的方法和系统 |
CN103548019A (zh) * | 2011-02-21 | 2014-01-29 | 阿玛得斯两合公司 | 用于根据数据仓库提供统计信息的方法和系统 |
US9710506B2 (en) | 2011-02-21 | 2017-07-18 | Amadeus S.A.S. | Method and system for providing statistical data from a data warehouse |
CN103164469A (zh) * | 2011-12-16 | 2013-06-19 | 苏州威世博知识产权服务有限公司 | 专利树构建、插入及删除节点的方法、装置及系统 |
CN102521375B (zh) * | 2011-12-19 | 2013-12-11 | 山东中创软件商用中间件股份有限公司 | 一种目录服务数据检索方法及系统 |
CN102521375A (zh) * | 2011-12-19 | 2012-06-27 | 山东中创软件商用中间件股份有限公司 | 一种目录服务数据检索方法及系统 |
CN103430178A (zh) * | 2013-01-30 | 2013-12-04 | 华为技术有限公司 | 数据更新方法及装置和产品 |
WO2014117337A1 (zh) * | 2013-01-30 | 2014-08-07 | 华为技术有限公司 | 数据更新方法及装置和产品 |
CN103116652A (zh) * | 2013-03-06 | 2013-05-22 | 同方知网(北京)技术有限公司 | 一种基于拉链信息的索引存储管理方法 |
CN103116652B (zh) * | 2013-03-06 | 2016-03-16 | 同方知网(北京)技术有限公司 | 一种基于拉链信息的索引存储管理方法 |
CN104408128B (zh) * | 2014-11-26 | 2017-11-03 | 上海爱数信息技术股份有限公司 | 一种基于b+树异步更新索引的读优化方法 |
CN104408128A (zh) * | 2014-11-26 | 2015-03-11 | 上海爱数软件有限公司 | 一种基于b+树异步更新索引的读优化方法 |
CN104899297A (zh) * | 2015-06-08 | 2015-09-09 | 南京航空航天大学 | 具有存储感知的混合索引结构 |
CN104899297B (zh) * | 2015-06-08 | 2019-02-26 | 南京航空航天大学 | 创建具有存储感知的混合索引的方法 |
CN108052514A (zh) * | 2017-10-12 | 2018-05-18 | 南京航空航天大学 | 一种处理地理文本Skyline查询的混合空间索引机制 |
CN108052514B (zh) * | 2017-10-12 | 2021-01-15 | 南京航空航天大学 | 一种处理地理文本Skyline查询的混合空间索引方法 |
CN108989400A (zh) * | 2018-06-28 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种云存储网关读写文件的方法、装置及设备 |
CN110489601A (zh) * | 2019-07-18 | 2019-11-22 | 国电南瑞科技股份有限公司 | 一种基于缓存机制的实时数据索引快速动态更新方法 |
CN110489601B (zh) * | 2019-07-18 | 2022-09-16 | 国电南瑞科技股份有限公司 | 一种基于缓存机制的实时数据索引快速动态更新方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101763415B (zh) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101763415B (zh) | 一种数据库的b树索引的生成方法及装置 | |
CN104246764B (zh) | 利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置 | |
CN102867071B (zh) | 一种网管海量历史数据管理方法 | |
CN100440221C (zh) | 管理文件系统的设备和方法 | |
CN101582092B (zh) | 一种实现保存内存中的数据的方法及装置 | |
US20090327377A1 (en) | Copying entire subgraphs of objects without traversing individual objects | |
JP2010157204A5 (zh) | ||
CN104424219B (zh) | 一种数据文件的管理方法及装置 | |
CN105045850B (zh) | 云存储日志文件系统中垃圾数据回收方法 | |
CN103473298B (zh) | 数据归档方法和装置以及存储系统 | |
CN104572920A (zh) | 一种数据整理方法和装置 | |
CN102298633A (zh) | 一种分布式海量数据排重方法及系统 | |
CN106033420A (zh) | 哈希表的处理方法及装置 | |
CN104281717B (zh) | 一种建立海量id映射关系的方法 | |
CN102567415B (zh) | 一种数据库的控制方法和装置 | |
US20230195769A1 (en) | Computer system and method for indexing and retrieval of partially specified type-less semi-infinite information | |
CN107766355B (zh) | 层级数据管理方法、层级数据管理系统及即时通信系统 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN109460406A (zh) | 一种数据处理方法及装置 | |
CN104408128B (zh) | 一种基于b+树异步更新索引的读优化方法 | |
CN102253985A (zh) | 一种文件系统数据的管理方法及系统 | |
CN105468623A (zh) | 数据处理方法及装置 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
CN100399338C (zh) | 一种数据记录处理方法 | |
CN102945163A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee after: BEIJING WATCHDATA Co.,Ltd. Address before: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden Patentee before: BEIJING WATCH DATA SYSTEM Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121017 Termination date: 20211216 |