CN114237490A - 基于Nauru-graph的大规模数据存储和读取方法及装置 - Google Patents
基于Nauru-graph的大规模数据存储和读取方法及装置 Download PDFInfo
- Publication number
- CN114237490A CN114237490A CN202111288503.XA CN202111288503A CN114237490A CN 114237490 A CN114237490 A CN 114237490A CN 202111288503 A CN202111288503 A CN 202111288503A CN 114237490 A CN114237490 A CN 114237490A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- storage
- value
- index item
- 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.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 49
- 238000000034 method Methods 0.000 title claims abstract description 34
- 239000011159 matrix material Substances 0.000 claims description 16
- 238000013507 mapping Methods 0.000 claims description 13
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 2
- 238000004891 communication Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013076 uncertainty analysis Methods 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 235000014594 pastries Nutrition 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种基于Nauru‑graph的大规模数据存储和读取方法和装置,其中,方法包括:获取数据ID值,检索数据ID值的可用存储节点,以生成数据的索引项ID值;以及,将数据的索引项ID值,存储于数据ID值的节点上,以对数据进行存储操作;步骤S2,计算数据的索引项ID值,通过索引项中数据ID找到目标节点,以对数据进行读取操作。本发明主要通过引入高对称强联通的拓扑结构改进数据存储时,数据分布均衡,系统稳定性和存储效率不能兼得的问题。同时给出了依据实际场景生成高对称强连通拓扑结构的方案。
Description
技术领域
本发明涉及信息网络、分布式存储系统、虚拟化、拓扑结构及网络存储技术领域,特别涉及一种基于Nauru-graph的大规模数据存储和读取方法及装置。
背景技术
分布式存储是对应于集中式存储提出的,最初企业级的存储设备都是集中式存储,该存储设备由机头、磁盘阵列(JBOD)和交换机等设备构成,其中机头是这个存储系统中最核心的部件,所有的数据需要通过一个统一的入口-机头,被分到不同的磁盘中进行存储。
随着网络的普及和云端大数据时代的到来,每天都有海量的数据产生,存储需求也随之应运而生,分布式是解决该问题的一个主要思路。分布式存储最早由谷歌提出,在谷歌的分布式存储系统架构(HDFS)中,将服务器分为两种:Namenode和Datanode。其中Namenode负责存储和管理元数据(数据的索引ID),Datanode负责存储管理实际数据。如果用户想要读取文件,则首先从Namenode中获取该文件的存储位置(具体在哪个Datanode),然后从具体的Datanode中检索具体文件。在此分布式存储框架的基础上,演变出了我们当前非常流行的分布式存储架构Ceph和Swift,其中Ceph通过一个设备映射关系来计算写入数据的位置。Swift是将设备做成哈希环,通过一致性哈希映射计算写入数据的位置。相较于HDFS,二者都可以分担请求的负载,各有适用的应用场景。但是在负载均衡和系统稳定性方面都有一定的改进空间。
HDFS主要面向大数据的存储场景,其处理模式是一次写入、多次读取,适合低写入、高读取的业务,不适合频繁的数据写入。同时HDFS采用多副本数据保护机制,不推荐在虚拟化环境中使用。Ceph是一个开源的存储项目,采用CRUSH算法,相较于HDFS数据分布更加均衡、并行度更高。同时部署更加复杂,性能也更弱。Swift同属开源存储项目,与Ceph类似,考虑到Swift的数据是最终一致的,因此在面对海量数据处理时swift效率更高,但是客户段在访问对象存储系统服务时,需要通过Swift网关才能获取数据,相较于Ceph通过每一个存储节点上的OSD获取数据信息,不够灵活。同时,这些技术解决方案在进行数据映射,没有从拓扑结构的维度进行考虑。引入拓扑结构可以使映射更加均衡,安全和稳定性更高。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种基于Nauru-graph的大规模数据存储和读取方法,通过引入特殊的图结构,在提高云端分布式存储的负载均衡和系统稳定性方面给出了一种改进方案。
本发明的第二个目的在于提出一种基于Nauru-graph的大规模数据存储和读取装置。
为达上述目的,本发明第一方面实施例提出了一种基于Nauru-graph的大规模数据存储和读取方法,包括:
步骤S1,获取数据ID值,检索所述数据ID值的可用存储节点,以生成所述数据的索引项ID值;以及,
将所述数据的索引项ID值,存储于所述数据ID值的节点上,以对所述数据进行存储操作;
步骤S2,计算所述数据的索引项ID值,通过所述索引项中数据ID找到目标节点,以对所述数据进行读取操作。
另外,根据本发明上述实施例的基于Nauru-graph的大规模数据存储和读取方法还可以具有以下附加的技术特征:
进一步地,在本发明的一个实施例中,所述步骤S1,包括:
S1.1,获取数据的存储ID,检索可用存储节点,假设当前检索节点ID为i,尝试通过节点i写入数据,若节点i中空间充足,则数据存储ID为i,并将数据存入节点i中;若节点i中空间不足,检索与节点i相邻的其它节点,按ID从小到大进行检索,直到找到合适的节点j,将数据写入对应节点j中,并将数据的存储ID置为j,并生成索引项;
S1.2,通过S1.1中的账户名/对象名获取数据的初始索引ID;
S1.3,根据HashMap重置数据的索引ID;将S1.2中得到的索引ID进行哈希映射得到索引项的ID值:k=Hash(f)%24,k取[0,23]之间的任意唯一值;
S1.4,根据邻接矩阵表,找到当前节点到存储索引项节点k的一条最短路径,在节点k中存入索引项。
进一步地,在本发明的一个实施例中,所述步骤S2,包括:
S2.1,根据数据账户名/对象名计算索引ID;通过HashMap找到索引ID在Nauru-graph中对应的存储索引项节点的ID:i=f_ID=Hash(f)%24。
S2.2,通过最短路径到节点i,取出索引项;
S2.3,根据索引项中的数据存储ID,找到目标节点,取出数据。
进一步地,在本发明的一个实施例中,所述步骤S1.4,包括:
根据邻接矩阵表,找到当前节点到存储索引项节点k的一条最短路径,检查节点k的状态;若正常,则在节点k中存入索引项,若不正常,则检查与节点k相邻的其他节点,按ID从小到大进行检查,直到找到合适的节点k‘,在k‘中存入索引项。
进一步地,在本发明的一个实施例中,所述根据事故分析不同程序计算结果对比或/及不确定性分析结果,对现象识别模型进行优化和完善,包括:根据所述核电站设计数据信息建立事故分析基准模型,基于所述事故分析基准模型进行节点划分确认以及不确定性分析步骤和不同程序结果分析对比。
进一步地,在本发明的一个实施例中,所述步骤S1,还包括:
S1.5定期对邻接表中的邻接节点进行检测,如果某个邻接节点失效,则修改对应的行列值,将所述行列值预设一个阈值,表示路径已失效。
本发明实施例的基于Nauru-graph的大规模数据存储和读取方法,通过获取数据ID值,检索数据ID值的可用存储节点,以生成数据的索引项ID值;以及,将数据的索引项ID值,存储于数据ID值的节点上,以对数据进行存储操作;计算数据的索引项ID值,通过索引项中数据ID找到目标节点,以对数据进行读取操作。本发明主要通过引入高对称强联通的拓扑结构改进数据存储时,数据分布均衡,系统稳定性和存储效率不能兼得的问题。同时给出了依据实际场景生成高对称强连通拓扑结构的方案。
为达上述目的,本发明第二方面实施例提出了一种基于Nauru-graph的大规模数据存储和读取装置,包括:
存储模块,用于获取数据ID值,检索所述数据ID值的可用存储节点,以生成所述数据的索引项ID值;以及,
将所述数据的索引项ID值,存储于所述数据ID值的节点上,以对所述数据进行存储操作;
读取模块,用于计算所述数据的索引项ID值,通过所述索引项中数据ID找到目标节点,以对所述数据进行读取操作。
本发明实施例的基于Nauru-graph的大规模数据存储和读取装置,通过存储模块,用于获取数据ID值,检索数据ID值的可用存储节点,以生成数据的索引项ID值;以及,将数据的索引项ID值,存储于数据ID值的节点上,以对数据进行存储操作;读取模块,用于计算数据的索引项ID值,通过索引项中数据ID找到目标节点,以对数据进行读取操作。本发明主要通过引入高对称强联通的拓扑结构改进数据存储时,数据分布均衡,系统稳定性和存储效率不能兼得的问题。同时给出了依据实际场景生成高对称强连通拓扑结构的方案。
本发明的有益效果为:
利用了Nauru-graph的特殊图结构:每个顶点到图中任意顶点最多只需要四步,只有当3台以上机器发生损坏时,才会对连通性造成影响,使得存储可靠性更强。通过数据和索引两级存储的方法,改进了存储空间有限情况下的数据定位,进一步地,通过将数据和节点映射到同一个ID空间,可以有效地进行统一数据存储管理,具有很强的实用价值。同时我们给出了一种生成一系列同类型高连通度高对称图的方法,以应对不同具体场景不同时对图结构的不同需求。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为根据本发明一个实施例的基于Nauru-graph的大规模数据存储和读取方法流程图;
图2为根据本发明一个实施例的Nauru-graph的结构特性示意图;
图3为根据本发明一个实施例的Nauru-graph的邻接矩阵形式示意图;
图4为根据本发明一个实施例的利用Nauru-graph进行数据写入的步骤示意图;
图5为根据本发明一个实施例的利用Nauru-graph进行数据读取的步骤示意图;
图6为根据本发明另一个实施例的基于Nauru-graph的数据存储和读取方法的基于P2P网络和Nauru-graph网络的双层网络示意图。
图7为根据本发明一个实施例的基于集合和群论思想的适用于数据分布式存储的高对称强连通图结构的生成方法示意图;
图8为根据本发明一个实施例的基于Nauru-graph的大规模数据存储和读取装置结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的基于Nauru-graph的大规模数据存储和读取方法和装置。
图1为本发明实施例所提供的基于Nauru-graph的大规模数据存储和读取方法的流程图。
如图1所示,该基于Nauru-graph的大规模数据存储和读取方法包括:
步骤S1,获取数据ID值,检索数据ID值的可用存储节点,以生成数据的索引项ID值;以及,将数据的索引项ID值,存储于数据ID值的节点上,以对数据进行存储操作。
可以理解地是,通过两个层次的管理,将数据内容和索引信息进行分开存储。第一层是待存储数据所对应的数据ID,即表述数据的存储节点所对应ID,需要尽量保证将数据存储在提交该数据存储请求的节点或者相近的节点上,减少多个节点间传递数据带来的通信代价;第二层是确定数据的索引ID,将数据ID等相关信息组成一个索引ID,并将索引项存储于该ID值的节点上,两个层次的存储保证了该方法可以有效地对数据进行路由定位和存储管理,同时,负载均衡的特性,也有利于Nauru-graph结构在分布式存储系统中的应用。图4为根据本发明一个实施例的利用Nauru-graph进行数据写入的步骤示意图,如图4所示,具体的步骤如下:
1)获取数据的存储ID;检索可用存储节点,假设当前检索节点ID为i,尝试通过节点i写入数据。若节点i中空间充足,则数据存储ID为i,并将数据存入节点i中;若节点i中空间不足,检索与节点i相邻的其它节点,按ID从小到大进行检索,直到找到合适的节点j,将数据写入对应节点j中,并将数据的存储ID置为j,并生成索引项。
2)确定数据的索引ID:通过1)中的账户名/对象名获取数据的初始索引ID;
3)根据HashMap重置数据的索引ID;将2)中得到的索引ID进行哈希映射得到索引项的ID值:k=Hash(f)%24,k取[0,23]之间的任意唯一值。
4)根据邻接矩阵表(见表1),找到当前节点到存储索引项节点k的一条最短路径,检查节点k的状态。若正常,则在节点k中存入索引项,若不正常,则检查与节点k相邻的其他节点,按ID从小到大进行检查,知道找到合适的节点k‘,在k‘中存入索引项。
5)定期对邻接表中的邻接节点进行检测,如果某个邻接节点失效,则修改对应的行列值,将其设为一个很大的数,表示该路径已失效。
表1
节点 | 链接节点 | 节点 | 链接节点 | 节点 | 链接节点 | 节点 | 链接节点 |
0 | 1、5、21 | 6 | 7、11、19 | 12 | 13、17、18 | 18 | 19、23 |
1 | 3、15 | 7 | 6、9、13 | 13 | 15 | 19 | 21 |
2 | 3、4、23 | 8 | 9、10、22 | 14 | 15、16、20 | 20 | 21、22 |
3 | 9 | 9 | 无 | 15 | 无 | 21 | 无 |
4 | 5、17 | 10 | 11、16 | 16 | 17 | 22 | 23 |
5 | 11 | 11 | 无 | 17 | 无 | 23 | 无 |
Nauru-graph的链接表信息,每个节点与邻点的节点信息仅展示一次
进一步地,Nauru-graph邻接矩阵形式如图3所示,实际操作中非1项全部设为∞。
进一步地,图2为Nauru-graph网络中的结构和ID,展示了Nauru-graph的结构特性,如图2所示,Nauru-graph24个顶点、36条边、直径为4,点三连通且边三连通的对称二部三正则图。
进一步地,图3展示了Nauru-graph的邻接矩阵形式,如图3所示该矩阵为对称阵,任意行或列有三个元素,表示每个节点均为3度点。
步骤S2,计算数据的索引项ID值,通过索引项中数据ID找到目标节点,以对数据进行读取操作。
具体地,图5为根据本发明一个实施例的利用Nauru-graph进行数据写入的读取示意图,如图5所示,具体的,从任意节点读取数据,其读取步骤如下:
a)根据数据账户名/对象名计算索引ID;通过HashMap找到它在Nauru-graph中对应的存储索引项节点的ID:i=f_ID=Hash(f)%24。
b)通过最短路径到节点i,取出索引项;
c)根据索引项中的数据存储ID,找到目标节点,取出数据。
本发明通过数据和索引两级存储的方法,改进了存储空间有限情况下的数据定位,进一步地,通过将数据和节点映射到同一个ID空间,可以有效地进行统一数据存储管理,具有很强的实用价值。同时我们给出了一种生成一系列同类型高连通度高对称图的方法,以应对不同具体场景不同时对图结构的不同需求。
作为另一种示例,图6是利用本发明的基于特殊图结构(以Nauru-graph为例)的数据存储和读取方法的基于P2P网络和Nauru-graph网络的双层网络示意图。如图6所示,
假设存在一个双层网络层一为24个节点组成的Nauru-graph存储网络,层2为Pastry组织的P2P网络并提供某些应用。
层1采用纠删码的方法进行冗余存储,层2中每个节点都包含至少一个Nauru-graph网络中的节点信息。假设文件名为f的数据通过节点0写入,则写入步骤如下:
1)如果节点0中空间充足,则数据的ID为0,写入节点0中;如果0中空间不足则数据ID只能为表3中ID映射表中存在的链接的ID数(这里可为1,5,21),写入具有可用空间且ID最小的节点,这里选择节点1;
2)计算文件ID,f_ID=Hash(f)%24,这里假设f_ID=20;
3)将数据ID,数据文件名等相关信息简历索引项,如<f,0>,放置在ID为20的Nauru-graph节点中。根据表2所示的邻接矩阵,找到从节点0到20的一条最短路径,并将索引项存入其中。
4)每隔2小时,每个节点需要对邻接表中的邻接节点进行检测,如果某个邻接节点已失效,则修改邻接矩阵中这两个节点ID所对应行、列的值(即该节点ID和已失效的邻接节点ID在表2中的交叉值),将其设为无穷大或者一个很大的数,表示该路径已经无效。
5)当从任意节点读取数据时,假设从节点1读取文件f,读取过程如下:
a)计算文件哈希值f_ID=Hash(f)%24=20,即索引ID值;
b)通过表1的矩阵路径表,找到5跳内从节点1到达节点20的所有路径,比如:路径距离,如表2所示:
表2
然后找到其中距离最短的路径,即1-0-21-20或1-15-14-20路由到索引节点,取出其中的索引表项<f,0>,并返回给节点1;
c)从索引表项中,读取数据ID(这里值为0),则节点1向节点0发出查询请求,读取数据。
进一步地,作为一种示例,图7为根据本发明一个实施例的基于集合和群论思想的适用于数据分布式存储的高对称强连通图结构的生成方法示意图,举例来说,如图7所示:
1)先确定一个群G=<a,b|a^4=b^2=e>,S=<a,b>为群G的生成子集合;
2)群G中的每一个元素均可对应图G中的一个点,群G的阶数等于图G的点数,即8;
3)对图G中的任意两点u和v,点u对应群G中的元素g,点v对应群G中的元素g‘,点u和点v之间存在连边当且仅当存在生成子s属于S使得g’=gs;
4)计算该生成图的连通度和直径,验证是否符合需要。
根据本发明实施例的基于Nauru-graph的大规模数据存储和读取方法,通过获取数据ID值,检索数据ID值的可用存储节点,以生成数据的索引项ID值;以及,将数据的索引项ID值,存储于数据ID值的节点上,以对数据进行存储操作;计算数据的索引项ID值,通过索引项中数据ID找到目标节点,以对数据进行读取操作。本发明主要通过引入高对称强联通的拓扑结构改进数据存储时,数据分布均衡,系统稳定性和存储效率不能兼得的问题。同时给出了依据实际场景生成高对称强连通拓扑结构的方案。
图8为根据本发明一个实施例的基于Nauru-graph的大规模数据存储和读取装置结构示意图。
如图8所示,该基于Nauru-graph的大规模数据存储和读取装置10包括:存储模块100和读取模块200。
存储模块100,用于获取数据ID值,检索数据ID值的可用存储节点,以生成数据的索引项ID值;以及,
将数据的索引项ID值,存储于数据ID值的节点上,以对数据进行存储操作;
读取模块200,用于计算数据的索引项ID值,通过索引项中数据ID找到目标节点,以对数据进行读取操作。
进一步地,上述存储模块100,包括:
生成模块,用于获取数据的存储ID,检索可用存储节点,假设当前检索节点ID为i,尝试通过节点i写入数据,若节点i中空间充足,则数据存储ID为i,并将数据存入节点i中;若节点i中空间不足,检索与节点i相邻的其它节点,按ID从小到大进行检索,直到找到合适的节点j,将数据写入对应节点j中,并将数据的存储ID置为j,并生成索引项;
获取模块,用于通过生成模块中的账户名/对象名获取数据的初始索引ID;
映射模块,用于根据HashMap重置数据的索引ID;将获取模块中得到的索引ID进行哈希映射得到索引项的ID值:k=Hash(f)%24,k取[0,23]之间的任意唯一值;
存入模块,用于根据邻接矩阵表,找到当前节点到存储索引项节点k的一条最短路径,在节点k中存入索引项。
进一步地,上述读取模块200,包括:
计算模块,用于根据数据账户名/对象名计算索引ID;通过HashMap找到索引ID在Nauru-graph中对应的存储索引项节点的ID:i=f_ID=Hash(f)%24;
节点模块,用于通过最短路径到节点i,取出索引项;
目标模块,用于根据索引项中的数据存储ID,找到目标节点,取出数据。
进一步地,上述存入模块,还用于:
根据邻接矩阵表,找到当前节点到存储索引项节点k的一条最短路径,检查节点k的状态;若正常,则在节点k中存入索引项,若不正常,则检查与节点k相邻的其他节点,按ID从小到大进行检查,直到找到合适的节点k‘,在k‘中存入索引项。
进一步地,上述存储模块,还包括:
检测模块,用于定期对邻接表中的邻接节点进行检测,如果某个邻接节点失效,则修改对应的行列值,将行列值预设一个阈值,表示路径已失效。
根据本发明实施例的基于Nauru-graph的大规模数据存储和读取装置,通过存储模块,用于获取数据ID值,检索数据ID值的可用存储节点,以生成数据的索引项ID值;以及,将数据的索引项ID值,存储于数据ID值的节点上,以对数据进行存储操作;读取模块,用于计算数据的索引项ID值,通过索引项中数据ID找到目标节点,以对数据进行读取操作。本发明主要通过引入高对称强联通的拓扑结构改进数据存储时,数据分布均衡,系统稳定性和存储效率不能兼得的问题。同时给出了依据实际场景生成高对称强连通拓扑结构的方案。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种基于Nauru-graph的大规模数据存储和读取方法,其特征在于,包括以下步骤:
步骤S1,获取数据ID值,检索所述数据ID值的可用存储节点,以生成所述数据的索引项ID值;以及,
将所述数据的索引项ID值,存储于所述数据ID值的节点上,以对所述数据进行存储操作;
步骤S2,计算所述数据的索引项ID值,通过所述索引项中数据ID找到目标节点,以对所述数据进行读取操作。
2.根据权利要求1所述的基于Nauru-graph的大规模数据存储和读取方法,其特征在于,所述步骤S1,包括:
S1.1,获取数据的存储ID,检索可用存储节点,假设当前检索节点ID为i,尝试通过节点i写入数据,若节点i中空间充足,则数据存储ID为i,并将数据存入节点i中;若节点i中空间不足,检索与节点i相邻的其它节点,按ID从小到大进行检索,直到找到合适的节点j,将数据写入对应节点j中,并将数据的存储ID置为j,并生成索引项;
S1.2,通过S1.1中的账户名/对象名获取数据的初始索引ID;
S1.3,根据HashMap重置数据的索引ID;将S1.2中得到的索引ID进行哈希映射得到索引项的ID值:k=Hash(f)%24,k取[0,23]之间的任意唯一值;
S1.4,根据邻接矩阵表,找到当前节点到存储索引项节点k的一条最短路径,在节点k中存入索引项。
3.根据权利要求1所述的基于Nauru-graph的大规模数据存储和读取方法,其特征在于,所述步骤S2,包括:
S2.1,根据数据账户名/对象名计算索引ID;通过HashMap找到索引ID在Nauru-graph中对应的存储索引项节点的ID:i=f_ID=Hash(f)%24。
S2.2,通过最短路径到节点i,取出索引项;
S2.3,根据索引项中的数据存储ID,找到目标节点,取出数据。
4.根据权利要求2所述的基于Nauru-graph的大规模数据存储和读取方法,其特征在于,所述步骤S1.4,包括:
根据邻接矩阵表,找到当前节点到存储索引项节点k的一条最短路径,检查节点k的状态;若正常,则在节点k中存入索引项,若不正常,则检查与节点k相邻的其他节点,按ID从小到大进行检查,直到找到合适的节点k‘,在k‘中存入索引项。
5.根据权利要求1所述的基于Nauru-graph的大规模数据存储和读取方法,其特征在于,所述步骤S1,还包括:
S1.5定期对邻接表中的邻接节点进行检测,如果某个邻接节点失效,则修改对应的行列值,将所述行列值预设一个阈值,表示路径已失效。
6.一种基于Nauru-graph的大规模数据存储和读取装置,其特征在于,包括:
存储模块,用于获取数据ID值,检索所述数据ID值的可用存储节点,以生成所述数据的索引项ID值;以及,
将所述数据的索引项ID值,存储于所述数据ID值的节点上,以对所述数据进行存储操作;
读取模块,用于计算所述数据的索引项ID值,通过所述索引项中数据ID找到目标节点,以对所述数据进行读取操作。
7.根据权利要求6所述的基于Nauru-graph的大规模数据存储和读取装置,其特征在于,所述存储模块,包括:
生成模块,用于获取数据的存储ID,检索可用存储节点,假设当前检索节点ID为i,尝试通过节点i写入数据,若节点i中空间充足,则数据存储ID为i,并将数据存入节点i中;若节点i中空间不足,检索与节点i相邻的其它节点,按ID从小到大进行检索,直到找到合适的节点j,将数据写入对应节点j中,并将数据的存储ID置为j,并生成索引项;
获取模块,用于通过所述生成模块中的账户名/对象名获取数据的初始索引ID;
映射模块,用于根据HashMap重置数据的索引ID;将所述获取模块中得到的索引ID进行哈希映射得到索引项的ID值:k=Hash(f)%24,k取[0,23]之间的任意唯一值;
存入模块,用于根据邻接矩阵表,找到当前节点到存储索引项节点k的一条最短路径,在节点k中存入索引项。
8.根据权利要求6所述的基于Nauru-graph的大规模数据存储和读取装置,其特征在于,所述读取模块,包括:
计算模块,用于根据数据账户名/对象名计算索引ID;通过HashMap找到索引ID在Nauru-graph中对应的存储索引项节点的ID:i=f_ID=Hash(f)%24;
节点模块,用于通过最短路径到节点i,取出索引项;
目标模块,用于根据索引项中的数据存储ID,找到目标节点,取出数据。
9.根据权利要求7所述的基于Nauru-graph的大规模数据存储和读取装置,其特征在于,所述存入模块,还用于:
根据邻接矩阵表,找到当前节点到存储索引项节点k的一条最短路径,检查节点k的状态;若正常,则在节点k中存入索引项,若不正常,则检查与节点k相邻的其他节点,按ID从小到大进行检查,直到找到合适的节点k‘,在k‘中存入索引项。
10.根据权利要求6所述的基于Nauru-graph的大规模数据存储和读取装置,其特征在于,所述存储模块,还包括:
检测模块,用于定期对邻接表中的邻接节点进行检测,如果某个邻接节点失效,则修改对应的行列值,将所述行列值预设一个阈值,表示路径已失效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111288503.XA CN114237490A (zh) | 2021-11-02 | 2021-11-02 | 基于Nauru-graph的大规模数据存储和读取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111288503.XA CN114237490A (zh) | 2021-11-02 | 2021-11-02 | 基于Nauru-graph的大规模数据存储和读取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114237490A true CN114237490A (zh) | 2022-03-25 |
Family
ID=80743566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111288503.XA Pending CN114237490A (zh) | 2021-11-02 | 2021-11-02 | 基于Nauru-graph的大规模数据存储和读取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114237490A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645039A (zh) * | 2009-06-02 | 2010-02-10 | 中国科学院声学研究所 | 一种基于彼得森图的数据存储和读取方法 |
CN104008111A (zh) * | 2013-02-27 | 2014-08-27 | 深圳市腾讯计算机系统有限公司 | 一种数据的存储管理方法及装置 |
CN104123359A (zh) * | 2014-07-17 | 2014-10-29 | 江苏省邮电规划设计院有限责任公司 | 一种分布式对象存储系统的资源管理方法 |
CN104378447A (zh) * | 2014-12-03 | 2015-02-25 | 深圳市鼎元科技开发有限公司 | 一种基于哈希环的非迁移分布式存储方法及系统 |
CN105117502A (zh) * | 2015-10-13 | 2015-12-02 | 四川中科腾信科技有限公司 | 一种基于大数据的检索方法 |
US20200257681A1 (en) * | 2017-11-01 | 2020-08-13 | Datastreams Corp. | System for storing and searching big data in real-time |
CN113254505A (zh) * | 2021-06-17 | 2021-08-13 | 湖南视觉伟业智能科技有限公司 | 分布式数据存储方法、检索方法、系统及可读存储介质 |
-
2021
- 2021-11-02 CN CN202111288503.XA patent/CN114237490A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645039A (zh) * | 2009-06-02 | 2010-02-10 | 中国科学院声学研究所 | 一种基于彼得森图的数据存储和读取方法 |
CN104008111A (zh) * | 2013-02-27 | 2014-08-27 | 深圳市腾讯计算机系统有限公司 | 一种数据的存储管理方法及装置 |
CN104123359A (zh) * | 2014-07-17 | 2014-10-29 | 江苏省邮电规划设计院有限责任公司 | 一种分布式对象存储系统的资源管理方法 |
CN104378447A (zh) * | 2014-12-03 | 2015-02-25 | 深圳市鼎元科技开发有限公司 | 一种基于哈希环的非迁移分布式存储方法及系统 |
CN105117502A (zh) * | 2015-10-13 | 2015-12-02 | 四川中科腾信科技有限公司 | 一种基于大数据的检索方法 |
US20200257681A1 (en) * | 2017-11-01 | 2020-08-13 | Datastreams Corp. | System for storing and searching big data in real-time |
CN113254505A (zh) * | 2021-06-17 | 2021-08-13 | 湖南视觉伟业智能科技有限公司 | 分布式数据存储方法、检索方法、系统及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11461203B2 (en) | Systems and methods of handling node failure in a distributed data storage using multi-layer consistent hashing | |
US20170220614A1 (en) | Consistent ring namespaces facilitating data storage and organization in network infrastructures | |
US9251232B2 (en) | Database controller, method, and system for storing encoded triples | |
US10140351B2 (en) | Method and apparatus for processing database data in distributed database system | |
US7523130B1 (en) | Storing and retrieving objects on a computer network in a distributed database | |
CN101674233B (zh) | 基于彼得森图的存储网络系统及数据读写方法 | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
US20130031229A1 (en) | Traffic reduction method for distributed key-value store | |
US20170220696A1 (en) | Data matching method and apparatus and computer storage medium | |
CN103218404A (zh) | 一种基于关联特性的多维元数据管理方法和系统 | |
EP3371717A1 (en) | Virtual edge of a graph database | |
WO2022083436A1 (zh) | 数据处理方法、装置、设备及可读存储介质 | |
CN113360456B (zh) | 数据归档方法、装置、设备以及存储介质 | |
US8612464B2 (en) | Portable hash-based key location mechanism | |
CN105830041A (zh) | 元数据的恢复方法及装置 | |
CN113300953A (zh) | 一种多路径故障转移组的管理方法、系统及相关装置 | |
JP7349506B2 (ja) | K-最近傍探索のための分散型インメモリ空間データストア | |
CN106027638A (zh) | 一种基于混合编码的hadoop数据分发方法 | |
US9684668B1 (en) | Systems and methods for performing lookups on distributed deduplicated data systems | |
CN106547484A (zh) | 一种基于raid5的实现内存数据可靠性方法及系统 | |
CN112507026A (zh) | 基于键值模型、文档模型和图模型数据的分布式高速存储方法 | |
CN107547657A (zh) | 一种基于云存储系统中单点数据编号的方法、装置以及存储介质 | |
CN114237490A (zh) | 基于Nauru-graph的大规模数据存储和读取方法及装置 | |
US11507313B2 (en) | Datafall: a policy-driven algorithm for decentralized placement and reorganization of replicated data | |
EP3096248B1 (en) | Data management system and data management method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |