本发明专利技术公开了一种分段式ID分配方法,涉及网管系统中逻辑对象的对象ID的分配方法。它包括如下步骤:A、从数据库中获取已分配逻辑对象的对象数据;B、根据所述逻辑对象的对象类别更新缓冲中已分配逻辑对象的对象ID信息;C、根据所述对象ID信息获取可用的对象ID段;D、在所述对象ID段中分配对象ID。本发明专利技术在分配对象ID时操作比较简单,在管理较多的逻辑对象时不仅分配效率和回收效率较高,而且占用的内存较少,适于推广。
【技术实现步骤摘要】
本专利技术涉及网管系统中逻辑对象的对象ID(IDentity,身份标识号码)的分配方法,具体涉及ー种分段式ID分配方法。
技术介绍
在网管系统中,为了便于管理逻辑对象(网络设备在网管系统中的虚拟对象),通常将所有的逻辑对象进行统一编号和分配,每个逻辑对象对应ー个唯一的对象ID。网管系统内部进行数据交互或接ロ调用时,逻辑对象都是通过其所对应的对象ID来表示和识别,通过对象ID来识别逻辑对象不仅可以统ー管理所有的逻辑对象,而且可以避免通过对象属性来识别逻辑对象所帯来的对象属性修改,引起对象之间关系变化的问题。但是,当管理的逻辑对象较多时,如果逻辑对象分配对象ID的分配效率不高,则会严重影响网管系统的工作效率。现有的给逻辑对象分配对象ID的分配方法通常采用整形分配和缓冲分配两种形式,但是,这两种方法存在以下缺陷整形分配时(即按整数分配),采用ー个4字节的整数来表示逻辑对象的对象ID,对象ID从I开始依次递增为逻辑对象进行编号和分配。当逻辑对象较多时,増加逻辑对象的对象ID和删除未使用对象ID的对象数据的操作会比较频繁,逻辑对象对应的对象ID可能会达到整数的最大值,对象ID—旦达到了整数的最大值,就需要从整数中回收可用的对象ID(整数中没有被分配的ID即为可用的对象ID)来对应需分配的逻辑对象。回收对象ID时一般采用以下两种方法(I)从I开始遍历所有整数,校验遍历到的整数是否已被分配为对象ID,如果遍历到的整数没有被分配为对象ID,则回收该整数作为可用的对象ID。该方法的操作过程比较简单,但是当逻辑对象较多吋,由于每次回收对象ID时都需要从I开始遍历所有整数,而较多的逻辑对象会使得整数中的ID值较大,因此较多的逻辑对象会使得遍历所有整数的次数较多,遍历效率降低,进而使得回收效率较低。(2)折半查找,即校验(0,0x7fffffff)的中间值0x3fffffff ((0+0x7fffffff)/2)是否已被分配为对象ID,如果0x3fffffff没有被分配为对象ID,则0x3fffffff的ID为可用对象ID ;如果0x3fffffff已被分配为对象ID,则比较(0,0x3fffffff)和(0x3fffffff,0x7fffffff)两个区间,首先将已被分配的对象ID较少的区间进行存储,然后取该区间的中间值并校验中间值是否已被分配为对象ID。按照以上方法不断的校验分配对象ID较少区间的中间值,直到找到未被分配的ID即可作为可用对象ID。在逻辑对象较多吋,由于逻辑对象所对应对象ID的个数较多,对象ID所形成的区间较长,因此可能需要多次校验区间中的中间值回收到可用的对象ID,不仅操作过程比较复杂,而且回收过程较长,回收效率较低。上述两种回收方法在回收可用的对象ID时均按照逻辑对象的个数进行回收,即新增的逻辑对象为ー个,则回收一次;新增的逻辑对象为两个,则回收两次。当需要管理的逻辑对象较多吋,由于回收可用的对象ID和分配逻辑对象的对象ID比较频繁,而上述两种回收方法一次只能回收ー个可用的对象ID,因此采用上述两种方法需多次回收才能获得较多的可用对象ID,以对应较多的逻辑对象,回收效率较低,进而使得分配效率较低。 缓冲分配即将所有已对应逻辑对象的对象ID进行缓冲,新增逻辑对象吋,缓冲所有对象ID信息,根据缓冲的对象ID列表获取ー个没有缓冲的整数作为可用的对象ID ;删除逻辑对象时,缓冲所有对象ID的对象数据,从缓冲的对象ID列表中删除与之对应的对象ID。由于新增逻辑对象和删除逻辑对象均需要缓冲所有对象ID的对象数据,因此当逻辑对象较多时,缓冲逻辑对象所对应对象ID的对象数据较多,占用网管系统的内存较大。综上所述,现有的给逻辑对象分配对象ID的分配方法在分配较多的逻辑对象时存在两个缺点(I)回收可用对象ID的操作比较复杂,回收效率较低,进而使得分配对象ID的分配效率降低;(2)占用网管系统的内存较大,不适于推广。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种分段式ID分配方法,它在分配对象ID时操作比较简单,在管理较多的逻辑对象时不仅分配效率和回收效率较高,而且占用的内存较少,适于推广。为达到以上目的,本专利技术采取的技术方案是一种分段式ID分配方法,其特征在于,包括如下步骤:A、从数据库中获取已分配逻辑对象的对象数据;B、根据所述逻辑对象的对象类别更新缓冲中已分配逻辑对象的对象ID信息;C、根据所述对象ID信息获取可用的对象ID段;D、在所述对象ID段中分配对象ID。在上述技术方案的基础上,步骤A之前还包括如下流程根据管理逻辑对象类别的不同,每类逻辑对象均预分配了一定数量的预分配段。在上述技术方案的基础上,步骤B中所述更新缓冲中已分配逻辑对象的对象ID信息的流程如下将所述逻辑对象的对象ID与缓冲中当前段的对象ID进行比较,若所述逻辑对象的对象ID大于当前段已分配的最大对象ID,并且小于等于当前段的最大对象ID,则更新当前段已分配的最大对象ID;若所述逻辑对象的对象ID大于当前段的最大对象ID,则更新当前段的段起始ID和已分配的最大对象ID,并判断当前段更新后已分配的最大对象ID是否属于预分配段的范围,若不是,则记录更新后当前段所属的动态ID段的信息。在上述技术方案的基础上,步骤C中所述获取可用的对象ID段的流程如下判断当前段是否可以继续分配ID,若是,则将当前段作为可用的对象ID段,否则从预分配段中获取可用的对象ID段;若从预分配段中获取不到可用的对象ID段,则回收可用的对象ID段;若回收不到可用的对象ID段,则从动态段中获取可用的对象ID段。在上述技术方案的基础上,所述回收可用的对象ID段的流程如下获取ー个预分配段,判断获取的预分配段中的对象ID是否全部未被分配,若是,则将获取的预分配段作为可用的对象ID段,否则回收预分配段中未被分配的对象ID段作为可用的对象ID段;若获取的预分配段中的所有对象ID均被分配,则回收动态ID段作为可用的对象ID段。在上述技术方案的基础上,所述未被分配的对象ID段在已分配对象ID最少的预分配段中回收。在上述技术方案的基础上,所述回收动态ID段作为可用的对象ID段的流程如下获取已分配对象ID最少的动态ID段,判断所述动态ID段中的对象ID是否全部未被分配,若是,则将所述动态ID段作为回收段,否则回收所述动态ID段中未被分配的对象ID段作为可用的对象ID段。在上述技术方案的基础上,步骤A之前还包括如下流程预分配用于扩展新增逻辑对象使用的预留段。 在上述技术方案的基础上,步骤D中所述分配对象ID的流程如下在对象ID段中获取可用的段内ID,将所述段内ID与对象ID段的段号合成新的对象ID。在上述技术方案的基础上,所述获取可用的段内ID为所述对象ID段中比已分配对象ID大的最小整数。本专利技术的有益效果在于(I)本专利技术根据逻辑对象不同的类别,为每类逻辑对象均分配了一定数量的预分配段。在为逻辑对象分配对象ID时,根据逻辑对象的类别,优先从预分配段中采用依次递增的方式分配对象ID。如果预分配段中的对象ID已经全部分配完毕,则遍历所有预分配段,在预分配段中回收可用的对象ID段并在该段中分配对象ID ;如果从预分配段中回收不到可用的对象ID段,则在需分配逻辑对象类别的已用动态ID段中本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种分段式ID分配方法,其特征在于,包括如下步骤 A、从数据库中获取已分配逻辑对象的对象数据; B、根据所述逻辑对象的对象类别更新缓冲中已分配逻辑对象的对象ID信息; C、根据所述对象ID信息获取可用的对象ID段; D、在所述对象ID段中分配对象ID。2.如权利要求I所述的分段式ID分配方法,其特征在于,步骤A之前还包括如下流程根据管理逻辑对象类别的不同,每类逻辑对象均预分配了一定数量的预分配段。3.如权利要求2所述的分段式ID分配方法,其特征在于,步骤B中所述更新缓冲中已分配逻辑对象的对象ID信息的流程如下将所述逻辑对象的对象ID与缓冲中当前段的对象ID进行比较,若所述逻辑对象的对象ID大于当前段已分配的最大对象ID,并且小于等于当前段的最大对象ID,则更新当前段已分配的最大对象ID ;若所述逻辑对象的对象ID大于当前段的最大对象ID,则更新当前段的段起始ID和已分配的最大对象ID,并判断当前段更新后已分配的最大对象ID是否属于预分配段的范围,若不是,则记录更新后当前段所属的动态ID段的信息。4.如权利要求3所述的分段式ID分配方法,其特征在于,步骤C中所述获取可用的对象ID段的流程如下判断当前段是否可以继续分配ID,若是,则将当前段作为可用的对象ID段,否则从预分配段中获取可用的对象ID段;若从预分配段中获取不到可用的对象ID段,则回收可用的对象ID段;若回收不到可...
【专利技术属性】
技术研发人员:张利兵,钟潘,张勇,朱春燕,
申请(专利权)人:烽火通信科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。