一种存储物理数据表的方法及装置与流程

文档序号:15517858发布日期:2018-09-25 18:46阅读:158来源:国知局

本申请涉及存储技术领域,尤其涉及一种存储物理数据表的方法及装置。



背景技术:

随着网络的不断发展,处理器在存储数据表(例如哈希表或者线性表等)时,对数据表的物理存储空间的需求越来越高。

以哈希表为例,如图1所示,处理器可以将一个所需物理存储空间较大的哈希表在逻辑上划分成多个逻辑子表(如图1中a1、a2、a3和a4)进行存储,并为每个非空的逻辑子表(例如图1中的a1、a2和a3)分别分配物理存储空间进行存储。其中,非空的逻辑子表是指逻辑子表中存在至少一个数据项。

然而,由于哈希表的随机性,哈希表中数据项的分布可能比较分散,即使某个逻辑子表,例如图1所示的a2或者a3中只有一个数据项,也需要为整个逻辑子表分配物理存储空间。如此浪费了物理存储空间。



技术实现要素:

本申请提供一种存储物理数据表的方法及装置,能够节省存储物理数据表的设备的物理存储空间,从而提高该设备的物理存储空间的使用率。

为达到上述目的,本申请采用如下技术方案:

第一方面,提供一种存储物理数据表的方法,该方法包括:获取第一逻辑数据表中的第一表项的第一数据项,并将该第一逻辑数据表中的第一表项的第一数据项存储至物理数据表的第一位置;以及获取第二逻辑数据表中的第一表项的第一数据项,并将该第二逻辑数据表中的第一表项的第一数据项存储至该物理数据表的不同于该第一位置的第二位置。

本申请提供的存储物理数据表的方法,由于可以将多个逻辑数据表(例如上述第一逻辑数据表和第二逻辑数据表)中的表项的数据项(例如上述第一逻辑数据表中的第一表项的第一数据项和第二逻辑数据表中的第一表项的第一数据项)存储到一个物理数据表中,因此可以只为该多个逻辑数据表中的表项中存在的数据项(即上述存储至物理数据表中的数据项)分配物理存储空间,而无需为整个逻辑数据表分配物理存储空间,从而能够节省存储物理数据表的设备的物理存储空间,进而提高该设备的物理存储空间的使用率。

在第一方面的第一种可选的实现方式中,本申请提供的存储物理数据表的方法还可以包括:获取第三逻辑数据表中的第一表项的第一数据项,并将该第三逻辑数据表中的第一表项的第一数据项存储至上述物理数据表的第三位置。其中,该第三位置位于该物理数据表中的第一表项,该第三位置不同于该第一位置。如此,可以将不同逻辑数据表(例如第一逻辑数据表和第三逻辑数据表)中的表项的数据项存储至物理数据表中的同一表项。

在第一方面的第二种可选的实现方式中,本申请提供的存储物理数据表的方法还可以包括:获取上述第一逻辑数据表中的第一表项的第二数据项,并将该第一逻辑数据表中的第一表项的第二数据项存储至上述物理数据表的第四位置。其中,该第四位置位于该物理数据表中的第一表项,该第四位置不同于上述第一位置和上述第三位置。如此,可以将同一逻辑数据表中的同一表项的不同数据项存储至物理数据表中的同一表项,即物理数据表中的一个表项可以用于存储同一逻辑数据表中的同一表项的不同数据项。

通过第一方面的第二种可选的实现方式,可以使得每个逻辑数据表中的同一表项的所有数据项均存储至物理数据表中与该表项的排列序号相同的表项,如此,在查询某个数据项时,可以按照现有的查询数据项的机制查询该数据项,例如可以根据该数据项在其所属的逻辑数据表中的表项查找到该数据项在物理数据表中所在的表项,然后再在该表项中查找该数据项。也就是说,采用本发明实施例提供的存储物理数据表的方法,可以无需修改现有的在数据表中查询数据项的机制。

如此,本申请提供的存储物理数据表的方法,可以在兼容现有查询数据项的机制的基础上,节省存储物理数据表的设备的物理存储空间,提高该设备的物理存储空间的使用率。

第二方面,提供一种存储物理数据表的装置,该装置包括获取单元和存储单元。其中,获取单元用于获取第一逻辑数据表中的第一表项的第一数据项;存储单元用于将获取单元获取的该第一逻辑数据表中的第一表项的第一数据项存储至物理数据表的第一位置。获取单元还用于获取第二逻辑数据表中的第一表项的第一数据项;存储单元还用于将获取单元获取的该第二逻辑数据表中的第一表项的第一数据项存储至该物理数据表的不同于该第一位置的第二位置。

在第二方面的第一种可选的实现方式中,上述获取单元还用于获取第三逻辑数据表中的第一表项的第一数据项;上述存储单元还用于将获取单元获取的该第三逻辑数据表中的第一表项的第一数据项存储至该物理数据表的第三位置。该第三位置位于该物理数据表中的第一表项,该第三位置不同于上述第一位置。

在第二方面的第二种可选的实现方式中,上述获取单元还用于获取上述第一逻辑数据表中的第一表项的第二数据项;上述存储单元还用于将获取单元获取的该第一逻辑数据表中的第一表项的第二数据项存储至该物理数据表的第四位置。该第四位置位于该物理数据表中的第一表项,该第四位置不同于上述第一位置和上述第三位置。

可选地,在上述第一方面和第二方面中,上述第一位置位于上述物理数据表中的第一表项,上述第二位置位于该物理数据表中的第二表项。即该第一位置和该第二位置位于该物理数据表中的不同表项。

可选地,在上述第一方面和第二方面中,上述第一位置还存储有用于标识上述第一逻辑数据表的第一标识;上述第二位置还存储有用于标识上述第二逻辑数据表的第二标识。

可选地,在上述第一方面和第二方面中,上述用于标识第一逻辑数据表的第一标识和用于标识第二逻辑数据表的第二标识还存储于执行本申请提供的存储物理数据表的方法的装置(即存储物理数据表的装置)中。可选地,该第一标识和第二标识存储于该装置的存储器、中央处理器(centralprocessingunit,cpu)或网络处理器(networkprocessor,np)中。

本申请中,通过存储第一逻辑数据表的标识和第二逻辑数据表的标识,能够区分物理数据表中存储的不同数据项(这些数据项可以为同一表项的,也可以为不同表项的)所属的逻辑数据表。

可以理解,本申请中,上述第三位置还可以还存储有用于标识上述第三逻辑数据表的第三标识;上述第四位置还可以还存储有用于标识上述第一逻辑数据表的第一标识。

本申请中,如果物理数据表中的某个表项不足以存储多个逻辑数据表中排列序号相同的表项的数据项,那么本申请在存储该多个逻辑数据表中的各个数据项时,可以设置或者创建多个物理数据表,并将该多个逻辑数据表中的各个数据项分别按照存储顺序依次存储至该多个物理数据表中的相应物理数据表中。

第三方面,提供一种存储物理数据表的装置,该装置包括处理器和与处理器耦合连接的存储器。该处理器用于执行上述第一方面或其任意一种可选的实现方式中的存储物理数据表的方法,该存储器用于存储该物理数据表。

第四方面,提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当该计算机指令在存储物理数据表的装置上运行时,使得该装置执行上述第一方面或其任意一种可选的实现方式中的存储物理数据表的方法。

对第二方面、第二方面的任意一种可选的实现方式、第三方面以及第四方面的技术效果以及其他内容可以参见上述对第一方面和其任意一种可选的实现方式的技术效果以及其他内容的相关描述,此处不再赘述。

附图说明

图1为现有技术提供的数据表的结构示意图;

图2为本发明实施例提供的通信系统的架构示意图;

图3为本发明实施例提供的路由器的硬件示意图;

图4为本发明实施例提供的存储物理数据表的方法示意图一;

图5为本发明实施例提供的第一逻辑数据表或者物理数据表的结构示意图;

图6为本发明实施例提供的存储物理数据表的方法示意图二;

图7为本发明实施例提供的存储物理数据表的方法示意图三;

图8为本发明实施例提供的存储逻辑数据表中的数据项的示意图;

图9为本发明实施例提供的存储物理数据表的装置的结构示意图一;

图10为本发明实施例提供的存储物理数据表的装置的结构示意图二。

具体实施方式

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。

本申请的说明书和权利要求书中的术语“第一”、“第二”和“第三”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一数据表、第二数据表和第三数据表等是用于区别不同的数据表,而不是用于描述数据表的特定顺序。

在本发明实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个逻辑数据表是指两个或两个以上的逻辑数据表;多个局域网是指两个或两个以上的局域网。

本发明实施例中,存储物理数据表的设备可以为路由器、交换机或者工作站等。路由器可以为有线路由器、无线路由器或者分布式路由器等。

本发明实施例提供的存储物理数据表的方法可以应用于路由器、交换机或者工作站中。具体可以应用于路由器、交换机或者工作站中的各个处理器中。例如,路由器、交换机或者工作站中的cpu,路由器、交换机或者工作站中的主控板或接口板中的cpu或者路由器、交换机或者工作站中的np等。

图2所示为本发明实施例提供的一种存储物理数据表的方法应用的通信系统的架构示意图。在图2中,该通信系统包括位于核心网中的核心路由器10、位于多个局域网中的边缘路由器(图2以2个边缘路由器,分别为边缘路由器20和边缘路由器21为例)和多个终端设备(图2以4个终端设备,分别为终端设备30、终端设备31、终端设备32和终端设备33为例)。其中,核心路由器10与边缘路由器20和边缘路由器21分别连接,边缘路由器20与终端设备30和终端设备31分别连接,边缘路由器21与终端设备32和终端设备33分别连接。以终端设备30向终端设备32发送数据报文为例,终端设备30经由边缘路由器20将该数据报文发送给核心路由器10,核心路由器10根据该数据报文确定从核心路由器10的哪个端口发出该数据报文,然后核心路由器10再将该数据报文从确定的端口经由边缘路由器21转发给终端设备32。

在终端设备30向终端设备32发送数据报文的过程中,核心路由器10、边缘路由器20和边缘路由器21均可以生成、接收或者发送数据表、数据表中的表项或数据表中的表项的数据项,并按照这些数据表中的表项或数据表中的表项的数据项向各自的下一跳设备转发该数据报文。

本发明实施例中,如图2所示的各个设备之间可以通过无线方式连接。图2中为了直观的表示各个设备之间的连接关系,均以实线示意各个设备之间的连接关系。

可选的,本发明实施例提供的逻辑数据表可以为哈希表,也可以为线性表,还可以为能够采用本发明实施例提供的存储物理数据表的方法的任意形式的逻辑数据表,本发明实施例不作限定。

其中,以存储物理数据表的设备是路由器,逻辑数据表是哈希表为例,逻辑数据表可以为媒体接入控制(mediaaccesscontrol,mac)表、组播路由表、地址解析协议(addressresolutionprotocol,arp)表等。以存储物理数据表的设备是路由器,逻辑数据表是线性表为例,逻辑数据表可以为多协议标签交换(multi-protocollabelswitching,mpls)表、虚拟局域网(virtuallocalareanetwork,vlan)表、子接口表或者流表等。

本发明实施例中,上述线性表通常需要预先为其分配好物理存储空间。以路由器或者交换机中存储的vlan表为例,由于路由器或者交换机的某个端口可能并没有在vlan中使用,因此路由器或者交换机中存储的该vlan表中可能并没有与该端口对应的表项,但是该表项占用的物理存储空间通常需要预先为其分配好。

上述如图2所示的终端设备可以为手机、平板电脑、笔记本电脑、超级移动个人计算机(ultra-mobilepersonalcomputer,umpc)、上网本或者个人数字助理(personaldigitalassistant,pda)等,具体的可以根据实际应用场景确定,本发明实施例不作限定。

本发明实施例中,上述如图2所示的核心路由器10、边缘路由器20和边缘路由器21的结构可以相同,也可以不同。下面以核心路由器10、边缘路由器20和边缘路由器21的结构相同为例,结合图3介绍本发明实施例提供的路由器的硬件结构。如图3所示,本发明实施例提供的路由器可以包括:主控板400、与主控板400连接的交换网板(switchfabric)401和至少一个接口板(图3以两个接口板,分别为接口板402a和接口板402b为例),交换网板401和至少一个接口板中的每个接口板连接。主控板400可以包括cpu400a。接口板402a可以包括cpu403a、与cpu403a连接的存储器404a、np405a和物理接口卡406a。接口板402b可以包括cpu403b、与cpu403b连接的存储器404b、np405b和物理接口卡406b。

其中,主控板400用于路由器上的整体控制。例如主控板400可以控制接口板402a(或者接口板402b)从与路由器连接的一个设备接收数据报文,并控制交换网板401对接口板402a(或者接口板402b)接收到的数据报文进行交换处理,以及控制接口板402b(或者接口板402a)发送经交换网板401传送过来的数据报文给与路由器连接的另一个设备。可以理解,上述数据报文从接口板402a进入交换网板401之后也可以再从接口板402a发出。

交换网板400用于对接口板402a或者接口板402b接收到的数据报文进行交换处理。

接口板402a或者接口板402b用于接收与路由器连接的一个设备发送的数据报文,并将该数据报文发送给交换网板401,以及将从交换网板401接收的数据报文发送给该设备或者与路由器连接的另一个设备。

上面描述的路由器是以如图3所示的路由器的硬件结构为例的。路由器中还可以包括更多或者更少的部件,路由器的功能也可以包括更多或者更少的功能,具体以实际使用情况确定,本发明实施例不再详述。

本发明实施例提供的存储物理数据表的方法的执行主体可以为上述的路由器、交换机或者工作站等。以在路由器中执行为例,执行主体也可以为该路由器中的cpu、该路由器中的主控板或接口板中的cpu或者该路由器中的np等,例如图3所示的路由器中的cpu400a、cpu403a、np405a、cpu403b或者np405b。

本发明实施例提供的存储物理数据表的方法应用于上述如图3所示的路由器时,如图3所示的存储器404a或者存储器404b可以用于存储该物理数据表。其中,存储器404a也可以集成在np405a中,存储器404b也可以集成在np405b。该存储器404a和存储器404b可以为静态随机存取存储器(staticrandomaccessmemory,sram)。

下面以执行主体是路由器为例介绍本发明实施例提供的存储物理数据表的方法。

如图4所示,本发明实施例提供一种存储物理数据表的方法,该方法可以包括s101-s104。

s101、路由器获取第一逻辑数据表中的第一表项的第一数据项。

本发明实施例中,在通信过程中,由于路由器可以实现路由的功能,即路由器可以根据传输信道的情况自动选择和设定传输路径,然后以最佳的传输路径,按顺序发送通信数据,因此为了提升路由器的路由效率,路由器在实现路由过程中可能需要存储各种各样的数据表。路由器存储了数据表之后,在后续通信过程中可以直接使用已存储的数据表,该数据表例如是哈希表或线性表。具体可以是路由器需要存储哈希表或者线性表中的各个数据项。

上述第一表项可以由第一逻辑数据表中的多个数据项组成。示例性的,假设图5为本发明实施例提供的第一逻辑数据表的结构示意图,那么在图5中,00-03(图5中标记为表项1)、10-13(图5中标记为表项2)以及20-23(图5中标记为表项3)分别为第一逻辑数据表中的一个表项。以第一逻辑数据表中的表项00-03为例,该表项中的00、01、02和03为该表项的4个数据项。

本发明实施例中,上述第一逻辑数据表中的第一表项的第一数据项可以是路由器生成的,也可以是路由器从其他设备接收的,还可以是路由器从其他设备接收并计算后生成的。具体的,可以根据实际使用情况确定,本发明实施例不作限定。

可选的,本发明实施例中,上述第一逻辑数据表中的第一表项的第一数据项中可以包括该第一数据项所属的第一表项的标识。该标识可以为路由器计算的该第一表项的关键(key)值。以第一逻辑数据表中的第一表项的第一数据项是一个mac地址为例,当路由器获取到一个新的mac地址时,路由器可以对该mac地址进行哈希计算得到一个哈希值,并根据该哈希值确定该mac地址在逻辑数据表中对应于或具体位于哪个表项,然后根据该哈希值在第一逻辑数据表中对应的表项,将该哈希值存储至物理数据表中的一个表项的一个位置,例如下述s102。

本发明实施例中,逻辑数据表可以理解为逻辑存储的一些数据项,这些数据项具有一定的逻辑关系。例如,在路由器中,该逻辑数据表可以为存储在路由器的cpu或内存中的一些数据项。可以理解,上述第一逻辑数据表可以存储在路由器的cpu或内存中。

s102、路由器将第一逻辑数据表中的第一表项的第一数据项存储至物理数据表的第一位置。

本发明实施例中,物理数据表可以理解为物理存储的数据表。例如,在路由器中,该物理数据表可以存储在路由器的接口板中的存储器(该存储器可以集成在接口板中的np中)中,该存储器例如是具有较高性能且容量较小的sram。

举例来说,本发明实施例中,假设第一逻辑数据表包括表项1、表项2和表项3,物理数据表包括表项1、表项2和表项3,那么采用本发明实施例提供的存储物理数据表的方法可以将第一逻辑数据表中的表项1的各个数据项存储至物理数据表中的表项1的各个位置,将第一逻辑数据表中的表项2的各个数据项存储至物理数据表中的表项2的各个位置,将第一逻辑数据表中的表项3的各个数据项存储至物理数据表中的表项3的各个位置。

可选地,本发明实施例中,上述第一逻辑数据表中的表项1、表项2和表项3顺序排列,例如第一逻辑数据表中的表项1、表项2和表项3分别是第一逻辑数据表中的第一个、第二个和第三个表项,同样地,物理数据表中的表项1、表项2和表项3也顺序排列,例如物理数据表中的表项1、表项2和表项3分别是物理数据表中的第一个、第二个和第三个表项。那么本发明实施例中,可以认为逻辑数据表中的表项1与物理数据表中的表项1是指排列序号相同的两个表项,逻辑数据表中的表项2与物理数据表中的表项2是指排列序号相同的两个表项,逻辑数据表中的表项3与物理数据表中的表项3是指排列序号相同的两个表项。

可选的,上述描述中,表项的标号(诸如表项1中的“1”、表项2中的“2”或表项3中的“3”)可以用于表示表项在数据表中的排列序号。不同数据表中标号相同的表项是指不同数据表中排列序号相同的表项。例如第一逻辑数据表中的表项1、第二逻辑数据表中的表项1和物理数据表中的表项1是指第一逻辑数据表、第二逻辑数据表和物理数据表中排列序号相同的表项。

本发明实施例中,上述逻辑数据表中的表项与物理数据表中的表项的排列序号的说明同样也适用于两个逻辑数据表中的表项。例如,第一逻辑数据表中的表项1与第二逻辑数据表中的表项1是指排列序号相同的两个表项。

可选的,第二逻辑数据表中的表项1与物理数据表中的表项1也是指排列序号相同的两个表项。在本发明实施例提供的存储物理数据表的方法中,可以将多个逻辑数据表中排列序号相同的表项的数据项存储到物理数据表中与这些表项的排列序号相同的物理数据表中。例如,可以将第一逻辑数据表中的表项1的各个数据项与第二逻辑数据表中的表项1的各个数据项均存储至物理数据表中的表项1的各个位置。

可选的,本发明实施例中,逻辑数据表(包括上述第一逻辑数据表、下述第二逻辑数据表和下述第三逻辑数据表)和物理数据表的结构相同,且逻辑数据表中的表项的排列顺序和物理数据表中的表项的排列顺序也相同。例如,上述第一逻辑数据表、下述第二逻辑数据表、下述第三逻辑数据表和物理数据表均可以为如图5所示的结构。

s103、路由器获取第二逻辑数据表中的第一表项的第一数据项。

其中,上述第一逻辑数据表中的第一表项的标识和第二逻辑数据表中的第一表项的标识可以相同,也可以不同。例如,第一逻辑数据表中的第一表项的标识为key1,那么第二逻辑数据表中的第一表项的标识也可以为key1;或者第一逻辑数据表中的第一表项的标识为key1,那么第二逻辑数据表中的第一表项的标识可以为key2。

对于第二逻辑数据表中的第一表项和第二逻辑数据表中的第一表项的第一数据项的描述可以参见上述s101中对第一逻辑数据表中的第一表项和第一逻辑数据表中的第一表项的第一数据项的相关描述,此处不再赘述。

s104、路由器将第二逻辑数据表中的第一表项的第一数据项存储至物理数据表的第二位置。

其中,上述第二位置不同于第一位置。即物理数据表中的第二位置和物理数据表中的第一位置为物理数据表中两个不同的位置。

可选的,本发明实施例中,上述第一位置可以位于物理数据表中的第一表项,上述第二位置可以位于物理数据表中的第二表项。示例性的,假设图5为本发明实施例提供的物理数据表的结构示意图,那么该第一位置可以为如图5所示的物理数据表中的00表示的位置,该第二位置可以为如图5所示的物理数据表中的10表示的位置。

本发明实施例中,如果物理数据表中的某个表项不足以存储多个逻辑数据表中排列序号相同的表项的数据项,那么本发明实施例在存储该多个逻辑数据表中的各个数据项时,可以设置或者创建多个物理数据表,并将该多个逻辑数据表中的各个数据项分别按照存储顺序依次存储至该多个物理数据表中的相应物理数据表中。

举例来说,假设物理数据表中的表项1(例如图5所示的表项1)不足以存储第一逻辑数据表中的表项1的所有数据项和第二逻辑数据表中的表项1的所有数据项,那么路由器在存储第一逻辑数据表中的各个数据项和第二逻辑数据表中的各个数据项时,可以设置或者创建多个物理数据表,并将第一逻辑数据表中的各个数据项和第二数据表中的各个数据项按照存储顺序依次存储至该多个物理数据表中的相应物理数据表中。

具体的,本发明实施例可以采用下述两种可能的实现方式存储该多个逻辑数据表中的各个数据项。

一种可能的实现方式是,本发明实施例可以在一个物理数据表中的某一表项全部存储了数据项之后,再在另一个物理数据表中与该表项的排列序号相同的表项存储该多个逻辑数据表中与该表项的排列序号相同的表项中还未存储的数据项。

例如,路由器可以在一个物理数据表中的表项1全部存储了数据项之后,再在另一个物理数据表中的表项1存储第一逻辑数据表中的表项1中还未存储的数据项和第二逻辑数据表中的表项1中还未存储的数据项。

另一种可能的实现方式是,本发明实施例可以在一个物理数据表中的某一表项全部存储了数据项之后,将该物理数据表中属于同一个逻辑数据表、且位于每一表项中的所有数据项分别对应搬移至另一个物理数据表中的各个表项。

本发明实施例中,通过上述另一种可能的实现方式,可以避免在物理数据表中存储数据项之后,在物理数据表中查找某个数据项时在多个物理数据表中查找该数据项,如此,能够提高在物理数据表中查找数据项的效率。

本发明实施例可以不限定s102和s103之间的执行顺序,例如可以先执行s102后执行s103,也可以先执行s103后执行s102,还可以同时执行s102和s103。

可选的,结合图4,如图6所示,本发明实施例提供的存储物理数据表的方法还可以包括下述的s105-s106:

s105、路由器获取第三逻辑数据表中的第一表项的第一数据项。

s106、路由器将该第三逻辑数据表中的第一表项的第一数据项存储至物理数据表的第三位置。

其中,上述第三位置位于该物理数据表中的第一表项,该第三位置不同于上述第一位置。即物理数据表中的第三位置和物理数据表中的第一位置为物理数据表中同一个表项中的两个不同的位置。示例性的,假设图5为本发明实施例提供的物理数据表的结构示意图,如图5所示,该第一位置可以为如图5所示的物理数据表中的00表示的位置,该第三位置可以为如图5所示的物理数据表中的01表示的位置。

本发明实施例中对于s101、s102、s103、s104、s105、s106各个步骤之间的执行顺序只限定s101在s102之前,s103在s104之前,s105在s106之前,对其余的步骤间执行顺序不做限定。例如可以先执行s103-s104后执行s105-s106,或者可以先执行s105-s106后执行s103-s104,还可以同时执行s103-s104和s105-s106。具体的可以根据第二逻辑数据表中的第一表项的第一数据项和第三逻辑数据表中的第一表项的第一数据项的存储顺序确定,本发明实施例不作限定。还例如可以先执行s104后执行s105,也可以先执行s105后执行s104,还可以同时执行s104和s105。上述图6是以s105-s106在s103-s104之后执行为例进行示例的。

可选的,结合图6,如图7所示,本发明实施例提供的存储物理数据表的方法还可以包括下述的s107-s108:

s107、路由器获取第一逻辑数据表中的第一表项的第二数据项。

s108、路由器将该第一逻辑数据表中的第一表项的第二数据项存储至物理数据表的第四位置。

其中,上述第四位置位于该物理数据表中的第一表项。该第四位置不同于上述第一位置和上述第三位置。即物理数据表中的第四位置与物理数据表中的第三位置和物理数据表中的第一位置为物理数据表中同一个表项中的三个不同的位置。示例性的,假设图5为本发明实施例提供的物理数据表的结构示意图,如图5所示,该第一位置可以为如图5所示的物理数据表中的00表示的位置,该第三位置可以为如图5所示的物理数据表中的01表示的位置。该第四位置可以为如图5所示的物理数据表中的02表示的位置。

本发明实施例中对于s101、s102、s103、s104、s105、s106、s107和s108各个步骤之间的执行顺序只限定s101在s102之前,s103在s104之前,s105在s106之前,s107在s108之前,对其余的步骤间执行顺序不做限定。本发明实施例可以不限定s103-s104、s105-s106和s107-s108之间的执行顺序。具体的可以根据第二逻辑数据表中的第一表项的第一数据项、第三逻辑数据表中的第一表项的第一数据项以及第一逻辑数据表中的第一表项的第二数据项的存储顺序确定,本发明实施例不作限定。本发明实施例也可以不限定s106和s107之间的执行顺序,例如可以先执行s106后执行s107,也可以先执行s107后执行s106,还可以同时执行s106和s107。上述图7是以s105-s106在s103-s104之后、且s107-s108在s105-s106之后执行为例进行示例的。

下面以一个实例,结合图8进一步说明本发明实施例提供的存储物理数据表的方法。

假设待存储的多个逻辑数据表中的各个数据项为各个地址(例如可以为mac地址或者互联网协议(iternetprotocol,ip)地址,或者可以为各个地址经过哈希计算得到的key值等)。如图8所示,图8中的表a表示本发明实施例提供的第一逻辑数据表,第一逻辑数据表包括一些地址。图8中的表b表示本发明实施例提供的第二逻辑数据表,第二逻辑数据表包括另一些地址。图8中的表c表示本发明实施例提供的第三逻辑数据表,第三逻辑数据表包括又一些地址。图8中的表d表示本发明实施例提供的物理数据表。示例性的,如图8所示,对于表a,图8中以横坐标0-3表示表a中的各个表项(例如0表示表a中的表项0,1表示表a中的表项1,2表示表a中的表项2,3表示表a中的表项3),以横坐标0-3和纵坐标0-3的各个交叉点表示表a中的各个表项的各个数据项。对于表b,图8中以横坐标0-3表示表b中的各个表项(例如0表示表b中的表项0,1表示表b中的表项1,2表示表b中的表项2,3表示表b中的表项3),以横坐标0-3和纵坐标0-3的各个交叉点表示表b中的各个表项的各个数据项。对于表c,图8中以横坐标0-3表示表c中的各个表项(例如0表示表c中的表项0,1表示表c中的表项1,2表示表c中的表项2,3表示表c中的表项3),以横坐标0-3和纵坐标0-3的各个交叉点表示表c中的各个表项的各个数据项。对于表d,图8中以横坐标0-3表示表d中的各个表项(例如0表示表d中的表项0,1表示表d中的表项1,2表示表d中的表项2,3表示表d中的表项3),以横坐标0-3和纵坐标0-3的各个交叉点表示表d中的各个表项的各个数据项。

如图8所示,假设本发明实施例提供的第一逻辑数据表中的第一表项为表a中的表项0,第一逻辑数据表中的第一表项的第一数据项为表a中的表项0的第一个数据项,且该数据项为地址1;第一逻辑数据表中的第一表项的第二数据项为表a中的表项0的第二个数据项,且该数据项为地址2;第二逻辑数据表中的第一表项为表b中的表项1,第二逻辑数据表中的第一表项的第一数据项为表b中的表项1的第一个数据项,且该数据项为地址3;第三逻辑数据表中的第一表项为表c中的表项0,第三逻辑数据表中的第一表项的第一数据项为表c中的表项0的第一个数据项,且该数据项为地址4。那么,如图8所示,采用本发明实施例提供的存储物理数据表的方法时,路由器可以先获取表a中的表项0的地址1(即表a中横坐标0和纵坐标0的交叉点00表示的数据项,可以理解为本发明实施例提供的第一逻辑数据表中的第一表项的第一数据项),然后再将地址1存储至表d中的表项0的第一位置(例如表d中横坐标0和纵坐标0的交叉点00表示的位置)。路由器可以继续获取表b中的表项1的地址3(即表b中横坐标1和纵坐标0的交叉点10表示的数据项,可以理解为本发明实施例提供的第二逻辑数据表中的第一表项的第一数据项),然后再将地址3存储至表d中的表项1的第二位置(例如表d中横坐标1和纵坐标0的交叉点10表示的位置)。路由器可以继续获取表c中的表项0的地址4(即表c中横坐标0和纵坐标0的交叉点00表示的数据项,可以理解为本发明实施例提供的第三逻辑数据表中的第一表项的第一数据项),然后再将地址4存储至表d中的表项0的第三位置(例如表d中横坐标0和纵坐标1的交叉点01表示的位置)。路由器可以继续获取表a中的表项0的地址2(即表a中横坐标0和纵坐标1的交叉点01表示的数据项,可以理解为本发明实施例提供的第一逻辑数据表中的第一表项的第二数据项),然后再将地址2存储至表d中的表项0的第四位置(例如表d中横坐标0和纵坐标2的交叉点02表示的位置)。以此类推,路由器可以将表a、表b和表c中的所有地址(即可以理解为本发明实施例提供的所有逻辑数据表中的所有表项的所有数据项)都存储到表d中。

可选的,采用本发明实施例提供的存储物理数据表的方法存储待存储的多个逻辑数据表中的数据项时,由于物理数据表中的一个表项可能会存储不同逻辑数据表中的数据项(例如如图8所示的表d中的表项0存储了表a中的数据项和表c中的数据项),因此为了区分物理数据表中某个数据项具体属于哪个逻辑数据表,本发明实施例还可以存储该数据项所属的逻辑数据表的标识。

可选的,本发明实施例提供的存储物理数据表的方法中,上述第一、二、三、四位置还分别存储有第一标识、第二标识、第三标识和所述第一标识,该第一、二、三标识可以分别用于标识上述第一逻辑数据表、第二逻辑数据表、第三逻辑数据表。例如在图8所示的表d中,表项0中横坐标0和纵坐标0的交叉点00可以存储“1地址1”(其中第1位的“1”标识“地址1”属于表a),表项0中横坐标0和纵坐标1的交叉点01可以存储“2地址4”(其中第1位的“2”标识“地址4”属于表c),表项0中横坐标0和纵坐标2的交叉点02可以存储“1地址2”(其中第1位的“1”标识“地址2”属于表a),表项1中横坐标1和纵坐标0的交叉点10可以存储“3地址3”(其中第1位的“3”标识“地址3”属于表b)。如此,通过在物理数据表中用于存储各个逻辑数据表中的各个数据项的位置存储相应数据项所属的逻辑数据表的标识,能够区分物理数据表中存储的某个数据项具体属于哪个逻辑数据表。从而,在查询某个数据项时,可以提高查询该数据项的效率。

可选的,本发明实施例中,还可以在路由器的cpu或np中存储物理数据表中的各个表项的各个数据项所属的逻辑数据表的标识。如此,可以在本发明实施例提供的存储物理数据表的方法执行过程中,通过硬件和/或软件的方式记录物理数据表中存储的某个数据项具体属于哪个逻辑数据表。从而,在需要应用某个数据项时,可以提高查询该数据项的效率。

可选的,本发明实施例中,上述物理数据表中的各个表项的各个数据项所属的逻辑数据表的标识可以存储在路由器的cpu或np的内部(例如存储器集成在cpu或np内部的情况),也可以存储在路由器的cpu或np的外部(例如存储器设置在cpu或np外部的情况)。

可选的,本发明实施例中,上述第一标识可以为能够唯一标识第一逻辑数据表的任意一个标识。该第一标识可以为一个数字、一个序列或者一个变量等,本发明实施例不作限定。上述第二标识可以为能够唯一标识第二逻辑数据表的任意一个标识,第三标识可以为能够唯一标识第三逻辑数据表的任意一个标识。第二标识和第三标识的具体实现形式可以参见对第一标识的具体实现形式的相关描述,此处不再赘述。

可选的,以待存储的多个逻辑数据表中的数据项为例,在采用本发明实施例提供的存储物理数据表的方法将该多个逻辑数据表中的数据项存储至物理数据表之后,为了不修改现有的在物理数据表中查询数据项的机制,在采用本发明实施例提供的存储物理数据表的方法存储该多个逻辑数据表中的数据项时,可以将该多个逻辑数据表中属于同一逻辑数据表中的同一表项中的数据项存储至物理数据表中的同一表项(例如可以是物理数据表中与逻辑数据表中的该表项的排列序号相同的表项)。这样在查询数据项时,可以根据数据项在其所属的逻辑数据表中的表项的标识查找到该数据项在物理数据表中所在的表项,然后再在该表项中查找该数据项。

本发明实施例提供的存储物理数据表的方法,由于可以将多个逻辑数据表(例如上述第一逻辑数据表和第二逻辑数据表)中的表项的数据项(例如上述第一逻辑数据表中的第一表项的第一数据项和第二逻辑数据表中的第一表项的第一数据项)存储到一个物理数据表中,因此可以只为该多个逻辑数据表中的表项中存在的数据项(即上述存储至物理数据表中的数据项)分配物理存储空间,而无需为整个逻辑数据表分配物理存储空间,从而能够节省存储物理数据表的设备的物理存储空间,进而提高该设备的物理存储空间的使用率。

本发明实施例提供的存储物理数据表的方法,可以在兼容现有查询数据项的机制的基础上,节省存储物理数据表的设备的物理存储空间,提高该设备的物理存储空间的使用率。

上述实施例主要从存储物理数据表的装置是路由器的角度对本发明实施例提供的方案进行了介绍。可以理解的是,本发明实施例提供的存储物理数据表的装置等为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本发明实施例可以根据上述方法示例对存储物理数据表的装置等进行功能模块的划分。例如,可以对应各个功能划分各个功能模块。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

在采用对应各个功能划分各个功能模块的情况下,图9示出了本发明实施例提供的存储物理数据表的装置的一种可能的结构示意图。如图9所示,该装置可以包括:获取单元50和存储单元51。获取单元50可以用于支持该装置执行上述方法实施例中路由器执行的s101、s103、s105和s107;存储单元51可以用于支持该装置执行上述方法实施例中路由器执行的s102、s104、s106和s108。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。

图10示出了本发明实施例提供的存储物理数据表的装置的一种可能的结构示意图。如图10所示,该装置可以包括:处理器60和存储器61。可选地,该装置还可以包括通信接口62。可选地,如图10所示,该装置还可以包括存储器63(该存储器63可以为该装置中通常使用的普通存储器,例如同步动态随机存储器(synchronousdynamicrandomaccessmemory,sdram)等)。处理器60可以用于对该装置的动作进行控制管理,例如,处理器60可以用于支持该装置执行上述方法实施例中路由器执行的s101、s103、s105和s107,和/或用于本文所描述的技术的其它过程。存储器61可以用于存储本发明实施例提供的物理数据表,该存储器可以为sram存储器。通信接口62用于支持该装置与其他网络实体的通信,例如通信接口62可以用于支持该装置与终端设备交互。存储器63可以用于存储该装置执行的程序代码,例如,存储器63可以用于支持该装置执行上述方法实施例中路由器执行的s102、s104、s106和s108,和/或用于本文所描述的技术的其它过程。

其中,处理器60可以是cpu、通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(application-specificintegratedcircuit,asic)、现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明实施例公开内容所描述的各种示例性的逻辑方框、模块和电路。上述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。示例性的,该处理器60可以是上述如图3所示的cpu400a、cpu403a、np405a、cpu403b或者np405b或者这几种中的至少两种以上的组合。存储器61可以是上述如图3所示的路由器中的存储器404a或者存储器404b。存储器63可以是上述如图3所示的路由器中的普通存储器(图3中未示出)。通信接口62可以是物理接口卡、收发电路或通信接口等。示例性的,该通信接口62可以是上述如图3所示的物理接口卡406a或者物理接口卡406b。

处理器60、存储器61、通信接口62以及存储器63可以通过总线连接。总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本发明实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))方式或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、磁盘、磁带)、光介质(例如,数字视频光盘(digitalvideodisc,dvd))、或者半导体介质(例如固态硬盘(solidstatedrives,ssd))等。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1