用于存储数据项的方法和系统的制作方法

文档序号:6463724阅读:134来源:国知局
专利名称:用于存储数据项的方法和系统的制作方法
技术领域
本发明涉及一种存储数据项的方法,该数据项由包含一码字分量序列的码字标识。
本发明还涉及一种获取数据项的方法,该数据项由包含一码字分量序列的码字标识。
本发明还涉及一种用于存储数据项的系统,该数据项由包含一码字分量序列的码字标识。
借助一码字标识数据项并使用该码字存储并随后从一存储空间获取该数据项是众所周知的。该码字则通常用于在存储空间中标识该数据项存储其中的特定位置。实例有员工登记系统中的工资编号和储藏管理系统中的产品编号。工资编号用于定位相应人员的一个或若干记录,而产品编号用于定位特定产品的信息。
使用这样一个码字的再一实例是在实现所谓的简单网络管理协议(SNMP)的一个系统中,该系统如在文献“SNMP的介绍性概述”(AnIntroductory Overview of SNMP),DDRI,多种数据资源有限公司(Diversified Data Resources,Inc),1999,Novato,CA 94947,USA中有所描述。在该协议中,已定义了多个携带与网络有关的确定信息的多个对象。这样一种对象由所谓的为复合码字的对象标识符(OID)标识。该OID由分量序列形成。每个分量涉及定义该对象的一个确定方面的确定分层级,并且总序列唯一地标识现有的对象。例如OID‘1.3.6.1.2.1.1.3.0’标识对象‘sysUpTime’,‘sysUpTime’是从被管理设备被引导开始经过的时间。另一实例是被管理设备的名称的OID‘1.3.6.1.3.4’。被管理设备具有相应的软件功能以在被请求时提供相关对象的现行值。为此,该设备维持一个对象的OID和为该对象提供值的软件功能之间关联的数据库。
本发明的目的在于提供一种如前序部分中所描述的比已知方法更有效的存储数据项的方法。按照本发明该目的在一种存储由一码字标识的数据项的方法中得以实现,该码字包含一码字分量序列,其中该码字在下列步骤中被存储在一存储空间中的一组条目中1)在该组的每个条目中存储码字分量中特定的一个码字分量,2)在该组的每个条目中存储包含一相邻码字分量的码字分量的一条目的参考,如果该相邻的码字分量存在的话,以允许从该组中的条目重建该码字,3)在该组的至少一个条目中存储该数据项的一个参考。
通过在每个条目存储一个单个码字分量,而不是在一个条目中存储形成完整的码字的所有码字分量,一个条目可由不同的码字使用。如果两个码字具有一个或多个共有码字分量,这些公共码字只需被存储一次。当多个码字具有足够的共有码字分量时,按照本发明的码字分量的存储节省了存储空间。在上述的其中的码字是按照标准定义的OID的SNMP实例中,很多不同的码字具有大量共有码字分量,因此节省了存储空间。此外,如果与本发明相反,一条目被设计为能够存储完整的码字,该条目将需要与所用的最长的码字分量序列一样大。对于包含较少码字分量的码字这将导致存储空间的浪费。
在权利要求2中说明了一种按照本发明的存储数据项的方法的实施例。将散列功能应用于码字分量是确定用于存储码字分量的存储空间中的条目的一种简单方式。散列功能以一种容易的方式将码字分量的值的范围映射到可用的条目的范围上。
在权利要求3中说明了一种按照本发明存储数据的方法实施例。将包含先前码字分量的条目的参考存储在包含一特定码字分量的条目中,为从所存储的条目中重建该完整的码字提供一种容易的机制。
本发明的另一目的在于提供一种如在前序部分所述的、比已知的方法更为有效的获取数据项的方法。按照本发明该目的在一种获取由一码字标识的数据项的方法中得以实现,该码字包含一码字分量序列,其中该数据项和该码字被存储在存储空间的一组条目中,该方法包括下列步骤1)以序列中的第一码字分量为基础确定存储空间中可能的条目的位置,并存取该可能的条目以证实它是否与这一第一码字有关,2)以序列中的随后的码字分量为基础重复地确定存储空间中的可能的条目,并存取该可能的条目以证实它是否与当前的码字有关,以及3)从最后存取的条目获取该数据项的参考。
每个条目获取一个码字分量,而不是从一个条目获取形成完整码字的所有码字分量,允许更有效地码字存储。通过每个条目存储一个单个码字分量,而不是在一个条目中存储形成完整码字的所有码字分量,一个条目可由不同的码字使用。如果两个码字具有一个或多个共有码字分量,这些公共码字仅需被存储一次。当多个码字具有足够的共有码字分量时,按照本发明的码字分量的存储节省了存储空间。此外,较少的几个独立分量存储在存储空间中的事实允许以一给定的码字为基础较快地搜索和获取数据项。
本发明的另一目的在于提供一种在前序部分说明的比已知系统更为有效的用于存储数据项的系统。按照本发明该目的在用于存储一由一码字标识的数据项的系统中得以实现,该码字包含一码字分量序列,包括一包含一组条目和一存储单元的存储空间的该系统被安排为1)在该组的每个条目中存储码字分量中的一个特定码字分量,2)在该组的每个条目中存储一个包含一相邻码字分量的码字分量的条目的参考,如果存在该相邻的码字分量的话,以允许从该组的条目重建该码字,3)在该组的至少一个条目中存储该数据项的一个参考。
借助说明性实施例和所附示意图进一步阐明本发明及其附带的优点。


图1示出一具有按照本发明存储的数据项和码字的存储空间,和图2示意性示出一种按照本发明的用于存储由码字标识的数据项的系统。
各图中相应的部分用同一参考符号表示。
图1示出一个具有按照本发明存储的数据项和码字的存储空间。在该实施例中,该存储空间用于存储在简单网络管理协议(SNMP)中规定的对象的对象标识符(OID)和实现该对象的功能性的软件功能之间的关联,软件功能即用于存取该对象的值的功能。其中所用的SNMP和对象在文献“SNMP的介绍性概述”(An Introductory Overviewof SNMP),DDRI,多种数据资源有限公司(Diversified Data Resources,Inc,),1999,Novato,CA 94947,USA,中有所描述。一个OID由OID分量组成。一个OID可包含多达最多为128个OID分量,并且一个OID分量可具有最大值(2^32)-1。该实施例中的存储空间被实现为表102。一个OID及其实现功能之间的关联通过将软件功能的地址存储在该表中被存储。在图1所示的实例中,下列OID被存储OID 1.2.6 1.1 功能AOID 1.2.6 1.2 功能BOID 1.2.6 1.3 功能COID 1.2.6 1.4 功能D所用表格和编号的大小在于说明本发明的操作。
表102具有3列列104用于存储OID分量,列106用于存储包含一给定OID的先前OID分量的条目,列108用于存储到OID功能的地址。表102的行形成相应的条目。于是一个条目具有3个字段并以下列方式存储一OID分量第一字段包含一特定OID的OID分量,第二字段包含包含该OID的先前OID分量的条目的参考,以及第三字段包含该OID的功能的地址。在该实现方案中,第一字段的大小为32比特,第二字段的大小为32比特,第三字段的大小为16比特。这意味着条目的总大小为80比特,或换句话说,10个8比特的字节。例如条目110包含OID‘1.2.61.3’的第四OID分量-第一字段包含OID分量的值‘3’,-第二字段包含包含该OID的第三OID分量的该表的第12条目的参考(用参考数字112指示),以及-第三字段包含功能C的地址。取决于现行的情况,如下所述,字段可包含特定值以指示一个特别的条件。
表102具有多个条目,在实例中为13但在实际中更多,并且开始这些都是空的。一个空的条目包含一个指示它为空的并且一OID分量可被存储其中的信号。在该实施例中,一个空的条目被这样标识,即通过在该条目的第二字段中存储值‘-2’。条目114是一个空条目的实例。如果一OID的第一OID分量被存储,则没有先前OID分量并且因此,第二字段不能用这一先前OID分量的参考填充。因此,包含一OID的第一OID分量的条目的第二字段包含值‘-1’。例如条目116。当一OID的最后OID分量被存储后,对该OID的处理结束并且该OID在该表中是完全限定的。因此,实现OID的功能的地址仅存储在包含最后OID分量的条目中。于是包含OID‘1.2.61.3’的最后OID分量的条目110在其第三字段中具有功能C的地址,而包含OID‘1.2.61.3’的第三OID分量的条目112在其第三字段中具有值‘nil’。
如下实现对OID‘1.2.61.1’及其相关的功能的存储。为第一OID分量‘1’确定一个条目。这通过对该OID分量应用一散列功能实现,该功能按照该实例回到值5。这意味着OID分量‘1’被存储在由参考数字116指示的该表的第5条目。该条目的第一字段用值‘1’填充,由于没有先前的OID分量,第二字段用值‘-1’填充,并且第三字段用‘nil’填充,因为该OID分量不是该OID的最后分量。随后处理第二OID分量‘2’。应用示意性散列功能回到值8,这意味着该第二OID分量被存储在表的第8条目。第一字段包含值‘2’。第二字段包含指明该OID的先前OID分量已被存储在第5条目中的值‘5’。第三字段包含值‘nil’,因为它不是OID的最后OID分量。然后第三OID分量被处理。该OID分量‘61’被存储在分别具有字段‘61’、‘8’和‘nil’的第12条目中。最终,最后的OID分量‘1’被存储。该OID分量被存储在第三条目的第一字段中,并且现在功能A的地址被输入该条目的第三字段中。
当第二OID‘1.2.61.1’已如上所述存储时,如下存储第二OID‘1.2.61.2’。当处理第一OID分量时,显然这必须被存储在第5条目中。该条目不是空的,但确定该条目中的信息与待为该第一OID分量所需存储的是相同的。因此,不是找到下一个,而是表中的空条目第5条目也被认为是第二OID的第一OID分量的条目。于是,第5条目由第一和第二OID共享。对第二OID的第二和第三分量完全一样。第二OID的最后OID分量被存储在直到那时仍为空的第10条目中。该最后OID分量有效地结束对第二OID的处理并完全限定第二OID。因此,与第二OID相关的功能B被存储在该第10条目中。
存储OID‘1.2.61.3’和‘1.2.61.4’导致与存储OID‘1.2.61.2’相同的条件,即它们仅对于它们的第四OID分量为不同。这意味着第5、第8和第12条目由全部4OID共享,这导致表中的有效存储。OID在已标准化的分层中定义,在此OID分量序列从左到右反映分层中从上到下的级。OID通常从左到右共享一基本数量的OID分量,因为对于很多OID来说顶部的级是相同的。
如上所述,通过使用一散列功能确定一特定码字分量将存储其中的条目。该功能将码字分量的值翻译成存在于表中的条目编号。如果找到一计算的条目已由一不同的码字分量占据,这被称为一冲突,则通过向先前条目编号施加一个偏移确定一个新的条目编号。在该实施例中,通过使用公式计算一个散列值(hash value)hash=old_hash*19+component_value+7其中old_hash是为先前OID分量计算的散列值,component_value是现在的OID分量的值。该散列值映射到表中条目的可用范围上。如果表中所用的条目的编号增加,冲突的机会增加并且在表中确定一条目的处理效率降低。因此,可观察到表的填充度并且当它已达到一确定的阈值时,该表被扩展。
如上所述用OID和用于这些OID的相应的软件功能之间的关联填充表102。该信息则对于运行在包含表的设备上的程序是可用的。如果收到关于一个特定OID的请求,表102用于查找需要被调用以服务该请求的的软件功能的地址。这种请求可以是请求由特定的OID定义的对象的值,并在被调用时,软件程序从适当的位置获取该值并将其返回。以特定的OID为基础查找一种功能的地址的过程与如上所述的存储过程相似。通过使用散列功能确定用于第一OID分量的条目并检查该条目是否真正存储该OID分量,即没有出现冲突。如果出现冲突,使用与用于存储OID分量的相同的偏移计算下一条目。如果没有出现冲突,用于第二OID分量的条目被确定并且其字段被获取。通过证实第二字段是否指回到包含正被处理的第一OID分量的条目,检查该条目是否与为当前被处理的OID的一部分的OID分量有关。为序列中的所有OID分量继续该处理直到该OID的最后OID分量已被处理。随后从该最后条目的第三字段获取到所希望的软件功能的地址,并且该地址对于调用该功能是可用的。
图2示意性示出一种按照本发明的用于存储由一码字标识的数据项的系统。该系统可为网络中一个设备的一部分,网络中的设备按照SNMP管理。这样一种设备可以是一个接收视频信息并将其处理以在显示器件上显示的顶置盒,例如电视接收机。该系统具有连接202,其中,藉此接收与特定对象有关的请求。该请求包含特定对象的OID。该请求由一个所谓的SNMP代理204处理,该SNMP代理存取管理信息库(MIB)206以确定为该特定对象必需调用哪种功能。MIB实现管理信息的逻辑分组并读写存取被管理的对象。该存储可由想要借助它们的仪器功能将管理信息提供给系统的仪器库中的模块请求。MIB包含OID和相应的软件功能之间的关联并基于图1中所示的表。此外,该系统具有用于存取软件功能的层208。该层去耦合MIB和软件功能之间的依赖性。如上所述该层208具有用于存储OID和功能地址的存储功能210。为此,存储单元可包含一散列功能212以确定表中的条目。当用于与所接收的请求对应的软件功能的地址已被确定时,对该功能的调用经接口214发送。如果请求涉及获取一个对象的值,该值经接口214由SNMP代理204返回到连接202。
应注意,上述实施例说明而不是限制本发明,在不偏离所附权利要求的范围的情况下,本领域的技术人员将能够设计很多可替换的实施例。在权利要求中,位于括弧之间的任何参考标记不应认为是限制该权利要求。单词“包括”不排除存在列在权利要求中之外的其他成分或步骤。成分前面的单词“一”不排除存在多个这种成分。本发明可借助包括几种性质不同的成分的硬件实现并借助适当编程的计算机实现。在枚举几种装置的单元权利要求中,这些装置中的几种可由硬件的同一项具体实施。
权利要求
1.一种存储由一码字标识的数据项的方法,该码字包含一码字分量序列,其中在下列步骤中该码字被存储在一存储空间的一组条目中1)在该组的每个条目中存储码字分量中特定的一个码字分量,2)在该组的每个条目中存储包含一相邻码字分量的码字分量的一条目的参考,如果存在该相邻的码字分量的话,以允许从该组中的条目重建该码字,3)在该组的至少一个条目中存储该数据项的一个参考。
2.如权利要求1所述的存储数据项的方法,其中通过将一散列功能应用于一给定码字分量确定该给定码字分量的条目。
3.如权利要求1所述的存储数据项的方法,其中该组条目以构成码字的码字分量序列的顺序被存取,并且其中,通过存储包含先前存储在该序列中的码字分量的码字分量条目的参考实现步骤2),如果存在先前存储在该序列中的码字分量的话。
4.一种获取由一码字标识的数据项的方法,该码字包含一码字分量序列,其中该码字被存储在存储空间的一组条目中,该方法包括下列步骤1)以该序列中的第一码字分量为基础确定存储空间中可能的条目的位置,并存取该可能的条目以证实它是否与这一第一码字有关,2)以该序列中的随后的码字分量为基础重复地确定存储空间中的可能的条目,并存取该可能的条目以证实它是否与当前的码字有关,以及3)从最后存取的条目获取该数据项的参考。
5.按照权利要求4获取数据项的方法,由此通过将一散列功能应用于一给定的码字分量确定该给定的码字分量的条目的位置。
6.一种用于存储一由一码字标识的数据项的系统,该码字包含一码字分量序列,包括一包含一组条目和一存储单元的存储空间的系统被安排为1)在该组的每个条目中存储码字分量中的一个特定码字分量,2)在该组的每个条目中存储一个包含一相邻码字分量的码字分量的一条目的参考,如果存在该相邻的码字分量的话,以允许从该组中的条目重建该码字,3)在该组的至少一个条目中存储该数据项的一个参考。
7.如权利要求6中所述的系统,其中存储单元包括一散列功能以确定一特定码字分量被存储其中的条目。
8.如权利要求6中所述的系统,其中该存储单元被安排为以形成码字的码字分量的序列的顺序存取该组条目,并且其中,该存储单元被安排为存储包含先前存储在序列中的码字分量的码字分量条目的参考,如果存在先前存储在该序列中的码字分量的话。
9.一种用于存储标识相应的数据项的码字的数据结构(102),每个码字包括一码字分量序列,在该数据结构中一标识一特定的数据项的特定码字被存储在具有下列组织方式的一组条目中1)该组的每个条目(110,112)包含特定码字的码字分量中的一个特定码字分量,2)该组的每个条目(110,112)包含一包含特定码字的一相邻码字分量的码字分量的一条目的参考,如果存在该特定码字的相邻的码字分量的话,以允许从该组的条目重建该特定的码字,3)该组的至少一个条目(110)包含该特定数据项的一个参考。
全文摘要
一个数据项通过由码字分量序列构建的码字标识。该数据项和码字被存储在表(102)中的多个条目中,由此每个码字分量被存储在独立的条目中。表102具有用于存储码字分量值的列104,用于存储先前存储的码字分量的参考的列106,如果存在该先前存储的码字分量的话,以及用于存储该数据项的列108。
文档编号G06F12/00GK1392987SQ01802738
公开日2003年1月22日 申请日期2001年9月12日 优先权日2000年9月14日
发明者B·C·W·卡尔格 申请人:皇家菲利浦电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1