一种实体关系的存储方法及设备与流程

文档序号:16918707发布日期:2019-02-19 19:10阅读:189来源:国知局
一种实体关系的存储方法及设备与流程

本发明涉及一种实体关系的存储方法及设备,属于数据库技术领域。



背景技术:

实体关系是一种普遍的存在,通常的如企业与其客户之间的关系、公司主要人员与企业的关系,关系对于如金融风控等场景是相当有用的数据。现有情况下这种实体关系的存储主要基于普通的关系型数据库方式:如将企业a、企业b、企业a与企业b间的关系存储成一条记录,形成一个三元组。实体间有多个关系,那么就存储多条记录。然而这样会导致在查询、管理和维护时,需要做一个复杂的查询才能将比如企业a的一层关系和二层关系查询出来。

随着大数据技术如火如荼的发展和应用,更大的一个关系图亟待建立并发现实体间的有用的关联关系,随着数据量增长,一旦发生涉及高并发访问或添加、删除和修改等关系链操作,不仅关系链操作的效率很低,而且很难确保数据一致性。



技术实现要素:

为了解决上述现有技术中存在的问题,本发明提供一种存储关系的存储方法,以支持大量的实体与关系的存储,并能支持方便的检索,如按照实体名称、实体属性、关系名称等进行检索,方便挖掘关联的实体。

本发明的技术方案如下:

技术方案一

一种实体关系的存储方法,包括以下步骤:

创建实体存储单元,存储实体及实体信息;

基于实体信息,创建用于通过条件查询实体的实体二级索引数据库;

创建关系存储单元,存储关系、关系两端的实体以及关系属性清单;

基于关系属性清单,创建用于通过条件查询关系的关系二级索引数据库。

进一步的,所述创建关系存储单元,采用双向链表的方式创建,具体步骤如下:

发起新增关系请求,判断新增的关系两端的实体是否已经存在于实体存储单元中;

若新增的关系两端的实体至少有一个不存在于实体存储单元中,则新建实体,存储当前不存在的实体以及实体信息;新建实体完毕,进入新建关系步骤;

若新增的关系两端的实体均存在实体存储单元中,则直接进入新建关系步骤;

新建关系,写入关系两端的实体以及关系属性清单,定义关系两端为双向链表中的结点,并分别存储两实体的前序指针和后续指针;若当前关系两端的任一实体已存在于关系存储单元中,则将该实体的前序指针指向前一实体的前序指针,并将前一实体的后序指针指向当前实体的后序指针;若当前关系两端的任一实体不存在于关系存储单元中,则将该实体的前序指针和后序指针均指向空;

将所述关系属性清单写入独立的数据库,形成所述关系二级索引数据库。

进一步的,所述创建实体存储,采用key-value分布式存储的方法进行创建;所述实体信息包括实体的状态位、实体的第一个关系和实体属性清单;

其中所述实体的状态位,用于标记实体的状态;

其中所述实体的第一个关系,为实体第一个产生的关系;

其中所述实体属性清单,包括表示实体属性的字段;将所述实体属性清单写入独立的数据库,形成所述实体二级索引数据库。

技术方案二

一种实体关系存储的设备,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:

创建实体存储单元,存储实体及实体信息;

基于实体信息,创建用于通过条件查询实体的实体二级索引数据库;

创建关系存储单元,存储关系、关系两端的实体以及关系属性清单;

基于关系属性清单,创建用于通过条件查询关系的关系二级索引数据库。

进一步的,所述创建关系存储单元,采用双向链表的方式创建,具体步骤如下:

发起新增关系请求,判断新增的关系两端的实体是否已经存在于实体存储单元中;

若新增的关系两端的实体至少有一个不存在于实体存储单元中,则新建实体,存储当前不存在的实体以及实体信息;新建实体完毕,进入新建关系步骤;

若新增的关系两端的实体均存在实体存储单元中,则直接进入新建关系步骤;

新建关系,写入关系两端的实体以及关系属性清单,定义关系两端为双向链表中的结点,并分别存储两实体的前序指针和后续指针;若当前关系两端的任一实体已存在于关系存储单元中,则将该实体的前序指针指向前一实体的前序指针,并将前一实体的后序指针指向当前实体的后序指针;若当前关系两端的任一实体不存在于关系存储单元中,则将该实体的前序指针和后序指针均指向空;

将所述关系属性清单写入独立的数据库,形成所述关系二级索引数据库。

进一步的,所述创建实体存储,采用key-value分布式存储的方法进行创建;所述实体信息包括实体的状态位、实体的第一个关系和实体属性清单;

其中所述实体的状态位,用于标记实体的状态;

其中所述实体的第一个关系,为实体第一个产生的关系;

其中所述实体属性清单,包括表示实体属性的字段;将所述实体属性清单写入独立的数据库,形成所述实体二级索引数据库。

本发明具有如下有益效果:

1、本发明一种实体关系的存储方法,通过基于实体信息和关系属性清单,建立实体二级索引数据库和关系二级索引数据库,可以根据实体信息和关系属性,对实体和关系进行条件查询。

2、通过双向链表的方式存储关系,以关系两端的实体作为双向链表中的结点,在查询时,可以很方便的查询到实体的前序结点和后序结点,也就是实体的前一实体和后一实体。

3、通过key-value的方式存储实体、实体的第一个关系和实体属性清单,查询速度快、存放数据量大、支持高并发;从而为关联关系挖掘提供基础。

附图说明

图1为本发明实施例的效果图;

图2为本发明实施例创建实体存储单元的示意图;

图3为本发明实施例创建关系存储单元的示意图;

图4为本发明实施例新建关系的流程图。

具体实施方式

下面结合附图和具体实施例来对本发明进行详细的说明。

实施例一

参见图1-3,一种实体关系的存储方法,包括以下步骤:

创建实体存储单元,存储实体及实体信息;

基于实体信息,创建用于通过条件查询实体的实体二级索引数据库;

创建关系存储单元,存储关系、关系两端的实体以及关系属性清单;

基于关系属性清单,创建用于通过条件查询关系的关系二级索引数据库,关系属性清单,包括表示关系属性的字段,比如图1中,关系1的属性3和属性5。

本实施例通过基于实体信息和关系属性清单,建立实体二级索引数据库和关系二级索引数据库,可以根据实体信息和关系属性,对实体和关系进行查询。

实施例二

具体参见图4,进一步的,所述创建关系存储单元,采用双向链表的方式创建,具体步骤如下:

发起新增关系请求,判断新增的关系两端的实体是否已经存在于实体存储单元中;

若新增的关系两端的实体至少有一个不存在于实体存储单元中,则新建实体,存储当前不存在的实体以及实体信息;新建实体完毕,进入新建关系步骤;

若新增的关系两端的实体均存在实体存储单元中,则直接进入新建关系步骤;

新建关系,写入关系两端的实体以及关系属性清单,定义关系两端为双向链表中的结点,并分别存储两实体的前序指针和后续指针;若当前关系两端的任一实体已存在于关系存储单元中,则将该实体的前序指针指向前一实体的前序指针,并将前一实体的后序指针指向当前实体的后序指针;若当前关系两端的任一实体不存在于关系存储单元中,则将该实体的前序指针和后序指针均指向空;

将所述关系属性清单写入独立的数据库,形成所述关系二级索引数据库;以下以图1和图3为例解释关系存储单元的创建:

在图1中,按顺序出现的关系依次为关系1、关系2和关系3,实体a和实体b间的关系为关系1,实体a和实体c之间的关系为关系2,实体b和实体c之间的关系为关系3;

在新增关系1时,存储关系1两端的实体a和实体b,再分别存储实体a和实体b的前序和后续指针。

在写入关系1时,因为是第一个出现的关系,实体a和实体b在实体存储单元中无相关实体关系,所以新建关系a和关系b并写入实体存储单元中,且将关系1中的实体a和实体b的前序指针及后续指针指向空。

在关系2写入时,涉及实体a和实体c两个实体,实体a在实体存储单元中已经存在,所以,关系2中实体a的前序指针指向了关系1中的a的前序指针,同时更新原系1中的实体a的后续指针指向了关系2中实体a的后续指针位置,而关系2中实体a的后续指针指向空,新建实体c,并将关系2中的实体c的前序指针和后续指针指向空;新增关系3时,关系3两端的实体b和实体c均已存在实体存储单元中,所以将关系3中实体b的前序指针指向关系1中实体b的前序指针,更新关系1中实体b的后序指针指向关系3中实体b的后序指针,将关系3中实体c的前序指针指向关系2中实体c的前序指针,更新关系2中实体c的后序指针指向关系3中实体c的后序指针,而关系3中实体b和实体c的后序指针均指向空。

具体参见图2,进一步的,所述创建实体存储,采用key-value分布式存储的方法进行创建;所述实体信息包括实体的状态位(因为实体是可删除的,状态位用来表示实体是否被删除)、实体的第一个关系和实体属性清单;

其中所述实体的状态位,用于标记实体的状态(因为实体是可删除的,状态位用来表示实体是否被删除);

其中所述实体的第一个关系,为实体第一个产生的关系;

其中所述实体属性清单,包括表示实体属性的字段,例如图1中,实体a的属性1和属性2;将所述实体属性清单写入独立的数据库,形成所述实体二级索引数据库。

本实施例不仅具备实施例一的有益效果,还进一步提出了,通过双向链表的方式存储关系,以关系两端的实体作为双向链表中的结点,在查询时,可以很方便的查询到实体的前序结点和后序结点,也就是实体的前一实体和后一实体;

通过key-value的方式存储实体、实体的第一个关系和实体属性清单,查询速度快、存放数据量大、支持高并发。

实施例三

参见图1-3,一种实体关系存储的设备,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:

创建实体存储单元,存储实体及实体信息;

基于实体信息,创建用于通过条件查询实体的实体二级索引数据库;

创建关系存储单元,存储关系、关系两端的实体以及关系属性清单;

基于关系属性清单,创建用于通过条件查询关系的关系二级索引数据库,关系属性清单,包括表示关系属性的字段,比如图1中,关系1的属性3和属性5。

本实施例通过基于实体信息和关系属性清单,建立实体二级索引数据库和关系二级索引数据库,可以根据实体信息和关系属性,对实体和关系进行查询。

实施例四

具体参见图4,进一步的,所述创建关系存储单元,采用双向链表的方式创建,具体步骤如下:

发起新增关系请求,判断新增的关系两端的实体是否已经存在于实体存储单元中;

若新增的关系两端的实体至少有一个不存在于实体存储单元中,则新建实体,存储当前不存在的实体以及实体信息;新建实体完毕,进入新建关系步骤;

若新增的关系两端的实体均存在实体存储单元中,则直接进入新建关系步骤;

新建关系,写入关系两端的实体以及关系属性清单,定义关系两端为双向链表中的结点,并分别存储两实体的前序指针和后续指针;若当前关系两端的任一实体已存在于关系存储单元中,则将该实体的前序指针指向前一实体的前序指针,并将前一实体的后序指针指向当前实体的后序指针;若当前关系两端的任一实体不存在于关系存储单元中,则将该实体的前序指针和后序指针均指向空;

将所述关系属性清单写入独立的数据库,形成所述关系二级索引数据库;以下以图1和图3为例解释关系存储单元的创建:

在图1中,按顺序出现的关系依次为关系1、关系2和关系3,实体a和实体b间的关系为关系1,实体a和实体c之间的关系为关系2,实体b和实体c之间的关系为关系3;

在新增关系1时,存储关系1两端的实体a和实体b,再分别存储实体a和实体b的前序和后续指针。

在写入关系1时,因为是第一个出现的关系,实体a和实体b在实体存储单元中无相关实体关系,所以新建关系a和关系b并写入实体存储单元中,且将关系1中的实体a和实体b的前序指针及后续指针指向空。

在关系2写入时,涉及实体a和实体c两个实体,实体a在实体存储单元中已经存在,所以,关系2中实体a的前序指针指向了关系1中的a的前序指针,同时更新原系1中的实体a的后续指针指向了关系2中实体a的后续指针位置,而关系2中实体a的后续指针指向空,新建实体c,并将关系2中的实体c的前序指针和后续指针指向空;新增关系3时,关系3两端的实体b和实体c均已存在实体存储单元中,所以将关系3中实体b的前序指针指向关系1中实体b的前序指针,更新关系1中实体b的后序指针指向关系3中实体b的后序指针,将关系3中实体c的前序指针指向关系2中实体c的前序指针,更新关系2中实体c的后序指针指向关系3中实体c的后序指针,而关系3中实体b和实体c的后序指针均指向空。

具体参见图2,进一步的,所述创建实体存储,采用key-value分布式存储的方法进行创建;所述实体信息包括实体的状态位、实体的第一个关系和实体属性清单;

其中所述实体的状态位,用于标记实体的状态(因为实体是可删除的,状态位用来表示实体是否被删除);

其中所述实体的第一个关系,为实体第一个产生的关系;

其中所述实体属性清单,包括表示实体属性的字段,例如图1中,实体a的属性1和属性2;将所述实体属性清单写入独立的数据库,形成所述实体二级索引数据库。

本实施例不仅具备实施例三的有益效果,还进一步提出了,通过双向链表的方式存储关系,以关系两端的实体作为双向链表中的结点,在查询时,可以很方便的查询到实体的前序结点和后序结点,也就是实体的前一实体和后一实体;

通过key-value的方式存储实体、实体的第一个关系和实体属性清单,查询速度快、存放数据量大、支持高并发;存储有实体的第一个产生的关系,因为关系的存储双向链表式的,通过第一个关系,即可查询到实体的第二个关系、第三个关系……第n个关系;

实体二级索引数据库和关系二级索引数据库分别是基于实体属性清单和关系属性清单建立的,在查询时,可以通过输入实体或者关系的属性进行条件查询。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1