CN102682112A - 存储方法和装置 - Google Patents
存储方法和装置 Download PDFInfo
- Publication number
- CN102682112A CN102682112A CN2012101452399A CN201210145239A CN102682112A CN 102682112 A CN102682112 A CN 102682112A CN 2012101452399 A CN2012101452399 A CN 2012101452399A CN 201210145239 A CN201210145239 A CN 201210145239A CN 102682112 A CN102682112 A CN 102682112A
- Authority
- CN
- China
- Prior art keywords
- fragment
- bit
- data structure
- bit node
- 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
本发明实施例提供了一种存储方法,包括:将比特串中的第X+1片段按照第一规则进行存储,比特串由N个片段组成,第一规则包括:根据N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,第X数据结构中存储了第一基础地址;计算第一基础地址与第一偏移量的和,得到第一新地址,第一新地址对应的存储空间用于存储第X+1数据结构;将第X+1片段存储到第X+1数据结构中。此外,本发明实施例还提供了相应的装置。通过本发明实施例提供的技术方案,可以节省存储空间。
Description
技术领域
本发明涉及计算机领域,特别涉及存储方法和装置。
背景技术
计算机技术领域,比特串包括0或者1。比特串可以用于表示网际协议(InternetProtocol,IP)地址。比特串也可以用于表示其他信息。可以使用树状拓扑对比特串进行存储。树状拓扑可以是二叉树、三叉树或者不规则树。
现有技术中,bitmap(位图)是一种存储数据结构的方法。bitmap的原理是在数据结构的标识域中使用0或1记录当前节点外部下挂的子节点的分布情况。标识域中的标记位用于表示该标记位对应的子节点是否是有效子节点。具体来说,标识位为0表示该标记位对应的子节点为无效子节点,标识位为1表示该标记位对应的子节点为有效子节点。
bitmap仅对当前节点的有效子节点进行存储,不对当前节点的无效子节点进行存储。当前节点的有效子节点的存储地址为基础地址与偏移量的和。偏移量与该子节点对应的标记位相关。举例来说,表1为一个标记域的示意图。如表1所示,当前节点外部下挂子节点的个数为16。
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
表1
按照从左到右并且从上到下的顺序,表1所示的标记域中的标记位分别为当前节点的第0、1至15个子节点的标记位。其中,第0个子节点的标记位为0,这表明该子节点为无效子节点。第1个子节点的标记位为1,这表明该子节点为有效子节点。从表1可以看出,当前节点的有效子节点包括第1、4、7、10以及15个子节点。
使用bitmap这一存储方式对数据结构进行存储时,在当前节点的子节点为无效子节点的情况下,需要在标记域中使用标记位0进行标识。浪费了存储空间。
发明内容
为了节省存储空间,本发明实施例提供了存储方法和装置。
一方面,本发明实施例提出了一种存储方法,包括:
将比特串中的第X+1片段按照第一规则进行存储,X为大于0并且小于N的整数,所述比特串由N个片段组成,所述N个片段中的第一片段至第N片段在所述比特串中按照从高比特到低比特的方向依次排列,N为大于2的整数,所述N个片段中每个片段包括0或者1,所述第一规则包括:
根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,所述第X数据结构中存储了第一基础地址;
计算所述第一基础地址与所述第一偏移量的和,得到第一新地址,所述第一新地址对应的存储空间用于存储第X+1数据结构;
将所述第X+1片段存储到所述第X+1数据结构中。
另一方面,本发明实施例提供了一种存储装置,包括:触发单元以及第一存储单元:
所述触发单元,用于触发所述第一存储单元存储第X+1片段;
所述第一存储单元,用于将比特串中的所述第X+1片段按照第一规则进行存储,X为大于0并且小于N的整数,所述比特串由N个片段组成,所述N个片段中的第一片段至第N片段在所述比特串中按照从高比特到低比特的方向依次排列,N为大于2的整数,所述N个片段中每个片段包括0或者1,所述第一存储单元包括:
第一确定子单元,用于根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,所述第X数据结构中存储了第一基础地址;
第一计算子单元,用于计算所述第一确定子单元提供的所述第一基础地址与所述第一偏移量的和,得到第一新地址,所述第一新地址对应的存储空间用于存储第X+1数据结构;
第一存储子单元,用于将所述第X+1片段存储到所述第一计算子单元提供的所述第一新地址所对应的存储空间存储的所述第X+1数据结构中。
通过上述技术方案,可以根据比特串的第X片段存储该比特串的第X+1片段,不存在bitmap方案中需要在标记域中使用标记位0,以对当前节点的子节点为无效子节点进行标识的技术问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种存储方法的示意图;
图2是本发明实施例提供的第一规则的示意图;
图3是本发明实施例提供的一种存储装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1为本发明实施例提供的一种存储方法的示意图。参见图1,所述方法包括:
101:将比特串中的第X+1片段按照第一规则进行存储,X为大于0并且小于N的整数,所述比特串由N个片段组成,所述N个片段中的第一片段至第N片段在所述比特串中按照从高比特到低比特的方向依次排列,N为大于2的整数,所述N个片段中每个片段包括0或者1。
举例来说,101可以由CPU执行。CPU可以是网络设备中的CPU。网络设备可以是路由器、交换机、防火墙或者负载均衡器。
存储器用于存储第X+1片段。举例来说,存储器可以是双倍速率同步动态随机存储器(double data rate synchronous dynamic random-access memory,DDR SDRAM)。存储器也可以是现场可编程门阵列(Field Programmable Gate Array,FPGA)。
举例来说,比特串可以为一个IP地址。IP地址可以是路由表中的信息。在路由表中存储IP地址时,可以将IP地址分为多个片段,并对多个片段分别进行存储。
举例来说,比特串可以是一个由32比特组成的网际协议第四版(Internet Protocolversion 4,IPv4)地址。可以将IPv4地址分为多个片段。例如,可以将IPv4地址分为8个片段,每个片段的长度都是4比特。也可以将比特串分为11个片段。其中,前10个片段都是3个比特,最后一个片段是2个比特。
比特串也可以是一个由128比特组成的网际协议第六版(Internet Protocol version 6,IPv6)地址。可以将IPv6地址分为N个片段。其中,第一片段至第N片段在所述比特串中按照从高比特到低比特的方向依次排列。其中,第一片段可以存储在多比特树中位于第一级的多比特节点中,第二片段可以存储在多比特书中位于第二级的多比特节点中,以此类推。
举例来说,比特串也可以是一个IP地址前缀。
图2为本发明实施例提供的第一规则的示意图。参见图2,所述第一规则包括:
1011:根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,所述第X数据结构中存储了第一基础地址。
举例来说,1011可以由CPU执行。CPU可以是网络设备中的CPU。网络设备可以是路由器、交换机、防火墙或者负载均衡器。
第一域为第X数据结构中的一个域。第X数据结构可以包括多个域。举例来说,第X数据结构还可以包括基础地址域。基础地址域可以用于存储第一基础地址。
第一域用于存储第X片段。除了用于存储第X片段,第一域还可以用于存储其他信息。第一域用于存储一个集合。第X片段是集合中的一个元素。集合中还可以包括其他元素。举例来说,集合可以是一个数组。数组可以包括一个或者多个数组元素。第X片段可以是上述一个或者多个数组元素中的一个数组元素。第X数据结构可以是一个结构体。本领域的技术人员可以理解,结构体中可以包括数组。
根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量。举例来说,第一偏移量可以是第X片段存储在第一域中的位置信息。
举例来说,第X片段存储在第一域中的位置信息可以是第X片段在第一域中的序号。例如,第一域可以包括多项信息,第X片段为其中的一项信息。多项信息在第一域中构成一个队列。第X片段存储在第一域中的位置信息可以是第X片段在队列中的序号。多项信息中,第一项信息的序号可以为1,第二项信息的序号可以为2,以此类推。当然,最小的序号可以不等于1。例如,第一项信息的序号可以为0,第二项信息的序号可以为1,以此类推。另外,第一域可以只包括第X片段。在这种情况下,第X片段在第一域中的序号可以是1,可以是0,也可以是其他数值。
1012:计算所述第一基础地址与所述第一偏移量的和,得到第一新地址,所述第一新地址对应的存储空间用于存储第X+1数据结构。
举例来说,1012可以由CPU执行。CPU可以是网络设备中的CPU。网络设备可以是路由器、交换机、防火墙或者负载均衡器。
举例来说,第X+1数据结构可以是变量、数组、链表或者结构体。当第X+1数据结构是变量时,第一新地址可以是变量的地址。当第X+1数据结构是数组时,第一新地址可以是数组的指针或者数组元素的指针。当第X+1数据结构是链表时,第一新地址可以是链表的指针或者链表成员的指针。当第X+1数据结构是结构体时,第一新地址可以是结构体的指针或者结构体成员的指针。
1013:将所述第X+1片段存储到所述第X+1数据结构中。
举例来说,1013可以由CPU执行。CPU可以是网络设备中的CPU。网络设备可以是路由器、交换机、防火墙或者负载均衡器。
举例来说,当第X+1数据结构是变量时,可以将第X+1片段存储到用于存储该变量的地址所对应的存储空间中。当第X+1数据结构是数组时,可以将第X+1片段存储到该数组的数组元素中。当第X+1数据结构是链表时,可以将第X+1片段存储到该链表的链表成员中。当第X+1数据结构是结构体时,可以将第X+1片段存储到该结构体的结构体成员中。
通过本发明实施例提供的技术方案,可以根据比特串的第X片段存储该比特串的第X+1片段,不存在bitmap方案中需要在标记域中使用标记位0,以对当前节点的子节点为无效子节点进行标识的技术问题。
可选的,
所述N个片段中所述第一片段至第N-1片段都由M个比特构成,M为大于等于1的整数。
可选的,
所述根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量包括:
根据所述第X片段存储在所述第一域中的位置确定所述第一偏移量,所述第X数据结构存储在第一多比特节点中,所述第一多比特节点为第一多比特树中的一个多比特节点。
所述将所述第X+1片段存储到所述第X+1数据结构中包括:
将所述第X+1片段存储到第二多比特节点中,所述第二多比特节点为所述第一多比特节点的下一级多比特节点,所述第X+1数据结构存储在所述第二多比特节点中,所述第二多比特节点为所述第一多比特树中的一个多比特节点。
第一多比特树为一个多比特树。举例来说,第一多比特树可以是一个二叉树或者三叉树。
可选的,
将所述N个片段中的第Y片段按照第二规则进行存储,Y为大于0并且小于N的整数,Y不等于X,所述第二规则包括:
对所述N个片段中的第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量,所述第Y数据结构包含第二基础地址;
计算所述第二基础地址与所述第二偏移量的和,得到第二新地址,所述第二新地址对应的存储空间用于存储第Y+1数据结构;
将所述第Y片段存储到所述第Y+1数据结构中。
对所述N个片段中的第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量。举例来说,第二偏移量可以等于哈希结果。
举例来说,第二基础地址为一个基础地址。第Y数据结构可以包括用于存储第二基础地址的基础地址域。第Y数据结构中可以存储用于与第Y片段进行哈希运算的哈希因子。第Y数据结构可以包括哈希域。用于与第Y片段进行哈希运算的哈希因子可以存储在哈希域中。
第Y+1数据结构可以变量、是结构体、数组或者链表。关于第二新地址,具体可以参考第一新地址。第Y片段可以是变量的值、结构体成员、数组元素或者链表成员。
对第Y片段执行哈希运算可能会产生哈希冲突。存储在第Y+1数据结构中的第Y片段可以用于判断是否发生了哈希冲突。
可选的,
所述方法进一步包括,将用于与第Y+1片段进行哈希运算的哈希因子存储到第Y+1数据结构中。
可选的,
所述对所述N个片段中的第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量包括:
对所述第Y片段进行哈希运算得到所述哈希结果,根据所述哈希结果确定所述第二偏移量,所述第Y数据结构存储在第三多比特节点中,所述第三多比特节点为第二多比特树中的一个多比特节点;
所述将所述第Y片段存储到所述第Y+1数据结构中包括:
将所述第Y片段存储到第四多比特节点中,所述第四多比特节点为所述第三多比特节点的下一级多比特节点,所述第Y+1数据结构存储在所述第四多比特节点中,所述第四多比特节点为所述第二多比特树中的一个多比特节点。
第二多比特树为一个多比特树。举例来说,第二多比特树可以是二叉树或者三叉树。第二多比特树与第一多比特树可以是同一个多比特树,也可以不是同一个多比特树。
可选的,
所述第X数据结构中包含第一指示信息,所述第一指示信息用于标识所述第X+1片段是按照所述第一规则进行存储的;或者,
所述第Y数据结构中包含第二指示信息,所述第二指示信息用于标识所述第Y片段是按照所述第二规则进行存储的。
第一指示信息可以是一个指示信息。举例来说,第一指示信息可以是一个比特或者多个比特。第二指示信息可以是一个指示信息。举例来说,第二指示信息可以是一个比特或者多个比特。
所述第一指示信息用于标识所述第X+1片段是按照所述第一规则进行存储的。
举例来说,在已经根据第一规则存储了第X+1片段的情况下,当需要在存储空间中查找是否存储了第X+1片段时,可以根据第一指示信息确定如果存储空间存储有所述第X+1片段,所述第X+1片段是按照所述第一规则进行存储的。进一步的,可以根据第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,并计算所述第一基础地址与所述第一偏移量的和,从而得到所述第一新地址。可以在所述第一新地址对应的所述第X+1数据结构中查找所述第X+1片段。上述查找可以由网络处理器(Network Processor,NP)发起,也可以由专用集成电路(application-specific integrated circuit,ASIC)发起。
所述第二指示信息用于标识所述第Y片段是按照所述第二规则进行存储的。
举例来说,在已经根据第二规则存储了第Y片段的情况下,当需要在存储空间中查找是否存储了第Y片段时,可以根据第二指示信息确定如果存储空间存储有所述第Y片段,所述第Y片段是按照所述第二规则进行存储的。进一步的,可以对第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量,并计算所述第二基础地址与所述第二偏移量的和,从而得到所述第二新地址。可以在所述第二新地址对应的所述第Y+1数据结构中查找所述第Y片段。上述查找可以由NP发起,也可以由ASIC发起。
图3为本发明实施例提供的一种存储装置的结构示意图。所述装置可以是网络装置。网络装置可以是路由器、交换机、防火墙或者负载均衡器。所述装置可以通过图1所示的方法实现。参见图3,所述装置包括:
触发单元201以及第一存储单元202:
所述触发单元201,用于触发所述第一存储单元202存储第X+1片段。
所述第一存储单元202,用于将比特串中的所述第X+1片段按照第一规则进行存储,X为大于0并且小于N的整数,所述比特串由N个片段组成,所述N个片段中的第一片段至第N片段在所述比特串中按照从高比特到低比特的方向依次排列,N为大于2的整数,所述N个片段中每个片段包括0或者1。
存储器用于存储第X+1片段。举例来说,存储器可以是DDR SDRAM。存储器也可以是FPGA。
举例来说,触发单元201可以是CPU中的硬件电路。第一存储单元202可以是CPU中的硬件电路。CPU可以是网络设备中的CPU。网络设备可以是路由器、交换机、防火墙或者负载均衡器。
举例来说,比特串可以为一个IP地址。IP地址可以是路由表中的信息。在路由表中存储IP地址时,可以将IP地址分为多个片段,并对多个片段分别进行存储。
举例来说,比特串可以是一个由32比特组成的IPv4地址。可以将IPv4地址分为多个片段。例如,可以将IPv4地址分为8个片段,每个片段的长度都是4比特。也可以将比特串分为11个片段。其中,前10个片段都是3个比特,最后一个片段是2个比特。
比特串也可以是一个由128比特组成的IPv6地址。可以将IPv6地址分为N个片段。其中,第一片段至第N片段在所述比特串中按照从高比特到低比特的方向依次排列。其中,第一片段可以存储在多比特树中位于第一级的多比特节点中,第二片段可以存储在多比特书中位于第二级的多比特节点中,以此类推。
举例来说,比特串也可以是一个IP地址前缀。
所述第一存储单元202包括:
第一确定子单元203,用于根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,所述第X数据结构中存储了第一基础地址。
举例来说,第一确定子单元203可以是第一存储单元202中的硬件电路。
第一域为第X数据结构中的一个域。第X数据结构可以包括多个域。举例来说,第X数据结构还可以包括基础地址域。基础地址域可以用于存储第一基础地址。
第一域用于存储第X片段。除了用于存储第X片段,第一域还可以用于存储其他信息。第一域用于存储一个集合。第X片段是集合中的一个元素。集合中还可以包括其他元素。举例来说,集合可以是一个数组。数组可以包括一个或者多个数组元素。第X片段可以是上述一个或者多个数组元素中的一个数组元素。第X数据结构可以是一个结构体。本领域的技术人员可以理解,结构体中可以包括数组。
根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量。举例来说,第一偏移量可以是第X片段存储在第一域中的位置信息。
举例来说,第X片段存储在第一域中的位置信息可以是第X片段在第一域中的序号。例如,第一域可以包括多项信息,第X片段为其中的一项信息。多项信息在第一域中构成一个队列。第X片段存储在第一域中的位置信息可以是第X片段在队列中的序号。多项信息中,第一项信息的序号可以为1,第二项信息的序号可以为2,以此类推。当然,最小的序号可以不等于1。例如,第一项信息的序号可以为0,第二项信息的序号可以为1,以此类推。另外,第一域可以只包括第X片段。在这种情况下,第X片段在第一域中的序号可以是1,可以是0,也可以是其他数值。
第一计算子单元204,用于计算所述第一确定子单元203提供的所述第一基础地址与所述第一偏移量的和,得到第一新地址,所述第一新地址对应的存储空间用于存储第X+1数据结构。
举例来说,第一计算子单元204可以是第一存储单元202中的硬件电路。
举例来说,第X+1数据结构可以是数组、链表或者结构体。当第X+1数据结构是数组时,第一新地址可以是数组的指针或者数组元素的指针。当第X+1数据结构是链表时,第一新地址可以是链表的指针或者链表成员的指针。当第X+1数据结构是结构体时,第一新地址可以是结构体的指针或者结构体成员的指针。
第一存储子单元205,用于将所述第X+1片段存储到所述第一计算子单元204提供的所述第一新地址所对应的存储空间存储的所述第X+1数据结构中。
举例来说,第一存储子单元205可以是第一存储单元202中的硬件电路。
举例来说,当第X+1数据结构是变量时,可以将第X+1片段存储到用于存储该变量的地址所对应的存储空间中。当第X+1数据结构是数组时,可以将第X+1片段存储到该数组的数组元素中。当第X+1数据结构是链表时,可以将第X+1片段存储到该链表的链表成员中。当第X+1数据结构是结构体时,可以将第X+1片段存储到该结构体的结构体成员中。
通过本发明实施例提供的技术方案,可以根据比特串的第X片段存储该比特串的第X+1片段,不存在bitmap方案中需要在标记域中使用标记位0,以对当前节点的子节点为无效子节点进行标识的技术问题。
可选的,
所述N个片段中所述第一片段至第N-1片段都由M个比特构成,M为大于等于1的整数。
可选的,
所述第一确定子单元203,用于根据所述第X片段存储在所述第一域中的位置确定所述第一偏移量,所述第X数据结构存储在第一多比特节点中,所述第一多比特节点为第一多比特树中的一个多比特节点。
所述第一存储子单元205,用于将所述第X+1片段存储到第二多比特节点中,所述第二多比特节点为所述第一多比特节点的下一级多比特节点,所述第X+1数据结构存储在所述第二多比特节点中,所述第二多比特节点为所述第一多比特树中的一个多比特节点。
第一多比特树为一个多比特树。举例来说,第一多比特树可以是一个二叉树或者三叉树。
可选的,
所述装置包括第二存储单元,所述第二存储单元用于将所述N个片段中的第Y片段按照第二规则进行存储,Y为大于0并且小于N的整数,Y不等于X,所述第二存储单元包括:
第二确定子单元,用于对所述N个片段中的第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量,所述第Y数据结构包含第二基础地址;
第二计算子单元,用于计算所述第二确定子单元提供的所述第二基础地址与所述第二偏移量的和,得到第二新地址,所述第二新地址对应的存储空间用于存储第Y+1数据结构;
第二存储子单元,用于将所述第Y片段存储到所述第二计算子单元提供的第二新地址所对应的存储空间存储的所述第Y+1数据结构中。
举例来说,第二基础地址为一个基础地址。第Y数据结构可以包括用于存储第二基础地址的基础地址域。第Y数据结构中可以存储用于与第Y片段进行哈希运算的哈希因子。第Y数据结构可以包括哈希域。用于与第Y片段进行哈希运算的哈希因子可以存储在哈希域中。
第Y+1数据结构可以是变量、结构体、数组或者链表。关于第二新地址,具体可以参考第一新地址。第Y片段可以是变量的值、结构体成员、数组元素或者链表成员。
对第Y片段执行哈希运算可能会产生哈希冲突。存储在第Y+1数据结构中的第Y片段可以用于判断是否发生了哈希冲突。
可选的,
所述第二存储子单元还用于将用于与第Y+1片段进行哈希运算的哈希因子存储到第Y+1数据结构中。
可选的,
所述第二确定子单元,用于对所述第Y片段进行哈希运算得到所述哈希结果,根据所述哈希结果确定所述第二偏移量,所述第Y数据结构存储在第三多比特节点中,所述第三多比特节点为第二多比特树中的一个多比特节点;
所述第二存储子单元,用于将所述第Y片段存储到第四多比特节点中,所述第四多比特节点为所述第三多比特节点的下一级多比特节点,所述第Y+1数据结构存储在所述第四多比特节点中,所述第四多比特节点为所述第二多比特树中的一个多比特节点。
第二多比特树为一个多比特树。举例来说,第二多比特树可以是二叉树或者三叉树。第二多比特树与第一多比特树可以是同一个多比特树,也可以不是同一个多比特树。
可选的,
所述第X数据结构中包含第一指示信息,所述第一指示信息用于标识所述第X+1片段是按照所述第一规则进行存储的;或者,
所述第Y数据结构中包含第二指示信息,所述第二指示信息用于标识所述第Y片段是按照所述第二规则进行存储的。
第一指示信息可以是一个指示信息。举例来说,第一指示信息可以是一个比特或者多个比特。第二指示信息可以是一个指示信息。举例来说,第二指示信息可以是一个比特或者多个比特。
所述第一指示信息用于标识所述第X+1片段是按照所述第一规则进行存储的。
举例来说,在已经根据第一规则存储了第X+1片段的情况下,当需要在存储空间中查找是否存储了第X+1片段时,可以根据第一指示信息确定如果存储空间存储有所述第X+1片段,所述第X+1片段是按照所述第一规则进行存储的。进一步的,可以根据第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,并计算所述第一基础地址与所述第一偏移量的和,从而得到所述第一新地址。可以在所述第一新地址对应的所述第X+1数据结构中查找所述第X+1片段。上述查找可以由NP发起,也可以由ASIC发起。
所述第二指示信息用于标识所述第Y片段是按照所述第二规则进行存储的。
举例来说,在已经根据第二规则存储了第Y片段的情况下,当需要在存储空间中查找是否存储了第Y片段时,可以根据第二指示信息确定如果存储空间存储有所述第Y片段,所述第Y片段是按照所述第二规则进行存储的。进一步的,可以对第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量,并计算所述第二基础地址与所述第二偏移量的和,从而得到所述第二新地址。可以在所述第二新地址对应的所述第Y+1数据结构中查找所述第Y片段。上述查找可以由NP发起,也可以由ASIC发起。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种存储方法,其特征在于,所述方法包括:
将比特串中的第X+1片段按照第一规则进行存储,X为大于0并且小于N的整数,所述比特串由N个片段组成,所述N个片段中的第一片段至第N片段在所述比特串中按照从高比特到低比特的方向依次排列,N为大于2的整数,所述N个片段中每个片段包括0或者1,所述第一规则包括:
根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,所述第X数据结构中存储了第一基础地址;
计算所述第一基础地址与所述第一偏移量的和,得到第一新地址,所述第一新地址对应的存储空间用于存储第X+1数据结构;
将所述第X+1片段存储到所述第X+1数据结构中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量包括:
根据所述第X片段存储在所述第一域中的位置确定所述第一偏移量,所述第X数据结构存储在第一多比特节点中,所述第一多比特节点为第一多比特树中的一个多比特节点;
所述将所述第X+1片段存储到所述第X+1数据结构中包括:
将所述第X+1片段存储到第二多比特节点中,所述第二多比特节点为所述第一多比特节点的下一级多比特节点,所述第X+1数据结构存储在所述第二多比特节点中,所述第二多比特节点为所述第一多比特树中的一个多比特节点。
3.根据权利要求1或2所述方法,其特征在于,将所述N个片段中的第Y片段按照第二规则进行存储,Y为大于0并且小于N的整数,Y不等于X,所述第二规则包括:
对所述N个片段中的第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量,所述第Y数据结构包含第二基础地址;
计算所述第二基础地址与所述第二偏移量的和,得到第二新地址,所述第二新地址对应的存储空间用于存储第Y+1数据结构;
将所述第Y片段存储到所述第Y+1数据结构中。
4.根据权利要求3所述方法,其特征在于:所述对所述N个片段中的第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量包括:
对所述第Y片段进行哈希运算得到所述哈希结果,根据所述哈希结果确定所述第二偏移量,所述第Y数据结构存储在第三多比特节点中,所述第三多比特节点为第二多比特树中的一个多比特节点;
所述将所述第Y片段存储到所述第Y+1数据结构中包括:
将所述第Y片段存储到第四多比特节点中,所述第四多比特节点为所述第三多比特节点的下一级多比特节点,所述第Y+1数据结构存储在所述第四多比特节点中,所述第四多比特节点为所述第二多比特树中的一个多比特节点。
5.根据权利要求3或4所述方法,其特征在于:
所述第X数据结构中包含第一指示信息,所述第一指示信息用于标识所述第X+1片段是按照所述第一规则进行存储的;或者,
所述第Y数据结构中包含第二指示信息,所述第二指示信息用于标识所述第Y片段是按照所述第二规则进行存储的。
6.一种存储装置,其特征在于,所述装置包括触发单元以及第一存储单元:
所述触发单元,用于触发所述第一存储单元存储第X+1片段;
所述第一存储单元,用于将比特串中的所述第X+1片段按照第一规则进行存储,X为大于0并且小于N的整数,所述比特串由N个片段组成,所述N个片段中的第一片段至第N片段在所述比特串中按照从高比特到低比特的方向依次排列,N为大于2的整数,所述N个片段中每个片段包括0或者1,所述第一存储单元包括:
第一确定子单元,用于根据所述N个片段中的第X片段存储在第X数据结构的第一域中的位置确定第一偏移量,所述第X数据结构中存储了第一基础地址;
第一计算子单元,用于计算所述第一确定子单元提供的所述第一基础地址与所述第一偏移量的和,得到第一新地址,所述第一新地址对应的存储空间用于存储第X+1数据结构;
第一存储子单元,用于将所述第X+1片段存储到所述第一计算子单元提供的所述第一新地址所对应的存储空间存储的所述第X+1数据结构中。
7.根据权利要求6所述装置,其特征在于,
所述第一确定子单元,用于根据所述第X片段存储在所述第一域中的位置确定所述第一偏移量,所述第X数据结构存储在第一多比特节点中,所述第一多比特节点为第一多比特树中的一个多比特节点;
所述第一存储子单元,用于将所述第X+1片段存储到第二多比特节点中,所述第二多比特节点为所述第一多比特节点的下一级多比特节点,所述第X+1数据结构存储在所述第二多比特节点中,所述第二多比特节点为所述第一多比特树中的一个多比特节点。
8.根据权利要求6或7所述装置,其特征在于,
所述装置包括第二存储单元,所述第二存储单元用于将所述N个片段中的第Y片段按照第二规则进行存储,Y为大于0并且小于N的整数,Y不等于X,所述第二存储单元包括:
第二确定子单元,用于对所述N个片段中的第Y片段进行哈希运算得到哈希结果,根据所述哈希结果确定第二偏移量,所述第Y数据结构包含第二基础地址;
第二计算子单元,用于计算所述第二确定子单元提供的所述第二基础地址与所述第二偏移量的和,得到第二新地址,所述第二新地址对应的存储空间用于存储第Y+1数据结构;
第二存储子单元,用于将所述第Y片段存储到所述第二计算子单元提供的第二新地址所对应的存储空间存储的所述第Y+1数据结构中。
9.根据权利要求8所述装置,其特征在于:
所述第二确定子单元,用于对所述第Y片段进行哈希运算得到所述哈希结果,根据所述哈希结果确定所述第二偏移量,所述第Y数据结构存储在第三多比特节点中,所述第三多比特节点为第二多比特树中的一个多比特节点;
所述第二存储子单元,用于将所述第Y片段存储到第四多比特节点中,所述第四多比特节点为所述第三多比特节点的下一级多比特节点,所述第Y+1数据结构存储在所述第四多比特节点中,所述第四多比特节点为所述第二多比特树中的一个多比特节点。
10.根据权利要求8或9所述装置,其特征在于:
所述第X数据结构中包含第一指示信息,所述第一指示信息用于标识所述第X+1片段是按照所述第一规则进行存储的;或者,
所述第Y数据结构中包含第二指示信息,所述第二指示信息用于标识所述第Y片段是按照所述第二规则进行存储的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210145239.9A CN102682112B (zh) | 2012-05-11 | 2012-05-11 | 存储方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210145239.9A CN102682112B (zh) | 2012-05-11 | 2012-05-11 | 存储方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102682112A true CN102682112A (zh) | 2012-09-19 |
CN102682112B CN102682112B (zh) | 2014-11-19 |
Family
ID=46814037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210145239.9A Expired - Fee Related CN102682112B (zh) | 2012-05-11 | 2012-05-11 | 存储方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102682112B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102904812A (zh) * | 2012-09-29 | 2013-01-30 | 华为技术有限公司 | 路由表项的存储方法、查找方法、装置及系统 |
CN104954885A (zh) * | 2014-03-28 | 2015-09-30 | 中国电信股份有限公司 | 用于分发流媒体的方法和内容分发网络节点 |
CN110309368A (zh) * | 2018-03-26 | 2019-10-08 | 腾讯科技(深圳)有限公司 | 数据地址的确定方法、装置、存储介质和电子装置 |
CN113515326A (zh) * | 2021-05-18 | 2021-10-19 | 中国工商银行股份有限公司 | 数据转换方法、装置、电子设备以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090274218A1 (en) * | 2005-06-24 | 2009-11-05 | Silicon Image, Inc. | Method and System for Transmitting or Receiving N-Bit Video Data over a Serial Link |
CN101739462A (zh) * | 2009-12-31 | 2010-06-16 | 中兴通讯股份有限公司 | 可扩展标记语言编码方法、解码方法和客户端 |
WO2010075201A1 (en) * | 2008-12-24 | 2010-07-01 | Entropic Communications, Inc. | Packet aggregation and fragmentation at layer-2 over a managed network |
CN102223289A (zh) * | 2010-04-15 | 2011-10-19 | 杭州华三通信技术有限公司 | 一种存储IPv4地址和IPv6地址的方法和装置 |
CN102253957A (zh) * | 2011-04-13 | 2011-11-23 | 北京恒光创新科技股份有限公司 | 一种tcam多模式字符串匹配方法及装置 |
-
2012
- 2012-05-11 CN CN201210145239.9A patent/CN102682112B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090274218A1 (en) * | 2005-06-24 | 2009-11-05 | Silicon Image, Inc. | Method and System for Transmitting or Receiving N-Bit Video Data over a Serial Link |
WO2010075201A1 (en) * | 2008-12-24 | 2010-07-01 | Entropic Communications, Inc. | Packet aggregation and fragmentation at layer-2 over a managed network |
CN101739462A (zh) * | 2009-12-31 | 2010-06-16 | 中兴通讯股份有限公司 | 可扩展标记语言编码方法、解码方法和客户端 |
CN102223289A (zh) * | 2010-04-15 | 2011-10-19 | 杭州华三通信技术有限公司 | 一种存储IPv4地址和IPv6地址的方法和装置 |
CN102253957A (zh) * | 2011-04-13 | 2011-11-23 | 北京恒光创新科技股份有限公司 | 一种tcam多模式字符串匹配方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102904812A (zh) * | 2012-09-29 | 2013-01-30 | 华为技术有限公司 | 路由表项的存储方法、查找方法、装置及系统 |
CN102904812B (zh) * | 2012-09-29 | 2015-07-29 | 华为技术有限公司 | 路由表项的存储方法、查找方法、装置及系统 |
CN104954885A (zh) * | 2014-03-28 | 2015-09-30 | 中国电信股份有限公司 | 用于分发流媒体的方法和内容分发网络节点 |
CN104954885B (zh) * | 2014-03-28 | 2018-09-14 | 中国电信股份有限公司 | 用于分发流媒体的方法和内容分发网络节点 |
CN110309368A (zh) * | 2018-03-26 | 2019-10-08 | 腾讯科技(深圳)有限公司 | 数据地址的确定方法、装置、存储介质和电子装置 |
CN110309368B (zh) * | 2018-03-26 | 2023-09-22 | 腾讯科技(深圳)有限公司 | 数据地址的确定方法、装置、存储介质和电子装置 |
CN113515326A (zh) * | 2021-05-18 | 2021-10-19 | 中国工商银行股份有限公司 | 数据转换方法、装置、电子设备以及存储介质 |
CN113515326B (zh) * | 2021-05-18 | 2024-02-06 | 中国工商银行股份有限公司 | 数据转换方法、装置、电子设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102682112B (zh) | 2014-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4669067B2 (ja) | 動的フラグメントマッピング | |
JP6542909B2 (ja) | ファイル操作方法及び装置 | |
CN106547644B (zh) | 增量备份方法和设备 | |
CN103703467A (zh) | 存储数据的方法和装置 | |
WO2019117311A1 (ja) | ブロックチェーン・ネットワークにおいて過去のトランザクションにアクセス可能とするための方法及びノード | |
CN103281246A (zh) | 报文处理方法及网络设备 | |
WO2013097546A1 (en) | Assisting query and querying | |
CN102682112B (zh) | 存储方法和装置 | |
CN103229151A (zh) | 一种分区扩展方法及装置 | |
CN110769079A (zh) | 一种检索ip对应地理位置的方法及装置 | |
CN105095237A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN107085570A (zh) | 数据处理方法、应用服务器和路由器 | |
CN111680489B (zh) | 目标文本的匹配方法和装置、存储介质及电子设备 | |
JP2011209807A (ja) | データベース管理方法、データベースシステム、プログラム及びデータベースのデータ構造 | |
WO2014020032A3 (de) | Hochverfügbares rechnersystem, arbeitsverfahren und dessen verwendung | |
CN103714086A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN104965826A (zh) | 基于浏览器的检索方法及检索装置 | |
CN103873464A (zh) | 报文处理的方法及转发设备 | |
CN104038423A (zh) | 一种Open flow流表刷新方法及路由设备 | |
CN106570029B (zh) | 分布式关系型数据库的数据处理方法及系统 | |
CN106383826A (zh) | 数据库查询方法和装置 | |
JP6705764B2 (ja) | 生成装置、生成方法、及び生成プログラム | |
CN103986656A (zh) | 查找方法和查找装置 | |
CN107885861A (zh) | 一种图像检索系统和方法 | |
CN103559106A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141119 Termination date: 20190511 |
|
CF01 | Termination of patent right due to non-payment of annual fee |