一种数据存储方法和相关设备技术

技术编号:36734900 阅读:12 留言:0更新日期:2023-03-04 10:05
本申请提供了一种数据存储方法和相关设备。本申请中,网络设备获取第一键值与第一数据后,网络设备可以根据第一键值经过一次计算直接确定第一种子函数,第一种子函数用于计算第一索引,第一索引用于指示第一数据的存储地址,网络设备根据第一种子函数计算第一索引。网络设备根据第一索引在存储列表中存储第一数据。这样,网络设备确定第一种子函数的过程简单,减小了网络设备的开销,提升了网络设备存储第一数据的效率。存储第一数据的效率。存储第一数据的效率。

【技术实现步骤摘要】
一种数据存储方法和相关设备


[0001]本申请实施例涉及通信领域,尤其涉及一种数据存储方法和相关设备。

技术介绍

[0002]随着互联网规模的不断增大,网络用户和内容的不断增多,数据通信
对海量数据的存储和查找的性能的要求越来越高。
[0003]键值对查找系统在当前数据通信领域中有着广泛的应用,例如在网络转发设备中,需要进行MAC地址表和流表等的高速查找,在内容分发网络(CDN)和数据中心分布式存储系统中的内容大规模快速查找等。在网络设备转发平面中,哈希表是键值对的存储和查找较为常见的实现方法。
[0004]高性能网络设备的键值对存储对规模和查找性能有着极高的要求,然而,高性能网络设备的转发芯片的存储资源有限,并且难以支持复杂的操作,因此设计并实现一个存储高效,操作简单的键值对存储和查找方法哈希表是提升网络设备表项规格和转发性能的关键。如何提升存储键值对的效率,是一个值得深思的问题。

技术实现思路

[0005]本申请实施例提供了一种数据存储方法,网络设备确定第一种子函数的过程简单,减小了网络设备的开销,提升了网络设备存储第一数据的效率。
[0006]本申请第一方面提供了一种数据存储方法,网络设备获取第一键值与第一数据,所述第一键值用于查找所述第一数据;所述网络设备根据所述第一键值确定第一种子函数,所述第一种子函数用于计算第一索引,所述第一索引用于指示所述第一数据的存储地址;所述网络设备根据所述第一种子函数计算所述第一索引;所述网络设备根据所述第一索引在存储列表中存储所述第一数据。
[0007]本申请中,网络设备可以根据第一键值经过一次计算直接确定第一种子函数,第一种子函数用于计算第一索引,第一索引用于指示第一数据的存储地址,网络设备根据第一种子函数计算第一索引。网络设备根据第一索引在存储列表中存储第一数据。这样,网络设备确定第一种子函数的过程简单,减小了网络设备的开销,提升了网络设备存储第一数据的效率。
[0008]一种可能的实现方式中,所述第一坐标包括第一行坐标和第一列坐标,所述网络设备根据所述目标键值确定目标种子函数,包括:所述网络设备使用第一函数计算所述第一键值得到所述第一行坐标;所述网络设备根据所述第一行坐标获取所述第一种子函数。
[0009]该种可能的实现方式中,第一坐标包括第一行坐标和第一列坐标,其中,上述示例中公式中所用到的key即为第一键值,i即为第一行坐标,j即为第一列坐标。将key带入哈希函数中,可以分别得到i和j的值,即第一坐标。
[0010]一种可能的实现方式中,所述网络设备根据所述第一行坐标获取所述第一种子函数,包括:所述网络设备根据所述第一行坐标获取与所述第一行坐标具有相同行坐标的多
个键值;所述网络设备根据所述第一键值与所述多个键值生成所述第一种子函数。
[0011]该种可能的实现方式中,若网络设备获取到了所有的key值后,网络设备可以根据新的key与原始的key一起计算一个新的seed,便可以得到一个完美哈希种子,即网络设备根据第一键值与多个键值生成第一种子函数。该种可能的实现方式提升了方案的可实现性。
[0012]一种可能的实现方式中,所述存储列表包括第一列表和第二列表,所述网络设备根据所述第一索引在存储列表中存储所述第一数据,包括:所述网络设备根据所述第一索引在所述第一列表中存储所述第一数据;所述方法还包括:所述网络设备设置目标运算结果,所述目标运算结果用于指示所述第一坐标对应的地址所记录的值和第二坐标对应的地址所记录的值之间的运算结果,所述第二坐标为第二地址的坐标,所述第二地址位于所述第二列表中,所述第一地址位于所述第一列表中,所述目标运算结果用于指示所述第一数据存储至所述第一列表中。
[0013]该方法中,网络设备使用d

left哈希算法计算得到子表编号d和哈希桶索引i(第一行坐标)。为子表HT_d的哈希桶HT_d[i]内对应的所有关键字和当前插入关键字搜索完美哈希函数(第一种子函数),如果能找到完美哈希函数,则将其种子记录在哈希桶中。否则,插入失败。按照完美哈希函数计算得到的表项索引(第一索引),在哈希桶内将每个值按照其关键字的对应的表项位置存储。在Othello哈希中插入关键字key和子表编号d的映射关系,得到1个一维bitmap。通过哈希余数地址映射方法,将需要修改的逻辑地址索引映射到二维地址空间,得到行列地址坐标(i,j)(第一坐标),根据行列地址将二维bitmap写入对应的哈希桶里。示例性的,假设图7中数据最终存于哈希表HT0中,则可以将二维bitmap中写入Bit0和Bit1的值异或后值为0(目标运算结果),异或后的值为0即代表第一数据写入了哈希表HT0。该种可能的实现方式提供了一种具体的实现方式,提升了方案的可实现性。
[0014]一种可能的实现方式中,所述方法还包括:所述网络设备接收数据查询指令,所述数据查询指令中包括所述第一键值;所述网络设备根据所述第一键值查询所述第一数据。
[0015]一种可能的实现方式中,所述存储列表包括第一列表和第二列表,所述网络设备根据所述第一键值查询所述第一数据,包括:所述网络设备根据第一键值获取第一索引和第二索引;所述网络设备根据所述第一索引从所述第一列表中获取第三数据;所述网络设备根据所述第二索引从所述第二列表中获取第四数据;所述网络设备根据所述目标运算结果确认所述第三数据为所述第一数据,所述目标运算结果用于指示所述第一坐标对应的地址所记录的值和第二坐标对应的地址所记录的值之间的运算结果,所述第二坐标为第二地址的坐标,所述第二地址位于所述第二列表中,所述第一地址位于所述第一列表中,所述目标运算结果用于指示所述第一数据存储至所述第一列表中。
[0016]该种可能的实现方式中,网络设备分别计算查找关键字对应HT0和HT1中的哈希桶索引i0=Hash0(key)%M,以及i1=Hash1(key)%M。分别访问两个子表的哈希桶HT0[i0]和HT1[i1],取得得到Bitmap BM[i0]和BM[i1],以及完美哈希种子和分别用和构造对应哈希桶的完美哈希函数,用完美哈希函数计算出查找关键字对应的表项索引k0和k1(第一索引和第二索引)。访问关键字对应两个哈希桶的表项,得到Value0=HT[i0][k0]和Value1=HT[i1][k1]。计算关键字对应的两个哈希桶的Bitmap内bit值的索
引:j0=Hash0(key)%N,j1=Hash1(key)%N。如果返回Value0。否则,返回Value1。该种可能的实现方式提供了一种查询键值对的具体的实现方式,提升了方案的可实现性。
[0017]本申请第二方面提供一种网络设备,该网络设备包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网络设备进行通信。该指令在被处理器执行时,使得所述网络设备执行上述第一方面或第一方面的任意可能的实现方式中的方法。...

【技术保护点】

【技术特征摘要】
1.一种数据存储方法,其特征在于,包括:网络设备获取第一键值与第一数据,所述第一键值用于查找所述第一数据;所述网络设备根据所述第一键值确定第一种子函数,所述第一种子函数用于计算第一索引,所述第一索引用于指示所述第一数据的存储地址;所述网络设备根据所述第一种子函数计算所述第一索引;所述网络设备根据所述第一索引在存储列表中存储所述第一数据。2.根据权利要求1所述的数据存储方法,其特征在于,所述第一坐标包括第一行坐标和第一列坐标,所述网络设备根据所述目标键值确定目标种子函数,包括:所述网络设备使用第一函数计算所述第一键值得到所述第一行坐标;所述网络设备根据所述第一行坐标获取所述第一种子函数。3.根据权利要求2所述的数据存储方法,其特征在于,所述网络设备根据所述第一行坐标获取所述第一种子函数,包括:所述网络设备根据所述第一行坐标获取与所述第一行坐标具有相同行坐标的多个键值;所述网络设备根据所述第一键值与所述多个键值生成所述第一种子函数。4.根据权利要求1至3中任意一项所述的数据存储方法,其特征在于,所述存储列表包括第一列表和第二列表,所述网络设备根据所述第一索引在存储列表中存储所述第一数据,包括:所述网络设备根据所述第一索引在所述第一列表中存储所述第一数据;所述方法还包括:所述网络设备设置目标运算结果,所述目标运算结果用于指示所述第一坐标对应的地址所记录的值和第二坐标对应的地址所记录的值之间的运算结果,所述第二坐标为第二地址的坐标,所述第二地址位于所述第二列表中,所述第一地址位于所述第一列表中,所述目标运算结果用于指示所述第一数据存储至所述第一列表中。5.根据权利要求1至4中任意一项所述的数据存储方法,其特征在于,所述方法还包括:所述网络设备接收数据查询指令,所述数据查询指令中包括所述第一键值;所述网络设备根据所述第一键值查询所述第一数据。6.根据权利要求5所述的数据存储方法,其特征在于,所述存储列表包括第一列表和第二列表,所述网络设备根据所述第一键值查询所述第一数据,包括:所述网络设备根据第一键值获取第一索引和第二索引;所述网络设备根据所述第一索引从所述第一列表中获取第三数据;所述网络设备根据所述第二索引从所述第二列表中获取第四数据;所述网络设备根据所述目标运算结果确认所述第三数据为所述第一数据,所述目标运算结果用于指示所述第一坐标对应的地址所记录的值和第二坐标对应的地址所记录的值之间的运算结果,所述第二坐标为第二地址的坐标,所述第二地址位于所述第二列表中,所述第一地址位于所述第一列表中,所述目标运算结果用于指示所述第一数据存储至所述第一列表中。7.一种网络设备,其特征在于,包括:获取单元,用于...

【专利技术属性】
技术研发人员:李晟如
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1