首页> 中国专利> 一种基于彼得森图的数据存储和读取方法

一种基于彼得森图的数据存储和读取方法

摘要

本发明提供一种基于Peterson图的数据存储和读取方法,包括如下步骤:1)获取表示数据的存储节点所对应ID,并将数据存储在提交该数据存储请求的节点或者相近的节点上,2)将包括数据ID以及数据文件名的相关信息组成一个索引项,通过分布式哈希表方式,生成一个索引ID的值j,并将索引项存储于该ID值的节点j上;3)从任意节点读取数据,读取步骤如下:a)根据数据文件名或标识计算获取索引ID的值j:f_ID=Hash(f)%10;b),路由到索引节点j,取出索引表项;c)根据索引表项中的数据ID,找到目标节点,读取数据。该方法可以有效地对数据进行路由定位和存储管理,同时,负载均衡的特性,也有利于Peterson结构在分布式存储系统中的应用。

著录项

  • 公开/公告号CN101645039A

    专利类型发明专利

  • 公开/公告日2010-02-10

    原文格式PDF

  • 申请/专利权人 中国科学院声学研究所;

    申请/专利号CN200910085126.2

  • 发明设计人 尤佳莉;王劲林;邓浩江;王玲芳;

    申请日2009-06-02

  • 分类号G06F12/00;G06F3/06;H04L12/54;H04L29/08;

  • 代理机构北京法思腾知识产权代理有限公司;

  • 代理人杨小蓉

  • 地址 100190 北京市海淀区北四环西路21号中国科学院声学研究所

  • 入库时间 2023-12-17 23:27:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-21

    未缴年费专利权终止 IPC(主分类):G06F12/00 授权公告日:20110622 终止日期:20180602 申请日:20090602

    专利权的终止

  • 2011-06-22

    授权

    授权

  • 2010-04-14

    实质审查的生效 IPC(主分类):G06F12/00 申请日:20090602

    实质审查的生效

  • 2010-02-10

    公开

    公开

说明书

技术领域

本发明涉及信息网络技术领域,特别涉及到由分布式存储节点构成的网络存储技术领域中的一种基于彼得森(Peterson)图的数据存储和读取方法。

背景技术

随着互联网的发展和用户宽带接入的普及,许多公司和机构产生了海量数据的存储需求。如果通过扩充存储设备来解决该问题,一方面增加了公司对海量数据存储维护的成本,另一方面,大量的访问请求也给存储服务器来了巨大压力。在这些条件下,分布式的存储系统应运而生。

分布式存储通过网络存储设备,构建一个存储专用网络为用户提供统一的信息存取和管理的服务,将数据合理分布在存储网络中,避免了服务器单点瓶颈的问题。另外,随着终端计算能力的增强,越来越多的个人用户终端系统成为了宝贵的资源,而通过peer-to-peer(P2P)技术,可以将这些资源有效的整合,并具有自组织,抗动态性等特点,使得基于P2P的分布式存储网络受到了越来越多的青睐。

Peterson图是一个包含10个节点的正则图,在该图中,所有的节点度都相同,为3,任意两个节点间的距离不超过2。由于Peterson图结构的稳定性和对称性,使其在并行计算等领域得到了应用,并取得了良好的效果。

发明内容

本发明的目的在于提供一种基于Peterson图的数据存储和读取方法,其将Peterson结构有效应用于网络存储中,可增强系统的存储可靠性。该方法通过两个层次的管理,将数据内容和索引信息进行分开存储,保证该方法可以有效地对数据进行路由定位和存储管理,同时,负载均衡的特性,也有利于Peterson结构在分布式存储系统中的应用。

为了实现上述目的,本发明的基于Peterson图的数据存储和读取方法,其特征在于,将数据内容和索引信息进行分开存储,具体包括如下步骤:

1)确定待存储数据所对应的数据ID,并存储数据:

获取表示数据的存储节点所对应ID,并将数据存储在提交该数据存储请求的节点或者相近的节点上,

当通过节点i写入数据时,如果节点i中空间充足,则数据ID为i,并将数据写入节点i中;

如果节点i中空间不足,则数据ID为ID映射表中与节点i存在链接的其它节点ID,选择具有可用空间且ID最小的节点并将数据写入对应节点;

2)确定数据的索引ID:

将包括数据ID以及数据文件名的相关信息组成一个索引项,通过分布式哈希表方式,生成一个索引ID的值j,并将索引项存储于该ID值的节点j上,具体步骤如下:

a)计算索引ID的值j,根据数据文件名或者标识进行哈希映射得到索引项的ID的值j:文件ID=Hash(f)%10,使其取得[0,9]之间的任意且唯一值;

b)根据邻接矩阵表,找到从节点i到目标存储节点j的一条最短路径,并将索引项存入其中;

c)每个节点定期对邻接表中的邻接节点进行检测,如果某个邻接节点已失效,则修改邻接矩阵中该节点ID和邻接节点ID所对应行、列的值,将其设为无穷大或者一个很大的数,表示该路径已经无效,

这里,检测邻接表中的节点状态可以选择下述方法中的任意一种:

i)检测节点间网络拓扑距离;

ii)检测相关参数,包括:节点间延迟以及带宽。

3)从任意节点读取数据,读取步骤如下:

a)根据数据文件名或标识计算获取索引ID的值j:f_ID=Hash(f)%10;

b)通过一条最短路径路由到索引节点j,取出索引表项;

c)根据索引表项中的数据ID,即所存储数据的节点ID值i,找到目标节点i,读取数据。

本发明的基于Peterson图的数据存储和读取方法的有益效果在于:通过将数据和节点映射到同一个ID空间,在统一的准则下有效地进行数据存储管理,同时,数据和索引两级存储的方法,有利于存储空间有限等情况下的数据定位,具有很强的实用价值。并且将Peterson结构有效应用于网络存储中,增强了系统的存储可靠性。

附图说明

图1是Peterson网络中的结构和ID示意图。

图2是本发明的基于Peterson图的数据存储和读取方法中的存储流程图。

图3是本发明的基于Peterson图的数据存储和读取方法中的读取流程图。

图4是利用本发明的基于Peterson图的数据存储和读取方法的基于P2P网络和Peterson网络的双层网络示意图。

具体实施方式

下面结合附图和具体实施例对本发明的基于Peterson图的数据存储和读取方法进行详细的说明。

本发明提出的一种基于Peterson图的数据存储和读取方法,通过两个层次的管理,将数据内容和索引信息进行分开存储;第一层是确定待存储数据所对应的数据ID,即表示数据的存储节点所对应ID,需要尽量保证将数据存储在提交该数据存储请求的节点或者相近的节点上,减少多个节点间传递数据带来的通信代价;第二层是确定数据的索引ID,将数据ID等相关信息组成一个索引项,通过类似DHT的方式,生成一个索引ID,并将索引项存储于该ID值的节点上。两个层次的存储保证了该方法可以有效地对数据进行路由定位和存储管理,同时,负载均衡的特性,也有利于Peterson结构在分布式存储系统中的应用。

图1是Peterson网络中的结构和ID示意图。如图1所示,Peterson图由10个节点组成,设其ID范围为[0,9],当数据存储其中时,要有一个一致的存储和管理方法。

图2是本发明的基于Peterson图的数据存储和读取方法中的存储流程图。图3是本发明的基于Peterson图的数据存储和读取方法中的读取流程图。

如图2所示,本发明的基于Peterson图的数据存储和读取方法中的数据存储方法,将数据内容和索引信息进行分开存储,具体包括如下步骤:

1)确定待存储数据所对应的数据ID,并存储数据:

获取表示数据的存储节点所对应ID,并将数据存储在提交该数据存储请求的节点或者相近的节点上,当通过节点i写入数据时,如果节点i中空间充足,则数据ID为i,将数据写入节点i中;如果节点i中空间不足,则数据ID只能为下述表1所示的ID映射表中,与节点i存在链接的其它节点ID,选择具有可用空间且ID最小的节点,并将数据写入该节点。

2)确定数据的索引ID,

将包括数据ID以及数据文件名等相关信息组成一个索引项,通过分布式哈希表方式,生成一个索引ID值j,并将索引项存储于该ID值的节点j上,其步骤为:

a)计算索引ID;

根据数据文件名(或者标识)进行哈希映射得到索引项的ID的值j,计算方法如下:文件ID=Hash(文件名f)%10,使其取得[0,9]之间的任意且唯一值。

b)根据表2所示的邻接矩阵,找到从节点i到目标存储点j的一条最短路径,并将索引项存入其中;

c)每个节点定期对邻接表中的邻接节点进行检测,如果某个邻接节点已失效,则修改邻接矩阵中该节点ID和邻接节点ID所对应行、列的值,将其设为无穷大或者一个很大的数,表示该路径已经无效,

这里,检测邻接表中节点状态的方法可以选择下述方法中的任意一种:

i)检测节点间网络拓扑距离;

ii)检测节点间延迟、带宽等相关参数。

如图3所示,本发明的基于Peterson图的数据存储和读取方法中的数据读取方法,从任意节点读取数据时,具体包括如下步骤:

1)根据数据文件名(或标识)计算得到索引ID的值j:文件ID=Hash(文件名f)%10;

2)通过一条最短路径路由到索引节点j,取出索引表项;

3)根据索引表项中的数据ID,即所存储数据的节点ID值i,找到目标节点i,读取数据。

表1:Peterson网络中的ID映射表

  节点ID  邻接节点ID  0  1  0  4  0  6  1  2  1  7

  2  3  2  8  3  4  3  9  4  5  5  7  5  8  6  8  6  9  7  9

表2:Peterson网络中的ID邻接矩阵(∞表示正无穷,即无直接路径)

  节点ID  0  1  2  3  4  5  6  7  8  9  0  0  1  ∞  ∞  1  ∞  1  ∞  ∞  ∞  1  1  0  1  ∞  ∞  ∞  ∞  1  ∞  ∞  2  ∞  1  0  1  ∞  ∞  ∞  ∞  1  ∞  3  ∞  ∞  1  0  1  ∞  ∞  ∞  ∞  1  4  1  ∞  ∞  1  0  1  ∞  ∞  ∞  ∞  5  ∞  ∞  ∞  ∞  1  0  ∞  1  1  ∞  6  1  ∞  ∞  ∞  ∞  ∞  0  ∞  1  1  7  ∞  1  ∞  ∞  ∞  1  ∞  0  ∞  1  8  ∞  1  ∞  ∞  ∞  1  1  ∞  0  ∞  9  ∞  ∞  ∞  1  ∞  ∞  1  1  ∞  0

实施例

图4是利用本发明的基于Peterson图的数据存储和读取方法的基于P2P网络和Peterson网络的双层网络示意图。如图4所示,假设存在一个双层的网络,层1为10个节点组成的Peterson存储网络,层2为Pastry组织的P2P网络并提供某些应用。层1采用纠删码的方法进行冗余存储,层2中每个节点都包含至少一个Peterson网络中的节点信息。假设文件名为f的数据通过节点0写入,则写入步骤如下:

1)如果节点0中空间充足,则数据的ID为0,写入节点0中;如果0中空间不足,则数据的ID只能为图2 ID映射表中存在链接的ID数(这里可为1,4或者6),写入具有可用空间且ID最小的节点,这里选择节点1;

2)计算文件ID,f_ID=Hash(f)%10,这里假设f_ID=5;

3)将数据ID,数据文件名等相关信息建立索引项,如<f,0>,放置在ID为5的Peterson节点中。根据表2所示的邻接矩阵,找到从节点0到5的一条最短路径,并将索引项存入其中。

4)每隔2小时,每个节点需要对邻接表中的邻接节点进行检测,如果某个邻接节点已失效,则修改邻接矩阵中这两个节点ID所对应行、列的值(即该节点ID和已失效的邻接节点ID在表2中的交叉值),将其设为无穷大或者一个很大的数,表示该路径已经无效。

5)当从任意节点读取数据时,假设从节点1读取文件f,读取过程如下:

a)计算文件哈希值f_ID=Hash(f)%10=5,即索引ID值;

b)通过表2的矩阵路径表,找到5跳内从节点1到达节点5的所有路径,比如:

  路径  距离  1--7--5  3  1--0--4--5  4  1--2--3--4--5  5  1--2--8--5  4  1--0--6--8--5  5

然后,找到其中距离最短的路径,即1--7--5,路由到索引节点5,取出其中的索引表项<f,0>,并返回给节点1;

c)从索引表项中,读取数据ID(这里值为0),则节点1向节点0发出查询请求,读取数据。

上述说明文档中的其他内容针对本专业领域内的普通技术人员,均可进行技术实现,这里不再赘述。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号