一种重构图的数据存储方法技术

技术编号:21059990 阅读:18 留言:0更新日期:2019-05-08 06:51
本发明专利技术公开了一种重构图的数据存储方法,所属技术领域为计算机领域,具体涉及数据结构、数据存储、数据查询等技术领域,用于解决现有数据结构的存储主要以列表形式进行保存,会出现资源瓶颈的问题。本发明专利技术的步骤为:将图中两端分别连接两个或多个点的点作为边;将点的值边的值型分开,一个点由边的值关联到另一个节点,得到重构图。针对重构图进行存储。本发明专利技术用于重构图的数据存储。

【技术实现步骤摘要】
一种重构图的数据存储方法
一种重构图的数据存储方法,用于重构图的数据存储,所属
为计算机领域,具体涉及数据结构、数据存储、数据查询等

技术介绍
图结构:数据元素间的关系是任意的,包含数据的图结构,即图中任意两个数据元素间均可相关联。其他数据结构(如树、线性表等)都有明确的条件限制。哈希表:是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。现有的数图结构的存储方式是保存点和边,而对于边的结构表达方式是被边连接的两个点。存储结构如说明书附图1所示。此类结构的存储和查询方式的问题在于,现有数据结构的存储仅能使用关系型数据库(mysql、oracle),主要以列表形式进行保存,很难用合理的方式存储到K,V(Keyvalue)类数据库中,关系型数据库由于存储数据的位置在硬盘上,因此读和写的效率都依赖于硬盘的I/O,会出现资源瓶颈的问题;当需要判断一个点是否存在于图中时,采用关系型数据库需要遍历所有的点才能知道是否在图中,造成查询效率低。
技术实现思路
针对上述研究的问题,本专利技术的目的在于提供一种重构图的数据存储方法,用于解决现有数据结构的存储方式主要以列表形式进行保存,会出现资源瓶颈的问题。为了达到上述目的,本专利技术采用如下技术方案:一种重新构建图的方法,其特征在于,如下步骤:步骤S1、重新定义图中的边将图中两端分别连接两个或多个点的点作为边;步骤S2、重新构建图一个点根据边的类型下包含的边的值关联到另一个节点,得到重构图。进一步,将重构图使用Keyvalue类数据库进行数据存储。进一步,将重构图使用Keyvalue类数据库进行数据存储的具体步骤为:步骤1、定义两个存储结构以key为重构图ID,value为包含重构图中全量节点和边列表两个链表的图哈希表;以key为边的值,value为包含边连接的节点ID、重构图ID、边类型三个属性的边哈希表。步骤2、将步骤1得到的两个哈希表通过重构图ID相互关联起来;步骤3、将数据相关联的边哈希表和图哈希表以Keyvalue的形式保存到数据库。本专利技术同现有技术相比,其有益效果表现在:1.本专利技术中的图的图结构比传统图结构,存储数据少,比起遍历方式上更快速,即能更加快速匹配一个节点是否与图相连接,而且采用Keyvalue类数据库进行存储,更佳使得后续的查询方式更加的快,即本专利技术的图结构与传统图结构相比,本专利技术表达相互连接的关系所需要记录的边数据更少;比如基于相同边的值,有4个节点两两相互连接需要6条边才能记录完整这个结构,而使用本专利技术中的方式记录信息,则只需要一条数据则可以完成记录。2.本专利技术中重新定义了图结构的图,不仅能使用关系型数据库(mysql、oracle)进行存储和查询(参见效果中的第1点的存储优势,以及存储优势所带来的查询优势),还能采用合理的方式存储到K,V类数据库中,即存储到内存数据库存中(比如:redis),在现有的IT资源条件下,内存不再是资源瓶颈,而内存的读写效率是远高于硬盘的。附图说明图1为现有技术中的数据结构的存储和查询表的示意图,(a)为点的存储方式,(b)为边的存储方式;图2为本专利技术重构图的存储和查询表的示意图,(a)为图哈希表的存储方式,(b)为边哈希表的存储方式;图3为本专利技术重构图在数据库中进行查询的示意图;图4为本专利技术实施例中的原始数据表;图5为本专利技术实施例中所指传统图结构记录图的表;图6为本专利技术实施例中所指传统图结构记录图的图;图7为本专利技术实施例中采用重构图结构记录图的表;图8为本专利技术实施例中采用重构图结构记录图的图。具体实施方式下面将结合附图及具体实施方式对本专利技术作进一步的描述。一种重新构建图的方法,如下步骤:步骤S1、重新定义图中的边将图中两端分别连接两个或多个点的点作为边;图中的边是由一个两端分别连接两个或多个点的点构成。也就是说一条边至少有三个点,中间的点代表边,因此边是一个有值的数据,例:1.两颗星球有关系的话,可以是同一个星系。星系就是边的类型,具体的星系名称比如太阳系就是边的值;2.两辆车有关系的话,可以是同一个型号的车,车的型号这种属性就是边的类型,而具体是哪一个型号就是边的值,比如两个车都是大众的桑塔拉。需要根据实际的数据含义找到点和边。步骤S2、重新构建图将点的边的值和边的值分开,一个点根据边的类型下包含的边的值(可以是基于一个或多个相同的值)关联到另一个节点,得到重构了结构的图。即构建图的时候将点的值和边(也是一个点)的值分开,然后一个点可以通过相同类型下的一个边的值或多重边的值关联到另一个节点。节点和节点(此处的节点,是指可为多重值的节点,不指代表节点的边)之间不会直接连接,必然通过一种关联关系连接到一起,如:有一个数据是人、家庭地址、毕业学校、公司名称。将人定义为节点,即边的类型(此节点就包含了多重值,家庭地址、毕业学校、公司名称)时,那么人和人之间的连接方式有三种:a.相同家庭地址;b.相同毕业学校;c.相同公司名称),这三种方式即为边的值,因此连接关系是有值存在,并非是一种纯数据关系的表达方式。一种重构图的数据存储方法,将重构图使用KeyValue类数据库进行数据存储;具体步骤为:步骤1、定义两个存储结构如图3所示,以key为重构图ID,value为包含重构图中全量节点和边列表两个链表的图哈希表,全量节点即为重构图ID的点列表,边列表即为重构图ID中所有边的值;以key为边的值,value为包含边连接的节点id(即点列表)、重构图ID、边类型三个属性的边哈希表。步骤2、将步骤1得到的两个哈希表通过重构图ID相互关联起来;步骤3、将数据相关联的边哈希表和图哈希表以KeyValue的形式保存到数据库。(如:redis数据库)。一种重构图的数据查询方法,步骤如下:(1)获取一个待查询边;(2)通过边的值在数据库中进行查询,即可得到待查询边与重构图是否连接的结果。具体步骤为:步骤(2.1)通过边的值(即key)在边哈希表中进行查找,判断是否能找到边的值,若能找到,转到步骤(2.2),否则得到待查询边与重构图不相连接的结果;步骤(2.2)通过边的值在边哈希表中找到所对应的重构图,即在图哈希表中找到的相连接的重构图。专利技术中将边构造为由至少三个点组成的连接关系,此类方法能更加有效的表达图形结构(即重构图),也让边所需记录的数据行数更少。且使用哈希表形式对数据进行存储,以K,V的形式进行查询效率高于列表遍历。实施例:获取原始数据如图4所示,类型为人员名称,人员名称下包含有边的值,即所属公司和毕业学校,采用传统图结构记录图(边的数据记录)的形态如图5和图6所示,通过相同边的值进行连接(只能表达节点之间两两均可连接),需要记录6条边的记录;而本专利技术通过相同边的值进行连接,只需要3条记录,可以看出节点可以既是共同的公司又是共同的学校,也能表达两节点之间仅是共同的学校,具体图7和图8所示。其中图8即是按照图2中的(b)图进行KeyValue类数据库存储,存在了3条图,边哈希表包括了图7和图8所示3条边,图哈希表包括图7和图8所示的重构图,还包括其它重构图,在查找时,输入人员名称:黄本文档来自技高网...

【技术保护点】
1.一种重新构建图的方法,其特征在于,如下步骤:步骤S1、重新定义图中的边将图中两端分别连接两个或多个点的点作为边;步骤S2、重新构建图一个点根据边的类型下包含的边的值关联到另一个节点,得到重构图。

【技术特征摘要】
1.一种重新构建图的方法,其特征在于,如下步骤:步骤S1、重新定义图中的边将图中两端分别连接两个或多个点的点作为边;步骤S2、重新构建图一个点根据边的类型下包含的边的值关联到另一个节点,得到重构图。2.一种重构图的数据存储方法,其特征在于,将重构图使用Keyvalue类数据库进行数据存储。3.根据权利要求2所术的一种重构图的数据存储方法,其特征在于,将重构图使用Keyva...

【专利技术属性】
技术研发人员:陈少磊徐志华刘嵩肖羊
申请(专利权)人:四川新网银行股份有限公司
类型:发明
国别省市:四川,51

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

1