图数据库的数据更新方法和装置制造方法及图纸

技术编号:24574054 阅读:27 留言:0更新日期:2020-06-21 00:07
本申请涉及一种图数据库的数据更新方法和装置,所述方法包括:确定更新操作的增量数据和操作类型;使用分布式锁,将增量数据所对应的数据编号上锁;调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;根据操作类型和判断结果对图数据库中的相应数据进行更新;更新操作完成后,将数据编号解锁。本申请的方案支持数据分布式并行传输和处理,支持多进程和多线程;在不改造现有系统(数据生产、传输系统和图数据库)的前提下,能够在源数据到图数据库的跨系统处理过程中,同时实现分布式、实时性、时序性和幂等性。

Data updating method and device of graph database

【技术实现步骤摘要】
图数据库的数据更新方法和装置
本申请涉及数据库
,具体涉及一种图数据库的数据更新方法和装置。
技术介绍
随着互联网和物联网技术的发展,数据的增长速度越来越快。同时,图数据的应用也越来越广泛,很多相关的应用对于实时性有很高的要求。这就需要图数据库能够实现对海量数据的实时处理,首先要解决的就是图数据库对于海量数据的实时增量更新。图数据库用于存储实体信息和实体间的关系信息,对应图论中的“点”vertex(又称“节点”或“顶点”)和“边”edge(又称“弧”或“线”)。比如,人与人之间的关系,就可以采用图数据库存储,这时人是实体信息,是vertex;人之间的关系是实体间的关系信息,是edge。现有的图数据库有很多,比如:Neo4j、ArangoDB、OrientDB。相关技术中,数据的生产、传输系统和图数据库,在不同的组织和企业里,在不同的具体应用中,会选择不同的技术实现。如果为了实现相关功能或特性,需要一一修改这些系统,那么人力和时间成本会很高。在不改造现有系统(数据生产、传输系统和图数据库)的情况下,还没有相应的技术方案,能够同时解决源数据到图数据库过程的分布式、实时性、时序性和幂等性。
技术实现思路
为至少在一定程度上克服相关技术中存在的问题,本申请提供一种图数据库的数据更新方法和装置。根据本申请实施例的第一方面,提供一种图数据库的数据更新方法,包括:确定更新操作的增量数据和操作类型;使用分布式锁,将增量数据所对应的数据编号上锁;调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;根据操作类型和判断结果对图数据库中的相应数据进行更新;更新操作完成后,将数据编号解锁。进一步地,所述将增量数据所对应的数据编号上锁,包括:当增量数据为vertex时,则对vertexid上锁。进一步地,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加vertex的子流程;如果判断结果为已存在,进入覆盖vertex的子流程;当操作类型为删除时,如果判断结果为已存在,进入删除vertex的子流程,并对vertexlog进行更新。进一步地,所述添加vertex的子流程包括:将该vertex的vertexid设置为message的vertexid;将该vertex的available设置为true;遍历message的properties,生成vertex相应的properties;对vertexlog进行更新;添加vertex数据到图数据库。进一步地,所述覆盖vertex的子流程包括:比较vertex的vertexupdatemessageid与message的messageid,如果两个messageid相同,则流程结束;遍历message的properties,查找在vertex的properties中,是否存在vertex的${propertyname}与message的property的name相同;如果存在,覆盖vertex的property;如果不存在,在这个vertex中,添加一个property;遍历vertex的properties,比较vertex的${propertyname}updatemessageid与message的messageid;如果两个messageid不相同,比较message的timestamp与vertex的${propertyname}updatedatetime;如果message的timestamp时间更晚,则更新相关信息。进一步地,所述将增量数据所对应的数据编号上锁,包括:当增量数据为edge时,则对edge的起点vertexid和终点vertexid排序,按照顺序对起点vertexid和终点vertexid上锁。进一步地,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加edge的子流程;如果判断结果为已存在,进入覆盖edge的子流程;当操作类型为删除时,根据附加条件删除相应的edge数据。进一步地,所述添加edge的子流程包括:将该edge的fromvertexid设置为message的fromvertexid;将该edge的tovertexid设置为message的tovertexid;将该edge的relation设置为message的relation;将该edge的available设置为true;遍历message的properties,生成edge相应的properties;对edgelog进行更新;添加edge数据到图数据库。进一步地,所述根据附加条件删除相应的edge数据,包括:如果附加条件为fromvertexid、tovertexid和relation,则删除对应的1个edg数据;如果附加条件为fromvertexid和tovertexid,则删除对应的多个edg数据;如果附加条件为fromvertexid或tovertexid,则删除对应的多个edg数据。根据本申请实施例的第二方面,提供一种图数据库的数据更新装置,包括:确定模块,用于确定更新操作的增量数据和操作类型;上锁模块,用于使用分布式锁,将增量数据所对应的数据编号上锁;查询模块,用于调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;判断模块,用于根据操作类型和判断结果对图数据库中的相应数据进行更新;解锁模块,用于更新操作完成后,将数据编号解锁。本申请的实施例提供的技术方案具备以下有益效果:本申请的方案支持数据分布式并行传输和处理,支持多进程和多线程;在不改造现有系统(数据生产、传输系统和图数据库)的前提下,能够在源数据到图数据库的跨系统处理过程中,同时实现分布式、实时性、时序性和幂等性。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。图1是根据一示例性实施例示出的一种图数据库的数据更新方法的流程图。图2是根据一示例性实施例示出的一种分布式图数据库的系统框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致本文档来自技高网...

【技术保护点】
1.一种图数据库的数据更新方法,其特征在于,包括:/n确定更新操作的增量数据和操作类型;/n使用分布式锁,将增量数据所对应的数据编号上锁;/n调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;/n根据操作类型和判断结果对图数据库中的相应数据进行更新;/n更新操作完成后,将数据编号解锁。/n

【技术特征摘要】
1.一种图数据库的数据更新方法,其特征在于,包括:
确定更新操作的增量数据和操作类型;
使用分布式锁,将增量数据所对应的数据编号上锁;
调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;
根据操作类型和判断结果对图数据库中的相应数据进行更新;
更新操作完成后,将数据编号解锁。


2.根据权利要求1所述的方法,其特征在于,所述将增量数据所对应的数据编号上锁,包括:
当增量数据为vertex时,则对vertexid上锁。


3.根据权利要求2所述的方法,其特征在于,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:
当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加vertex的子流程;如果判断结果为已存在,进入覆盖vertex的子流程;
当操作类型为删除时,如果判断结果为已存在,进入删除vertex的子流程,并对vertexlog进行更新。


4.根据权利要求3所述的方法,其特征在于,所述添加vertex的子流程包括:
将该vertex的vertexid设置为message的vertexid;
将该vertex的available设置为true;
遍历message的properties,生成vertex相应的properties;
对vertexlog进行更新;
添加vertex数据到图数据库。


5.根据权利要求3所述的方法,其特征在于,所述覆盖vertex的子流程包括:
比较vertex的vertexupdatemessageid与message的messageid,如果两个messageid相同,则流程结束;
遍历message的properties,查找在vertex的properties中,是否存在vertex的${propertyname}与message的property的name相同;
如果存在,覆盖vertex的property;如果不存在,在这个vertex中,添加一个property;
遍历vertex的properties,比较vertex的${propertyname}updatemessageid与message的messageid;
如果两个messageid不相同,比较message的timestamp与vertex的${pro...

【专利技术属性】
技术研发人员:邓崇鑫蔡苗陈震宇刘国华
申请(专利权)人:中国邮政储蓄银行股份有限公司
类型:发明
国别省市:北京;11

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

1