数据库系统及管理数据库数据的方法

文档序号:6561718阅读:122来源:国知局
专利名称:数据库系统及管理数据库数据的方法
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据库系统及管理数据库数据的方法。
背景技术
随着网络的飞速发展,处于网络中的很多设备要求支持的表项项数和长度也越来越大,因此各种表项占用的存储空间也变得越来越大。
现在应用比较普遍的表项存储方法包括利用三值内容地址存储器(TernaryContent Address Memory,TCAM)存储和利用哈希(HASH)函数存储两种。
全匹配(Full Match,FM)表是一种最常见的表项类型,介质访问控制(Media Access Control,MAC)表又是FM表中比较典型的,下文将以存储MAC表为例来说明利用TCAM存储和利用哈希函数存储两种不同的存储方法。
1、利用TCAM存储的方法TCAM是一种高速的三进制的专用于查表的硬件芯片,把MAC表的键(KEY)值及掩码(MASK)存储于TCAM中,把MAC表项的内容存入与该TCAM相关的静态随机存储器(Static Random Access Memory,SRAM)中,具体存储状况参见图1,存储于TCAM中的KEY值与存储于SRAM中的MAC表项的内容一一对应,在进行查表时由于TCAM的高速查表特性,通过查找KEY值很快就可以得到存储于SRAM中唯一对应的表项内容,操作简便快速。
但是TCAM相比于其他的存储介质要贵的多,功耗也非常大,如果需要存储的表项内容很少,使用少量小容量TCAM不会带来很明显的影响,在存储大容量的MAC表时,使用TCAM就会带来成本的显著上升,存储数据用的数据库系统及整体网络系统的功耗都会明显上升,而在现在的网络中要求支持的表项项数和长度都在往越来越大的方向飞速发展。
2、利用哈希函数存储的方法哈希函数也被称作散列函数,其特点就在于,可以将任意长度的字符串转换成固定长度的数值或者索引值。以MAC表为例,在存储MAC表项时,将很长且可能包含任意字符的KEY值转换成单纯由数字组成的固定长度的哈希值,比如4位的数值,因为只包含单纯的数字就表示每一位最多只有10种可能,且长度也要短的多,因此查找一个4位数的数值速度会比查找很长且可能包含任意字符的KEY值快得多,利用此哈希值查找数据比起直接利用KEY值查找数据速度也会快很多,在这种情况下使用普通随机存取存储器存储表项,比如动态随机存储器(Dynamic Random Access Memory,DRAM)、SRAM查找时的速度和上文所述利用TCAM存储表项的查找速度基本相似,而DRAM、SRAM等普通存储介质比起TCAM是非常廉价的,功耗也低的多,相应即使存储的表项很大,利用哈希函数存储的方法成本也会比较低,系统功耗也会下降。
但是由于哈希函数本身的特性,决定了会出现多个不同KEY值转换出的哈希值相同的情况,这种情况被称为冲突,在进行查找时,出现冲突的多个KEY值将指向同一个哈希值,这个时候通常采用链表法来解决冲突问题。
链表法就是为出现冲突的哈希值建立一个链表,将所有经过哈希后获得相同哈希值的KEY值放在同一个链表里,进行查找时,首先通过哈希值找到链表,然后再在链表中查找和哈希前KEY值相等的KEY值,以获得相应的表项内容。
这样随着出现冲突的次数增加,链表也会越来越长,查找的速度也会越来越慢,存储表项用的数据库管理工作会变得越来越复杂,整个系统的性能都会受到影响。

发明内容
本发明要解决的技术问题是提供一种数据库系统及管理数据库数据的方法。
为解决上述技术问题,本发明提供了一种管理数据库数据的方法,该方法包括存储表项的方法将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;判断键值经过哈希函数转换后是否冲突;将经过规定次数哈希函数转换后,仍然冲突的表项键值存储于三值内容地址存储器,表项内容存储于与三值内容地址存储器关联的第一随机存储器;将在规定次数内,有一次进行哈希函数转换后不冲突的表项及其哈希值存储于第二随机存储器。
其中,所述规定次数为至少两次,所述方法包括将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;判断每次键值经过哈希函数转换后是否冲突,进行哈希函数转换的次数是否达到规定次数;若冲突,且进行哈希函数转换的次数未达到规定次数,则继续将待存储表项的键值进行下一次哈希函数转换;若冲突,且进行哈希函数转换的次数已经达到规定次数,则将表项键值存储于三值内容地址存储器,表项内容存储于与三值内容地址存储器关联的第一随机存储器;若不冲突,则将表项及其哈希值存储于第二随机存储器。
其中,所述方法还包括查找表项的方法将待查找表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;通过所述哈希值判断第二随机存储器上是否存在待查找表项;若存在,则获得待查找表项,查找成功;若不存在,则在三值内容地址存储器上寻找待查找表项的键值,寻找到键值后,访问与三值内容地址存储器关联的第一随机存储器获得表项内容,查找成功。
其中,所述规定次数为至少两次,所述方法包括将待查找表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;每次进行哈希函数转换后,通过所述哈希值判断第二随机存储器上是否存在待查找表项,进行哈希函数转换的次数是否达到规定次数;若存在,则获得待查找表项,查找成功;若不存在,且进行哈希函数转换的次数未达到规定次数,则继续将待查找表项的键值进行下一次哈希函数转换;若不存在,且进行哈希函数转换的次数已经达到规定次数,则在三值内容地址存储器上寻找待查找表项的键值,寻找到键值后,访问与三值内容地址存储器关联的第一随机存储器获得表项内容,查找成功。
其中,所述规定次数为一次。
其中,所述通过所述哈希值判断第二随机存储器上是否存在待查找表项为判断第二随机存储器上是否存在与所述哈希值相同的哈希值;若不存在,则第二随机存储器上不存在待查找表项;若存在,则判断此第二随机存储器上的哈希值下存储的键值是否和待查找表项的键值相等;若不相等,则第二随机存储器上不存在待查找表项;若相等,则第二随机存储器上存在待查找表项,此第二随机存储器上的哈希值下存储的表项即为待查找表项。
其中,所述方法还包括删除表项的方法通过所述查找表项的方法根据待删除表项的键值,查找到待删除表项,删除待删除表项。
其中,所述方法还包括老化表项的方法定义包含表项老化标识位的老化表,定义刷新周期;表项被调用时标记对应老化标识位;每个刷新周期刷新一次老化表,通过老化标识位,使用所述删除表项的方法将一个周期内没有被调用过的表项删除。
其中,所述老化标识位初始值为“0”或“1”。
其中,所述第一随机存储器为静态随机存储器。
其中,所述第二随机存储器为动态随机存储器。
本发明还提供了一种数据库系统,包括存储单元、三值内容地址存储器、第一随机存储器及第二随机存储器;所述第一随机存储器与所述三值内容地址存储器相关联;所述存储单元用于将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;判断键值经过哈希函数转换后是否冲突;将经过规定次数哈希函数转换后,仍然冲突的表项键值存储于所述三值内容地址存储器,表项内容存储于所述第一随机存储器;将在规定次数内,有一次进行哈希函数转换后不冲突的表项及其哈希值存储于所述第二随机存储器。
其中,所述存储单元用于将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;并判断每次键值经过哈希函数转换后是否冲突,进行哈希函数转换的次数是否达到规定次数;若冲突,且进行哈希函数转换的次数未达到规定次数,则继续将待存储表项的键值进行下一次哈希函数转换;若冲突,且进行哈希函数转换的次数已经达到规定次数,则将表项键值存储于所述三值内容地址存储器,表项内容存储于所述第一随机存储器;若不冲突,则将表项及其哈希值存储于所述第二随机存储器。
其中,所述系统还包括查找单元,用于将待查找表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;通过所述哈希值判断所述第二随机存储器上是否存在待查找表项;若存在,则获得待查找表项;若不存在,则在所述三值内容地址存储器上寻找待查找表项的键值,寻找到键值后,访问所述第一随机存储器获得表项内容。
其中,所述查找单元用于将待查找表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;每次进行哈希函数转换后,通过所述哈希值判断所述第二随机存储器上是否存在待查找表项,进行哈希函数转换的次数是否达到规定次数;若存在,则获得待查找表项;若不存在,且进行哈希函数转换的次数未达到规定次数,则继续将待查找表项的键值进行下一次哈希函数转换;若不存在,且进行哈希函数转换的次数已经达到规定次数,则在所述三值内容地址存储器上寻找待查找表项的键值,寻找到键值后,访问所述第一随机存储器获得表项内容。
其中,所述规定次数为一次。
其中,所述系统还包括删除单元,用于通过所述查找单元根据待删除表项的键值,查找到待删除表项,删除待删除表项。
其中,所述系统还包括老化单元,用于定义包含表项老化标识位的老化表,定义刷新周期;在表项被调用时标记对应老化标识位;每个刷新周期刷新一次老化表,通过老化标识位,使用所述删除单元将一个周期内没有被调用过的表项删除。
其中,所述第一随机存储器为静态随机存储器。
其中,所述第二随机存储器为动态随机存储器。
由上可知,本发明通过结合TCAM和哈希函数的优点,将经过哈希函数转换后冲突的表项存储于TCAM及与TCAM相关联的RAM中,将不冲突的表项存储于其他RAM中,使普通RAM中只需要存储不冲突的表项,不需要采用链表法来解决冲突问题,查找速度可以一直保持在较高的水平上,不会受到影响,也不会影响数据库系统的性能;而TCAM及与TCAM相关联的RAM中只需要存放有冲突的表项,这些表项相对于整个表项占有比例非常小,所以即使存储的表项容量非常大,也只须很少小容量TCAM就可以完成,这样系统的成本和功耗都不会受到明显影响;这样就兼顾了系统的功耗成本和性能,使系统在成本和功耗都较低的情况下可以保持高速度的运行。
进一步,本发明又给出了可以进行一次或多次哈希函数转换的方案只进行一次哈希函数转换,把所有经过一次哈希函数转换出现冲突的表项存储在TCAM及SRAM中,是一种流程最简单的方案,可以提高系统效率;进行多次哈希函数转换,可以有效减少出现冲突的几率,这样TCAM的用量也会减少,在表项非常大时,也不需要很大容量的TCAM来存储出现冲突的表项,用户可以根据自身需要决定最多可以进行多少次哈希函数转换。
更进一步,本发明根据SRAM比DRAM数度要快,DRAM速度稍逊但是价格非常便宜,且容量较大的特点,给出了与TCAM关联的RAM采用SRAM,更好的发挥TCAM的速度优势,存储不冲突表项的RAM采用DRAM,发挥DRAM价格及容量优势的方案。由于TCAM中存储的表项很少,关联的RAM用量也很少,所以使用SRAM对系统成本的影响很小;使用哈希函数在DRAM和SRAM上查找表项速度基本没有差别,所以存储不冲突表项的RAM采用DRAM不会影响到速度,而且由于这里的RAM用量较大,使用DRAM可以很好的降低成本。


图1、使用TCAM与相关联SRAM存储表项示意图;图2、本发明系统实施例图;图3、本发明管理数据库数据的方法之存储表项的方法实施例流程图;图4、本发明管理数据库数据的方法之查找表项的方法实施例流程图;图5、本发明管理数据库数据的方法之删除表项的方法实施例流程图;图6、本发明管理数据库数据的方法之老化表项的方法实施例流程图。
具体实施例方式
本发明提供了一种数据库系统及管理数据库数据的方法,通过将表项分别存储于TCAM和随机存储器(Random Access Memory,RAM),结合了TCAM和哈希函数的优点,兼顾了成本功耗和速度。
本发明提供的数据库系统结构如图2所示,包含存储单元201、查找单元202、删除单元203、老化单元204、随机存储器A205、TCAM206、随机存储器B207,各单元功能如下存储单元201和随机存储器A205、TCAM206、随机存储器B207互联,发出操作信息,对系统内的数据进行管理,控制表项的存储过程。
查找单元202和随机存储器A205、TCAM206、随机存储器B207互联,发出操作信息,对系统内的数据进行管理,控制表项的查找过程。
删除单元203和随机存储器A205、TCAM206、随机存储器B207互联,发出操作信息,对系统内的数据进行管理,控制表项的删除过程。
老化单元204和随机存储器205、TCAM206、随机存储器B207互联,发出操作信息,对系统内的数据进行管理,控制表项的老化过程。
随机存储器B207存储经过一次或多次哈希函数转换后不冲突的表项,接受存储单元201、查找单元202、删除单元203及老化单元204的控制对表项进行存储、查找、删除和老化。
由于常用DRAM要比SRAM便宜的多,容量也可以做的很大,在使用哈希值进行查找时两者的速度基本没有差别,所以在实际应用中随机存储器B207一般多选择DRAM。
TCAM206和随机存储器A205相关联,存储经过一次或多次哈希函数转换后有冲突的表项KEY值及MASK,接受存储单元201、查找单元202、删除单元203及老化单元204的控制对表项进行存储、查找、删除。
在本发明提供的系统中,由于TCAM只是用来存储经哈希函数转换后有冲突的表项KEY值及MASK,有冲突的表项相对于整个表项占有比例非常小,所以即使存储的表项容量非常大,也只须很少小容量TCAM就可以完成,这样系统的成本和功耗都不会受到明显影响。
随机存储器A205和TCAM206相关联,存储经过一次或多次哈希函数转换后有冲突的表项内容,这些表项内容和存储于TCAM206的表项KEY值一一对应,接受存储单元201、查找单元202、删除单元203及老化单元204的控制对表项进行存储、查找、删除和老化。
由于从存取速度来说,常用SRAM比DRAM更接近TCAM的速度,为了更好的发挥TCAM的速度优势,实际应用中通常随机存储器A204会选用SRAM来与TCAM配合,根据上文描述可知在本发明提供的系统中,TCAM的用量很少,相应存储内容与TCAM关联的SRAM用量也是非常少的,对系统成本的影响非常细微。
上文中提到可以进行一次或多次哈希函数转换,是由用户根据自身的需要规定的,可是一次也可以是多次,若规定的次数是一次,则最多只能进行一次哈希函数转换,若规定的次数是两次,则最多只能进行两次哈希函数转换,以此类推,具体处理方法见下文方法的描述。
还需要说明的是,本文提到的互联或连接指的是信令上的连接,而不是物理上的直接连接,图2中标出的连接线同样也仅指信令上的连接,例如在实际连接硬件时,随机存储器A205有可能直接接入存储单元201,也有可能通过TCAM206接入存储单元201;若随机存储器A205及随机存储器B207采用的是相同类型的随机存储器,则可以使用同一块随机存储器的不同区段实现本发明。
本发明提供的数据库系统操作过程将在下文对方法的描述中进行具体阐述。
在下文进行方法的具体描述时,将以随机存储器A205为SRAM,随机存储器B207为DRAM为例进行描述。
本发明提供的管理数据库数据的方法包含存储表项的方法、查找表项的方法、删除表项的方法和老化表项的方法,其中存储表项的方法是所有管理数据库数据方法的基础,所以下面首先进行存储表项的方法的描述。
本发明提供的管理数据库数据的方法中存储表项的方法,首先将准备存储表项的KEY值进行一次或多次哈希函数转换,然后将KEY值在经过哈希函数转换后没有出现冲突的表项存储在DRAM里,将KEY值在经过哈希函数转换后出现冲突的表项KEY值存入TCAM,表项内容存入与TCAM关联的SRAM里。
现以对KEY值最多进行两次哈希函数转换为例,详述管理数据库数据的方法中存储表项的方法,具体流程如图3所示步骤301、确定要增加的表项KEY值及表项内容。
步骤302、输入KEY值到哈希函数1“H1(k)”中,计算出KEY经哈希函数转换后获得的哈希值1“h1”。
步骤303、查找DRAM中是否存在和h1相等的哈希值,如果存在和h1相等的哈希值,则进入步骤304;如果不存在和h1相等的哈希值,说明没有出现冲突,则进入步骤307。
步骤304、将DRAM中与h1相等的哈希值下存储的KEY值与要增加的表项KEY值相比较,判断是否相等,如果相等,说明这是一条已经存储过的表项,则进入步骤309;如果不相等,说明出现了冲突,则进入步骤305。
以上所述步骤303到304即为对进行第一次哈希函数转换后是否出现冲突的判断,如果出现冲突,则进入步骤305,如果没有出现冲突,就可以直接执行步骤307。
步骤305、输入KEY值到哈希函数2“H2(k)”中,计算出KEY经哈希函数转换后获得的哈希值2“h2”。
因为对要增加的表项KEY值的第一次哈希函数转换出现了冲突,为了减少冲突,在步骤305中使用哈希函数“H2(k)”对要增加的表项KEY值进行第二次哈希函数转换,经过第二次哈希函数转换的KEY值显然出现冲突的几率会小很多,这样可以有效减少需要存储在TCAM及SRAM中的表项数目。
在实际应用中,根据系统的状况,可以只进行一次哈希函数转换,把所有经过一次哈希函数转换出现冲突的表项存储在TCAM及SRAM中,减少流程提高系统效率;也可以进行多于两次的哈希函数转换,尽量减少出现冲突的表项,减少TCAM的用量,降低成本和功耗。
步骤306、查找DRAM中是否存在和h2相等的哈希值,如果存在和h2相等的哈希值,则进入步骤308;如果不存在和h2相等的哈希值,说明没有出现冲突,则进入步骤307。
步骤307、直接将要增加的表项及其经过最后一次哈希函数转换得到的哈希值存储于DRAM中。
可以执行步骤307说明要增加的表项的KEY值在经过一次或两次哈希函数转换后得到了一个不冲突的哈希值,则可以将此表项直接添加在DRAM中。
步骤308、将DRAM中与h2相等的哈希值下存储的KEY值与要增加的表项KEY值相比较,判断是否相等,如果相等,说明这是一条已经存储过的表项,则进入步骤309;如果不相等,说明出现了冲突,则进入步骤310。
步骤309、更新存储于DRAM中经判断KEY值相等的表项内容。
步骤310、把该要增加的表项的KEY值存储在TCAM中,表项内容存储在与TCAM相关的SRAM中。
至此流程结束。
本发明提供的管理数据库数据的方法中查找表项的方法,是在存储表项的方法基础上提出的,首先将要查找的表项KEY值进行哈希函数转换,在DRAM中通过哈希函数转换后的哈希值在DRAM上查找,如果查找不到,则要根据存储表项时最多可以进行的哈希函数转换次数,进行多次哈希函数转换,继续在DRAM上查找,如果还是无法找到,再在TCAM上查找,当然,如果在存储表项的方法中只允许进行一次哈希函数转换,就不需要再进行多次哈希函数转换,直接在TCAM上查找就可以了。
现以在存储表项的方法中对KEY值最多进行两次哈希函数转换为例,详述管理数据库数据的方法中查找表项的方法,具体流程如图4所示步骤401、确定要查找的表项KEY值。
步骤402、输入KEY值到哈希函数1“H1(k)”中,计算出KEY经哈希函数转换后获得的哈希值1“h1”。
步骤403、查找DRAM中是否存在和h1相等的哈希值,如果存在和h1相等的哈希值,则进入步骤404;如果不存在和h1相等的哈希值,则进入步骤405。
步骤404、将DRAM中与h1相等的哈希值下存储的KEY值与要查找的表项KEY值相比较,判断是否相等,如果相等,则说明此项即为要查找的表项,进入步骤409;如果不相等,则进入步骤405。
以上所述步骤403到404即为对KEY值进行第一次哈希函数转换后,在DRAM上的查找,如果查找到相等的哈希值,并且该哈希值下存储的KEY值也相等,则说明查找到了所需的数据,否者就要进行下一步查找。
步骤405、输入KEY值到哈希函数2“H2(k)”中,计算出KEY经哈希函数转换后获得的哈希值2“h2”。
因为使用对KEY值第一次哈希函数转换后的哈希值没有查找到所需数据,而且在本实施例中存储表项的方法规定对KEY值最多可以进行两次哈希函数转换,所以这里要对KEY值进行第二次哈希函数转换,然后使用h2继续在DRAM上进行查找。
在实际应用中,如果在存储表项的方法中规定对KEY值最多只进行一次哈希函数转换,那么这里也不需要进行第二次哈希函数转换,直接查找TCAM即可。
步骤406、查找DRAM中是否存在和h2相等的哈希值,如果存在和h2相等的哈希值,则进入步骤407;如果不存在和h2相等的哈希值,则进入步骤408。
步骤407、将DRAM中与h2相等的哈希值下存储的KEY值与要查找的表项KEY值相比较,判断是否相等,如果相等,则说明此项即为要查找的表项进入步骤409;如果不相等,则进入步骤408。
步骤408、使用要查找的表项KEY值在TCAM中进行查找,查找是否存在相等的KEY值,如果存在,则根据此相等KEY值获得存储于关联SRAM上对应的表项内容,进入步骤409;如果不存在,则进入步骤410。
由于在本实施例中存储表项的方法规定对KEY值最多可以只进行两次哈希函数转换,所以在对KEY值进行两次哈希函数转换后都没有在DRAM上查找到后,则开始使用KEY值在TCAM上查找,如果在存储表项的方法里规定可以进行多于两次的哈希函数转换,那么这里就要继续进行下一次哈希函数转换,继续在DRAM上查找,直到进行哈希函数转换的次数达到存储表项的方法里规定的上限,还没有找到时,才可以使用KEY值在TCAM上查找。
步骤409、查找成功,获得要查找的表项内容。
步骤410、查找失败,说明此待查表项没有在被查找的数据库系统中存储过。
至此流程结束。
本发明提供的管理数据库数据的方法中删除表项的方法,是在存储表项的方法和查找表项的方法基础上提出的,具体流程如图5所示步骤501、确定要删除的表项KEY值。
步骤502、调用查找模块,根据KEY值查找表项。
此步调用的查找模块,即上文在管理数据库数据的方法中查找表项的方法中提到的查找的方法,也就是说删除查找的过程和查找表项的方法是完全一致的。
步骤503、判断查找是否成功,成功进入步骤504;否则,进入步骤505。
步骤504、查找成功,删除查找到的表项。
步骤505、删除失败。
本发明提供的管理数据库数据的方法中老化表项的方法,是为了及时清理长期不再使用的表项,节约系统的存储空间而提出的。
由于在本发明提供的管理数据库数据的方法中全部表项被分为几部分分别存储在不同的存储器中,可以存储的表项也比较大,很有可能存在一些长期得不到调用的表项,这些表项越来越多,占用的空间越来越大,有可能导致一些新的表项由于存储空间不够,无法添加进来。
为了有效的使用存储空间,尽量存储调用频率最高的表项,将长期闲置不被调用的表项清理出去,本发明在老化表项的方法中定义了一个老化表,每个表项都在老化表里有一个老化标识位,每个表项的老化标识位初始为“0”,系统每隔一段时间对老化表进行刷新,将标识位为“0”的置“1”,将标识位为“1”的对应表项删除,表项每次被调用都会在老化标识位进行置“0”的动作,这样当一个表项被置“1”后,在下一个规定周期内都没有被调用的话,就会被清除,只有在下一个规定周期内被调用,将标识位置“0”才能被保留,这里刷新周期的时间可以由用户根据实际的需要去确定。
上文所述老化标识位初始值也可以为“1”,刷新时置“0”,调用时置“1”,清除老化标识位为“0”的表项。
现以老化标识位初始值为“0”为例说明老化表项的方法在实际操作中的应用,流程参见图6,具体内容如下步骤601、定义一个老化表,每一个存储于系统中的表项都在此老化表中有一个对应的老化标识位,及相应表项信息,每一个表项的老化标识位初始状态都为“0”。
步骤602、根据预先定义的刷新周期,每隔一段时间刷新老化表,即判断每一个老化标识位是否为“0”,若为“0”则执行步骤603;若不为“0”则执行步骤604。
步骤603、将所有为“0”的老化标识位全部置“1”。
步骤604、取出所有老化标识位为“1”的对应表项信息,进行删除操作。
步骤605、判断表项是否被调用,是则执行步骤606;否则执行步骤607。
步骤606、将所有被调用的表项老化标识位置“0”。
步骤607、没有被调用的表项不改变其老化标识位的状态值。
步骤605至步骤607即表示,每个表项在被调用时都将在其老化标识位置“0”,没有被调用过的表项其老化标识位状态就不会得到变化,如果表项在经过一次刷新动作后,没有被删除,其老化标识位必然在步骤604被置“1”,如果其在下一次刷新周期到来前都没有被调用,其老化标识位将保持“1”的状态直到新的刷新周期到来,然后被删除。
步骤608、等待下一个刷新周期。
以上对本发明所提供的一种数据库系统及管理数据库数据的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种管理数据库数据的方法,其特征在于,该方法包括存储表项的方法将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;判断键值经过哈希函数转换后是否冲突;将经过规定次数哈希函数转换后,仍然冲突的表项键值存储于三值内容地址存储器,表项内容存储于与三值内容地址存储器关联的第一随机存储器;将在规定次数内,有一次进行哈希函数转换后不冲突的表项及其哈希值存储于第二随机存储器。
2.如权利要求1所述的管理数据库数据的方法,其特征在于,所述规定次数为至少两次,所述方法包括将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;判断每次键值经过哈希函数转换后是否冲突,进行哈希函数转换的次数是否达到规定次数;若冲突,且进行哈希函数转换的次数未达到规定次数,则继续将待存储表项的键值进行下一次哈希函数转换;若冲突,且进行哈希函数转换的次数已经达到规定次数,则将表项键值存储于三值内容地址存储器,表项内容存储于与三值内容地址存储器关联的第一随机存储器;若不冲突,则将表项及其哈希值存储于第二随机存储器。
3.如权利要求1所述的管理数据库数据的方法,其特征在于,所述方法还包括查找表项的方法将待查找表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;通过所述哈希值判断第二随机存储器上是否存在待查找表项;若存在,则获得待查找表项,查找成功;若不存在,则在三值内容地址存储器上寻找待查找表项的键值,寻找到键值后,访问与三值内容地址存储器关联的第一随机存储器获得表项内容,查找成功。
4.如权利要求3所述的管理数据库数据的方法,其特征在于,所述规定次数为至少两次,所述方法包括将待查找表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;每次进行哈希函数转换后,通过所述哈希值判断第二随机存储器上是否存在待查找表项,进行哈希函数转换的次数是否达到规定次数;若存在,则获得待查找表项,查找成功;若不存在,且进行哈希函数转换的次数未达到规定次数,则继续将待查找表项的键值进行下一次哈希函数转换;若不存在,且进行哈希函数转换的次数已经达到规定次数,则在三值内容地址存储器上寻找待查找表项的键值,寻找到键值后,访问与三值内容地址存储器关联的第一随机存储器获得表项内容,查找成功。
5.如权利要求1或3所述的管理数据库数据的方法,其特征在于,所述规定次数为一次。
6.如权利要求3或4所述的管理数据库数据的方法,其特征在于,所述通过所述哈希值判断第二随机存储器上是否存在待查找表项为判断第二随机存储器上是否存在与所述哈希值相同的哈希值;若不存在,则第二随机存储器上不存在待查找表项;若存在,则判断此第二随机存储器上的哈希值下存储的键值是否和待查找表项的键值相等;若不相等,则第二随机存储器上不存在待查找表项;若相等,则第二随机存储器上存在待查找表项,此第二随机存储器上的哈希值下存储的表项即为待查找表项。
7.如权利要求3所述的管理数据库数据的方法,其特征在于,所述方法还包括删除表项的方法通过所述查找表项的方法根据待删除表项的键值,查找到待删除表项,删除待删除表项。
8.如权利要求7所述的管理数据库数据的方法,其特征在于,所述方法还包括老化表项的方法定义包含表项老化标识位的老化表,定义刷新周期;表项被调用时标记对应老化标识位;每个刷新周期刷新一次老化表,通过老化标识位,使用所述删除表项的方法将一个周期内没有被调用过的表项删除。
9.如权利要求8所述的管理数据库数据的方法,其特征在于,所述老化标识位初始值为“0”或“1”。
10.如权利要求1至4任一项所述的管理数据库数据的方法,其特征在于,所述第一随机存储器为静态随机存储器。
11.如权利要求1至4任一项所述的管理数据库数据的方法,其特征在于,所述第二随机存储器为动态随机存储器。
12.一种数据库系统,其特征在于,包括存储单元、三值内容地址存储器、第一随机存储器及第二随机存储器;所述第一随机存储器与所述三值内容地址存储器相关联;所述存储单元用于将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;判断键值经过哈希函数转换后是否冲突;将经过规定次数哈希函数转换后,仍然冲突的表项键值存储于所述三值内容地址存储器,表项内容存储于所述第一随机存储器;将在规定次数内,有一次进行哈希函数转换后不冲突的表项及其哈希值存储于所述第二随机存储器。
13.如权利要求12所述的数据库系统,其特征在于,所述存储单元用于将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;并判断每次键值经过哈希函数转换后是否冲突,进行哈希函数转换的次数是否达到规定次数;若冲突,且进行哈希函数转换的次数未达到规定次数,则继续将待存储表项的键值进行下一次哈希函数转换;若冲突,且进行哈希函数转换的次数已经达到规定次数,则将表项键值存储于所述三值内容地址存储器,表项内容存储于所述第一随机存储器;若不冲突,则将表项及其哈希值存储于所述第二随机存储器。
14.如权利要求12所述的数据库系统,其特征在于,所述系统还包括查找单元,用于将待查找表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;通过所述哈希值判断所述第二随机存储器上是否存在待查找表项;若存在,则获得待查找表项;若不存在,则在所述三值内容地址存储器上寻找待查找表项的键值,寻找到键值后,访问所述第一随机存储器获得表项内容。
15.如权利要求14所述的数据库系统,其特征在于,所述查找单元用于将待查找表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;每次进行哈希函数转换后,通过所述哈希值判断所述第二随机存储器上是否存在待查找表项,进行哈希函数转换的次数是否达到规定次数;若存在,则获得待查找表项;若不存在,且进行哈希函数转换的次数未达到规定次数,则继续将待查找表项的键值进行下一次哈希函数转换;若不存在,且进行哈希函数转换的次数已经达到规定次数,则在所述三值内容地址存储器上寻找待查找表项的键值,寻找到键值后,访问所述第一随机存储器获得表项内容。
16.如权利要求12或14所述的数据库系统,其特征在于,所述规定次数为一次。
17.如权利要求14所述的数据库系统,其特征在于,所述系统还包括删除单元,用于通过所述查找单元根据待删除表项的键值,查找到待删除表项,删除待删除表项。
18.如权利要求17所述的数据库系统,其特征在于,所述系统还包括老化单元,用于定义包含表项老化标识位的老化表,定义刷新周期;在表项被调用时标记对应老化标识位;每个刷新周期刷新一次老化表,通过老化标识位,使用所述删除单元将一个周期内没有被调用过的表项删除。
19.如权利要求12至15任一项所述的管理数据库数据的方法,其特征在于,所述第一随机存储器为静态随机存储器。
20.如权利要求12至15任一项所述的管理数据库数据的方法,其特征在于,所述第二随机存储器为动态随机存储器。
全文摘要
本发明公开了一种管理数据库数据的方法,该方法包括存储表项的方法将待存储表项的键值进行规定次数内的哈希函数转换,获得对应哈希值;判断键值经过哈希函数转换后是否冲突;将经过规定次数哈希函数转换后,冲突的表项键值存储于TCAM,表项内容存储于与TCAM关联的第一RAM;将在规定次数内,有一次进行哈希函数转换后不冲突的表项及其哈希值存储于第二RAM。本发明还公开了一种数据库系统,其特征在于,包括存储单元、TCAM、第一RAM及第二RAM;所述第一RAM与所述TCAM相关联;将经哈希转换后不冲突的表项存储于第二RAM内,将冲突的表项存储于TCAM及第一RAM内。通过应用本发明,可以使系统在成本和功耗都较低的情况下高速度的运行。
文档编号G06F17/30GK1932818SQ20061012781
公开日2007年3月21日 申请日期2006年9月20日 优先权日2006年9月20日
发明者吕超群 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1