CN111309750A - 图数据库的数据更新方法和装置 - Google Patents

图数据库的数据更新方法和装置 Download PDF

Info

Publication number
CN111309750A
CN111309750A CN202010241791.2A CN202010241791A CN111309750A CN 111309750 A CN111309750 A CN 111309750A CN 202010241791 A CN202010241791 A CN 202010241791A CN 111309750 A CN111309750 A CN 111309750A
Authority
CN
China
Prior art keywords
vertex
data
message
edge
updating
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
Application number
CN202010241791.2A
Other languages
English (en)
Inventor
邓崇鑫
蔡苗
陈震宇
刘国华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Postal Savings Bank of China Ltd
Original Assignee
Postal Savings Bank of China Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Postal Savings Bank of China Ltd filed Critical Postal Savings Bank of China Ltd
Priority to CN202010241791.2A priority Critical patent/CN111309750A/zh
Publication of CN111309750A publication Critical patent/CN111309750A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

图数据库的数据更新方法和装置
技术领域
本申请涉及数据库技术领域,具体涉及一种图数据库的数据更新方法和装置。
背景技术
随着互联网和物联网技术的发展,数据的增长速度越来越快。同时,图数据的应用也越来越广泛,很多相关的应用对于实时性有很高的要求。这就需要图数据库能够实现对海量数据的实时处理,首先要解决的就是图数据库对于海量数据的实时增量更新。
图数据库用于存储实体信息和实体间的关系信息,对应图论中的“点”vertex(又称“节点”或“顶点”)和“边”edge(又称“弧”或“线”)。比如,人与人之间的关系,就可以采用图数据库存储,这时人是实体信息,是vertex;人之间的关系是实体间的关系信息,是edge。现有的图数据库有很多,比如:Neo4j、ArangoDB、OrientDB。
相关技术中,数据的生产、传输***和图数据库,在不同的组织和企业里,在不同的具体应用中,会选择不同的技术实现。如果为了实现相关功能或特性,需要一一修改这些***,那么人力和时间成本会很高。在不改造现有***(数据生产、传输***和图数据库)的情况下,还没有相应的技术方案,能够同时解决源数据到图数据库过程的分布式、实时性、时序性和幂等性。
发明内容
为至少在一定程度上克服相关技术中存在的问题,本申请提供一种图数据库的数据更新方法和装置。
根据本申请实施例的第一方面,提供一种图数据库的数据更新方法,包括:
确定更新操作的增量数据和操作类型;
使用分布式锁,将增量数据所对应的数据编号上锁;
调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;
根据操作类型和判断结果对图数据库中的相应数据进行更新;
更新操作完成后,将数据编号解锁。
进一步地,所述将增量数据所对应的数据编号上锁,包括:
当增量数据为vertex时,则对vertex id上锁。
进一步地,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:
当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加vertex的子流程;如果判断结果为已存在,进入覆盖vertex的子流程;
当操作类型为删除时,如果判断结果为已存在,进入删除vertex的子流程,并对vertex log进行更新。
进一步地,所述添加vertex的子流程包括:
将该vertex的vertex id设置为message的vertex id;
将该vertex的available设置为true;
遍历message的properties,生成vertex相应的properties;
对vertex log进行更新;
添加vertex数据到图数据库。
进一步地,所述覆盖vertex的子流程包括:
比较vertex的vertex update message id与message的message id,如果两个message id相同,则流程结束;
遍历message的properties,查找在vertex的properties中,是否存在vertex的${property name}与message的property的name相同;
如果存在,覆盖vertex的property;如果不存在,在这个vertex中,添加一个property;
遍历vertex的properties,比较vertex的${property name}update message id与message的message id;
如果两个message id不相同,比较message的timestamp与vertex的${propertyname}update datetime;
如果message的timestamp时间更晚,则更新相关信息。
进一步地,所述将增量数据所对应的数据编号上锁,包括:
当增量数据为edge时,则对edge的起点vertex id和终点vertex id排序,按照顺序对起点vertex id和终点vertex id上锁。
进一步地,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:
当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加edge的子流程;如果判断结果为已存在,进入覆盖edge的子流程;
当操作类型为删除时,根据附加条件删除相应的edge数据。
进一步地,所述添加edge的子流程包括:
将该edge的from vertex id设置为message的from vertex id;
将该edge的to vertex id设置为message的to vertex id;
将该edge的relation设置为message的relation;
将该edge的available设置为true;
遍历message的properties,生成edge相应的properties;
对edge log进行更新;
添加edge数据到图数据库。
进一步地,所述根据附加条件删除相应的edge数据,包括:
如果附加条件为from vertex id、to vertex id和relation,则删除对应的1个edg数据;
如果附加条件为from vertex id和to vertex id,则删除对应的多个edg数据;
如果附加条件为from vertex id或to vertex id,则删除对应的多个edg数据。
根据本申请实施例的第二方面,提供一种图数据库的数据更新装置,包括:
确定模块,用于确定更新操作的增量数据和操作类型;
上锁模块,用于使用分布式锁,将增量数据所对应的数据编号上锁;
查询模块,用于调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;
判断模块,用于根据操作类型和判断结果对图数据库中的相应数据进行更新;
解锁模块,用于更新操作完成后,将数据编号解锁。
本申请的实施例提供的技术方案具备以下有益效果:
本申请的方案支持数据分布式并行传输和处理,支持多进程和多线程;在不改造现有***(数据生产、传输***和图数据库)的前提下,能够在源数据到图数据库的跨***处理过程中,同时实现分布式、实时性、时序性和幂等性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据一示例性实施例示出的一种图数据库的数据更新方法的流程图。
图2是根据一示例性实施例示出的一种分布式图数据库的***框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的方法和装置的例子。
图1是根据一示例性实施例示出的一种图数据库的数据更新方法的流程图。该方法可以应用于分布式图数据库,具体包括以下步骤:
步骤S1:确定更新操作的增量数据和操作类型;
步骤S2:使用分布式锁,将增量数据所对应的数据编号上锁;
步骤S3:调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;
步骤S4:根据操作类型和判断结果对图数据库中的相应数据进行更新;
步骤S5:更新操作完成后,将数据编号解锁。
本申请的方案支持数据分布式并行传输和处理,支持多进程和多线程;在不改造现有***(数据生产、传输***和图数据库)的前提下,能够在源数据到图数据库的跨***处理过程中,同时实现分布式、实时性、时序性和幂等性。
本申请的方案同时实现了源数据到图数据库增量更新过程的分布式、实时性、时序性和幂等性。支持数据分布式并行传输和处理(同时支持多进程和多线程),无论数据传输和处理时的顺序如何,以及是否重复传输和处理,只要相关的数据全部至少成功传输和处理一次,最终结果保证和数据按时间顺序串行执行的结果完全一致。
为进一步详述本申请的技术方案,首先对分布式架构和源数据的相关概念进行介绍。
分布式架构是解决高并发的常用解决方案,图数据库的源数据产生***也经常采用这种方式,源数据从产生***到图数据库的传输、处理也就会涉及分布式。分布式架构的核心设计思想是并行拆分与横向扩展,有如下的优点,正在被越来越多的***使用。可基于通用硬件,横向扩展计算和存储能力,提升***的处理能力,满足业务不断增长的需求。通过并行处理,突破传统串行处理的效率瓶颈。增加***的可靠性,避免单点故障带来的***功能不可用。可以基于相对廉价的通用计算和存储设备,获取相同处理能力的成本低于传统架构。
源数据的生产***大多采用分布式架构,为了保证对于海量源数据的实时处理,源数据到图数据库的处理环节,也需要采用分布式架构。分布式并行***产生的源数据,在一般情况下无法保证源数据传输的全局时序性。相同的处理在多个进程或者线程同时进行,消耗的时间存在不确定性,部分节点在处理时还可能出现错误或故障。对一批有序数据的分布式并行处理,也无法保证这批数据在处理时的时序性。数据处理如果没有保证时序性,会导致数据更新的逻辑错误。比如,一条数据A字段的值,应该先更新成a0再更新成a1,如果更新顺序发生颠倒,会变成先更新成a1再更新成a0,最终变成了a0。为了保证传输时源数据的时序性,一般会采用缓存的方式,等待各个节点的数据全部发送,在缓存中排序后,再进行后续的串行传输。这种方式会导致数据传输的延迟,降低了时效性。而且,如果某个节点由于故障,长时间无法正常发送数据的时候,那么要么会造成严重的延迟,要么导致数据的非时序性。为了保证数据在处理时的有序性,一般会采用串行处理的方式,在源数据量不断增长的情况下,采用串行处理的方式,总会达到单节点的处理上限。如果采用分布式架构,那么就无法保证源数据处理时的全局时序性。也就是说,分布式架构下,源数据的传输和处理很难同时保证实时性和时序性。
由于错误无法杜绝,任何数据传输或处理过程都要考虑错误处理。数据传输容易实现至少成功传输一次,跨***传输和处理时,很难保证处理且仅成功处理一次。比如,如果接收到数据后,先进行数据处理,后发送数据接收确认(ACK)。当数据在处理完成后,在通知数据接收成功前,发生错误,由于数据发送端没有收到数据接收确认(ACK),会认为这条数据没有被成功接收,后续会再次发送这条数据,造成数据重复处理;如果接收到数据后,先发送数据接收确认(ACK),后进行数据处理。当数据在处理发生错误时,可能造成数据丢失。如果实现了数据持久化到图数据库这一处理过程的幂等性,那么结合数据传输至少成功传输一次,这一容易实现的特性,就可以解决源数据传输并更新到图数据库,这一完整过程处理且仅成功处理一次。
下面结合具体的应用场景,对本申请的方案进行拓展说明,分别介绍***架构、相关数据结构和图数据处理过程。
第一部分,介绍***架构。
参照图2,分布式图数据库的***架构可以分为三部分:源数据生产、图数据处理和图数据库操作。
图数据的源数据可以来自任意的业务***,源数据传输时需要将数据整理成相关的message数据结构。源数据传输方式,可以由业务***直接发送,也可以通过消息队列传输,支持分布式并行架构。在传输过程中,不需要业务***或消息队列保证数据传输的时序性,数据传输的各个节点时钟一致即可。
图数据处理支持分布式架构,可以部署多个图数据处理节点并行处理。图数据处理流程分为数据接收、数据处理和接收确认3个环节。在任何一个环节出现临时性错误时,都可以采用重试的方式处理,而且可以保证最终结果不会受到影响。数据接收支持并行批量接收,数据处理可以采用线程池的方式,多线程并行处理,每个线程处理一条数据。
数据处理过程中,会通过图数据库API查询和持久化图数据。不会依赖图数据库的特殊功能,相关的操作只使用最基本的图数据库API,包括:通过vertex id查询一个vertex;通过from vertex id、to vertex id和relation查询一个edge;通过from vertexid和to vertex id查询多个edge;通过from vertex id或to vertex id查询多个edge;添加和更新一个vertex;添加和更新一个edge。对于图数据库中存储的数据,也没有特殊的要求,只需要可以存储图数据最基本的字段。vertex数据包括:vertex id字段;vertex属性字段(vertex数据结构中,除了vertex id外,其他信息可以使用不同的字段存储。其中,vertex log的信息,可以合并成一个字段存储,每个${property name}log,可以合并成一个字段存储)。edge数据包括:edge id字段;from vertex id字段;to vertex id字段;relation字段;edge属性字段(edge数据结构中,除了edge id、from vertex id、to vertexid和relation外,其他信息可以使用不同的字段存储。其中,edge log的信息,可以合并成一个字段存储,每个${property name}log,可以合并成一个字段存储)。可以使用各种图数据库,包括但不局限于Neo4j、ArangoDB、OrientDB等。在一批数据处理完成后,进行数据接受确认(ACK),然后接收下一批数据,进入下一轮处理。
第二部分,介绍相关数据结构。
数据结构包括3部分:源数据传输时message的数据结构,图数据库中vertex的数据结构和edge的数据结构。
2.1.message的数据结构
即源数据传输时,使用的数据结构,包括以下几个部分。
message id:消息id,保证全局唯一,可以使用UUID,用于数据和处理的重复性判断。
timestamp:消息发生的时间,本方案的时序性,就是指这个字段由远到近的时间顺序。
operation:数据处理类型,一共有8种处理。
data:数据处理相关的图数据,不同的数据处理类型,这个字段涉及的具体数据结构不同。下面在说明每种数据处理时,会详细说明这个字段对应的数据结构。
data的properties部分的数据结构:
properties:
property:
name:属性名称-1。
value:属性的值-1。
property:
name:属性名称-2。
value:属性的值-2。
...
property:
name:属性名称-n。
value:属性的值-n。
2.2.vertex的数据结构
图数据库中vertex的数据结构。说明,${property name}表示一个vertex属性的名字,比如,name、age。${property name}value、${property name}available和${property name}log可以有多组。
vertex id:vertex的id。
vertex available:vertex是否被删除,false表示已删除,true表示存在。
vertex log:vertex的处理日志信息,包括,首次创建、最近更新、删除、覆盖相关的日志信息。
vertex create datetime:vertex添加时,message的timestamp。
vertex create message id:vertex添加时,message的message id。这个值只在第一次添加vertex时设置,之后不会再修改,即使删除之后重新添加。
vertex update datetime:vertex最近更新时,message的timestamp。初始值为vertex create datetime。
vertex update message id:vertex最近更新时,message的message id。初始值为vertex create message id。
vertex delete datetime:vertex删除时,message的timestamp。这个字段可以不存在。
vertex delete message id:vertex删除时,message的message id。这个字段可以不存在。
vertex replace datetime:vertex覆盖时,message的timestamp。这个字段可以不存在。
vertex replace message id:vertex覆盖时,message的message id。这个字段可以不存在。
${property name}value:属性${property name}的值。
${property name}available:属性${property name}是否被删除,false表示已删除,true表示存在。
${property name}log:属性${property name}的处理日志信息,包括,首次创建、最近更新、删除、覆盖相关的日志信息。
${property name}create datetime:${property name}添加时,message的timestamp。
${property name}create message id:${property name}添加时,message的message id。这个值只在第一次添加${property name}时设置,之后不会再修改,即使删除之后重新添加。
${property name}update datetime:${property name}最近更新时,message的timestamp。初始值为${property name}create datetime。
${property name}update message id:${property name}最近更新时,message的message id。初始值为${property name}create message id。
${property name}delete datetime:${property name}删除时,message的timestamp。这个字段可以不存在。
vertex delete message id:${property name}删除时,message的message id。这个字段可以不存在。
${property name}replace datetime:${property name}覆盖时,message的timestamp。这个字段可以不存在。
${property name}replace message id:${property name}覆盖时,message的message id。这个字段可以不存在。
举例说明:
比如,一个vertex是某个人:
vertex id:506
vertex available:truevertex log:
vertex create datetime:2001-02-2810:05:23.613
vertex create message id:5432898950
vertex update datetime:2019-08-1713:53:09.97
vertex update message id:5894309905
name value:张三
name available:truename log:
name create datetime:2001-02-2810:05:23.613
name create message id:5432898950
name update datetime:2001-02-2810:05:23.613
name update message id:5432898950
education value:大学
education available:trueeducation log:
education create datetime:2001-02-2810:05:23.613
education create message id:5432898950
education update datetime:2019-08-1713:53:09.97
education update message id:5894309905
比如,另一个vertex是某门课程:
vertex id:7960
vertex available:truevertex log:
vertex create datetime:2005-12-2815:11:37.889
vertex create message id:5589049053
name value:大学英语
name available:truename log:
name create datetime:2005-12-2815:11:37.889
name create message id:5589049053
2.3.edge的数据结构
图数据库中edge的数据结构。说明,${property name}表示一个edge属性的名字,比如,score、rank。${property name}value、${property name}available和${propertyname}log可以有多组。
edge id:edge的id。一组from vertex id、to vertex id和relation只能对应一个edge id,可以通过from vertex id、to vertex id和relation的字符串组合,得到一个edge id,比如,from vertex id+分隔符+to vertex id+分隔符+relation,分隔符是fromvertex id、to vertex id和relation中不会出现的字符。
from vertex id:edge的起点vertex的id。
to vertex id:edge的终点vertex的id。
relation:起点vertex与终点vertex之间的关系。
edge available:edge是否被删除,false表示已删除,true表示存在。
edge log:edge的处理日志信息,包括,首次创建、最近更新、删除、覆盖相关的日志信息。
edge create datetime:edge添加时,message的timestamp。
edge create message id:edge添加时,message的message id。这个值只在第一次添加vertex时设置,之后不会再修改,即使删除之后重新添加。
edge update datetime:edge最近更新时,message的timestamp。初始值为vertexcreate datetime。
edge update message id:edge最近更新时,message的message id。初始值为vertex create message id。
edge delete datetime:edge删除时,message的timestamp。这个字段可以不存在。
edge delete message id:edge删除时,message的message id。这个字段可以不存在。
edge replace datetime:edge覆盖时,message的timestamp。这个字段可以不存在。
edge replace message id:edge覆盖时,message的message id。这个字段可以不存在。
${property name}value:属性${property name}的值。
${property name}available:属性${property name}是否被删除,false表示已删除,true表示存在。
${property name}log:属性${property name}的处理日志信息,包括,首次创建、最近更新、删除、覆盖相关的日志信息。
${property name}create datetime:${property name}添加时,message的timestamp。
${property name}create message id:${property name}添加时,message的message id。这个值只在第一次添加${property name}时设置,之后不会再修改,即使删除之后重新添加。
${property name}update datetime:${property name}最近更新时,message的timestamp。初始值为${property name}create datetime。
${property name}update message id:${property name}最近更新时,message的message id。初始值为${property name}create message id。
${property name}delete datetime:${property name}删除时,message的timestamp。这个字段可以不存在。
vertex delete message id:${property name}删除时,message的messageid。这个字段可以不存在。
${property name}replace datetime:${property name}覆盖时,message的timestamp。这个字段可以不存在。
${property name}replace message id:${property name}覆盖时,message的message id。这个字段可以不存在。
举例说明:
比如,一个edge是某个人学习某门课程:
edge id:26171
from vertex id:506
to vertex id:7960
relation:study
edge available:true
edge log:
edge create datetime:2019-06-1517:00:00.59
edge create message id:7099812
edge update datetime:2019-09-0515:00:01.237
edge update message id:7234456
score value:86
score available:true
score log:
score create datetime:2019-06-1517:00:00.59
score create message id:7099812
score update datetime:2019-09-0515:00:01.237
score update message id:7234456
score delete datetime:2019-07-1514:22:51.9
score delete message id:7134112
score replace datetime:2019-09-0515:00:01.237
score replace message id:7234456
rank value:13
rank available:true
rank log:
score create datetime:2019-06-1517:00:00.59
score create message id:7099812
score update datetime:2019-09-0515:00:01.237
score update message id:7234456
第三部分,介绍图数据处理过程。
数据处理类型有分为vertex相关的数据处理和edge相关的数据处理两大类。对于并行处理,以vertex为最小单位,允许同时对不同的vertex进行处理,edge看作是同时对2个vertex进行处理。在进行处理前,先对vertex id上锁。如果处理涉及多个vertex,那么先把这些vertex按照vertex id排序,然后按照这个顺序对vertex id上锁。按照这样的方式上锁,可以避免并发上锁时,死锁的问题。采用分布式锁,分布式锁的实现可以采用redis。
一些实施例中,所述将增量数据所对应的数据编号上锁,包括:
当增量数据为vertex时,则对vertex id上锁。
一些实施例中,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:
当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加vertex的子流程;如果判断结果为已存在,进入覆盖vertex的子流程;
当操作类型为删除时,如果判断结果为已存在,进入删除vertex的子流程,并对vertex log进行更新。
3.1.相关数据处理
3.1.1.vertex相关的数据处理:
添加或覆盖vertex(add or replace vertex)。如果这个处理发生在删除vertex之后,表示通过覆盖的方式重新添加vertex。
删除vertex(delete vertex)。逻辑删除。
添加或覆盖vertex的属性(add orreplace vertex properties)。如果这个处理发生在删除vertex属性之后,表示通过覆盖的方式重新添加vertex属性。
删除vertex的属性(delete vertex properties)。逻辑删除。
3.1.2.edge相关的数据处理:
添加或覆盖edge(add orreplace edge)。如果这个处理发生在删除edge之后,表示通过覆盖的方式重新添加edge。
删除edge(delete edge)。逻辑删除。
通过from vertex id、to vertex id和relation,删除1个edge(delete edge byfrom vertex id,to vertex id and relation)。
通过from vertex id和to vertex id,删除多个edge(delete edge by fromvertex id and to vertex id)。
通过from vertex id或to vertex id,删除多个edge(delete edge by fromvertex id orto vertex id)。
添加或覆盖edge的属性(add or replace edge property)。如果这个处理发生在删除edge属性之后,表示通过覆盖的方式重新添加edge属性。
删除edge的属性(delete edge property)。逻辑删除。
3.2.添加或覆盖vertex的流程
data数据结构:
vertex id:vertex id。
properties:参考messge的数据结构中,data的properties部分的数据结构。
具体流程如下:
1.使用分布式锁,对vertex id上锁。
2.调用图数据库的API,根据vertex id查询vertex。
3.判断vertex是否已存在。
3.1.如果vertex不存在,进入添加vertex的子流程。
3.2.如果vertex已存在,进入覆盖vertex的子流程。
4.使用分布式锁,对vertex id解锁。
一些实施例中,所述添加vertex的子流程包括:
将该vertex的vertex id设置为message的vertex id;
将该vertex的available设置为true;
遍历message的properties,生成vertex相应的properties;
对vertex log进行更新;
添加vertex数据到图数据库。
3.2.1.添加vertex的子流程
1.生成vertex数据。
1.1.将这个vertex的vertex id设置为message的vertex id。
1.2.将这个vertex的available设置为true。
1.3.遍历message的properties,生成vertex相应的properties。
1.3.1.将这个vertex的${property name}设置为message的property的name。
1.3.2.将这个vertex的${property name}value的值设置为message的propery的value。
1.3.3.进入添加property时,property log更新子流程。
1.4.进入添加vertex时,vertex log更新子流程。
2.调用图数据库的API,添加vertex数据到图数据库。
一些实施例中,所述覆盖vertex的子流程包括:
比较vertex的vertex update message id与message的message id,如果两个message id相同,则流程结束;
遍历message的properties,查找在vertex的properties中,是否存在vertex的${property name}与message的property的name相同;
如果存在,覆盖vertex的property;如果不存在,在这个vertex中,添加一个property;
遍历vertex的properties,比较vertex的${property name}update message id与message的message id;
如果两个message id不相同,比较message的timestamp与vertex的${propertyname}update datetime;
如果message的timestamp时间更晚,则更新相关信息。
3.2.2.覆盖vertex/edge的通用子流程
以下对vertex/edge数据的修改,是基于已存在的vertex/edge数据上进行的。
1.比较vertex的vertex/edge update message id与message的messageid。
1.1.如果两个message id相同,说明message重复,那么流程结束。
2.遍历message的properties。
2.1.在vertex/edge的properties中,是否存在vertex/edge的${property name}与message的property的name相同。
2.1.1.如果存在,覆盖vertex/edge的property。
2.1.1.1.比较message的timestamp与这个vertex/edge的${property name}update datetime。
2.1.1.1.1.如果message的timestamp时间更晚,说明是正常时序,更新相关信息。
2.1.1.1.1.1.将这个vertex/edge的${property name}value的值设置为message的propery的value。
2.1.1.1.2.如果message的timestamp时间更早,说明是异常时序,不需要更新相关信息。
2.1.1.2.进入覆盖property时,property log更新子流程。
2.1.2.如果不存在,在这个vertex/edge中,添加一个property。
2.1.2.1.将这个vertex/edge的${property name}设置为message的property的name。
2.1.2.2.将这个vertex/edge的${property name}value的值设置为message的propery的value。
2.1.2.3.进入添加property时,property log更新子流程。
3.遍历vertex/edge的properties。
3.1.比较vertex/edge的${property name}update message id与message的message id。
3.1.1.如果两个message id相同,说明前面的步骤已经处理过这个vertex/edge的property了。
3.1.2.如果两个message id不相同。
3.1.2.1.比较message的timestamp与这个vertex/edge的${property name}update datetime。
3.1.2.1.1.如果message的timestamp时间更晚,说明是正常时序,更新相关信息。
3.1.2.1.1.1.将这个vertex/edge的${property name}value的值设置为空。
3.1.2.1.2.如果message的timestamp时间更早,说明是异常时序,不需要更新相关信息。
3.1.2.2.进入删除property时,property log更新子流程。
4.进入覆盖vertex/edge时,vertex log/edge log更新子流程。
5.调用图数据库的API,更新vertex/edge数据到图数据库。
3.3.删除vertex的流程
这个处理不影响vertex的property信息。
data数据结构:
vertex id:vertex id。
具体流程如下:
1.使用分布式锁,对vertex id上锁。
2.调用图数据库的API,根据vertex id查询vertex。
3.判断vertex是否已存在。
3.1.如果vertex已存在。
3.1.1.进入删除vertex时,vertex log更新子流程。
4.使用分布式锁,对vertex id解锁。
3.4.添加或覆盖edge的流程
data数据结构:
from vertex id:edge的起点vertex的id。
to vertex id:edge的终点vertex的id。
relation:起点vertex与终点vertex之间的关系。
properties:参考messge的数据结构中,data的properties部分的数据结构。
一些实施例中,所述将增量数据所对应的数据编号上锁,包括:
当增量数据为edge时,则对edge的起点vertex id和终点vertex id排序,按照顺序对起点vertex id和终点vertex id上锁。
一些实施例中,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:
当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加edge的子流程;如果判断结果为已存在,进入覆盖edge的子流程;
当操作类型为删除时,根据附加条件删除相应的edge数据。
具体流程如下:
1.对edge的起点vertex id和终点vertex id排序,按照这个顺序,使用分布式锁,对vertex id上锁。
2.调用图数据库的API,根据from vertex id、to vertex id和relation查询edge。
3.判断edge是否已存在。
3.1.如果edge不存在,进入添加edge的子流程。
3.2.如果edge已存在,进入覆盖edge的子流程。
4.使用分布式锁,对vertex id解锁。
一些实施例中,所述添加edge的子流程包括:
将该edge的from vertex id设置为message的from vertex id;
将该edge的to vertex id设置为message的to vertex id;
将该edge的relation设置为message的relation;
将该edge的available设置为true;
遍历message的properties,生成edge相应的properties;
对edge log进行更新;
添加edge数据到图数据库。
3.4.1.添加edge的子流程
1.生成edge数据。
1.1.将这个edge的from vertex id设置为message的from vertex id。
1.2.将这个edge的to vertex id设置为message的to vertex id。
1.3.将这个edge的relation设置为message的relation。
1.4.将这个edge的available设置为true。
1.5.遍历message的properties,生成edge相应的properties。
1.5.1.将这个edge的${property name}设置为message的property的name。
1.5.2.将这个vertex的${property name}value的值设置为message的property的value。
1.5.3.进入添加property时,property log更新子流程。
1.6.进入添加edge时,edge log更新子流程。
2.调用图数据库的API,添加edge数据到图数据库。
3.5.删除edge
这个处理不影响vertex的property信息,删除edge分为三种子处理:通过fromvertex id、to vertex id和relation删除1个edge,通过from vertex id和to vertex id删除多个edge,以及通过from vertex id或to vertex id删除多个edge。注意,删除多个edge时,一定要在上锁之后,重新从图数据库查询edge,避免脏写(即,在查询到多个edge后,到对其中1个edge的2个vertex上锁之前,在这段时间里,如果有其他处理更新了这个edge,那么这个edge的信息就变化了,应该重新获取这个edge的信息)。
一些实施例中,所述根据附加条件删除相应的edge数据,包括:
如果附加条件为from vertex id、to vertex id和relation,则删除对应的1个edg数据;
如果附加条件为from vertex id和to vertex id,则删除对应的多个edg数据;
如果附加条件为from vertex id或to vertex id,则删除对应的多个edg数据。
3.5.1.通过from vertex id、to vertex id和relation,删除1个edge的流程
data数据结构:
from vertex id:edge的起点vertex的id。
to vertex id:edge的终点vertex的id。
relation:起点vertex与终点vertex之间的关系。
流程:
1.对edge的起点vertex id和终点vertex id排序,按照这个顺序,使用分布式锁,对vertex id上锁。
2.调用图数据库的API,根据起点vertex id、终点vertex id和relation查询vertex。
3.判断edge是否已存在。
3.1.如果edge已存在。
3.1.1.对edge的起点vertex和终点vertex的vertex id排序,按照这个顺序,使用分布式锁,对vertex id上锁。
3.1.2.进入删除edge时,edge log更新子流程。
3.1.3.使用分布式锁,对vertex id解锁。
4.使用分布式锁,对vertex id解锁。
3.5.2.通过from vertex id和to vertex id,删除多个edge的流程data数据结构:
from vertex id:edge的起点vertex的id。
to vertex id:edge的终点vertex的id。
流程:
1.调用图数据库的API,根据起点vertex id和终点vertex id查询相关的edge。
2.遍历查询到的edge。
2.1.对edge的起点vertex和终点vertex的vertex id排序,按照这个顺序,使用分布式锁,对vertex id上锁。
2.2.进入删除edge时,edge log更新子流程。
2.3.使用分布式锁,对vertex id解锁。
3.5.3.通过from vertex id或to vertex id,删除多个edge的流程data数据结构:
from vertex id:edge的起点vertex的id。
to vertex id:edge的终点vertex的id。
流程:
1.调用图数据库的API,根据起点vertex id或终点vertex id查询相关的edge。
2.遍历查询到的edge。
2.1.对edge的起点vertex和终点vertex的vertex id排序,按照这个顺序,使用分布式锁,对vertex id上锁。
2.2.进入删除edge时,edge log更新子流程。
2.3.使用分布式锁,对vertex id解锁。
3.6.vertex log/edge log/property log通用子流程
包含对vertex/edge/${property name}available字段的更新。
3.6.1.添加vertex/edge/property时,vertex log/edge log/property log更新子流程
1.将vertex/edge/${property name}create message id更新为message的message id。
2.将vertex/edge/${property name}create datetime更新为message的timestamp。
3.将vertex/edge/${property name}update message id更新为message的message id。
4.将vertex/edge/${property name}update datetime更新为message的timestamp。
3.6.2.覆盖vertex/edge/property时,vertex log/edge log/property log更新子流程
1.比较message的timestamp与vertex/edge/${property name}createdatetime。
1.1.如果message的timestamp时间更晚,说明是正常时序,不需要更新相关信息。
1.2.如果message的timestamp时间更早,说明是异常时序,更新相关信息。
1.2.1.将vertex/edge/${property name}create datetime更新为message的timestamp。
1.2.2.将vertex/edge/${property name}create message id更新为message的message id。
2.比较message的timestamp与vertex/edge/${property name}updatedatetime。
2.1.如果message的timestamp时间更晚,说明是正常时序,更新相关信息。
2.1.1.将vertex/edge/${property name}update datetime更新为message的timestamp。
2.1.2.将vertex/edge/${property name}update message id更新为message的message id。
2.2.如果message的timestamp时间更早,说明是异常时序,不需要更新相关信息。
3.比较message的timestamp与vertex/edge/${property name}replacedatetime。
3.1.如果vertex/edge/${property name}replace datetime不存在,或者message的timestamp时间更晚,说明是正常时序,更新相关信息。
3.1.1.将这个vertex/edge/${property name}replace message id更新为message的message id。
3.1.2.将这个vertex/edge/${property name}replace datetime更新为message的timestamp。
3.2.如果message的timestamp时间更早,说明是异常时序,不需要更新相关信息。
4.比较message的timestamp与vertex/edge/${property name}deletedatetime。
4.1.如果vertex/edge/${property name}delete datetime存在,而且
message的timestamp时间更晚,说明是删除
vertex/edge/${property name}之后重新添加。
4.1.1.将vertex/edge/${property name}available更新为true。
3.6.3.删除vertex/edge/property时,vertex log/edge log/property log更新子流程
1.比较message的timestamp与vertex/edge/${property name}updatedatetime。
1.1.如果message的timestamp时间更晚,说明是正常时序,更新相关信息。
1.1.1.将vertex/edge/${property name}update datetime更新为message的timestamp。
1.1.2.将vertex/edge/${property name}update message id更新为message的message id。
1.2.如果message的timestamp时间更早,说明是异常时序,不需要更新相关信息。
2.比较message的timestamp与vertex/edge/${property name}replacedatetime。
2.1.如果vertex/edge/${property name}replace datetime不存在,或者
message的timestamp时间更晚,说明是正常时序,更新相关信息。
2.1.1.将这个vertex/edge/${property name}available更新为false。
2.1.2.将这个vertex/edge/${property name}delete message id更新为message的message id。
2.1.3.将这个vertex/edge/${property name}delete datetime更新为message的timestamp。
2.2.如果message的timestamp时间更早,说明是异常时序,不需要更新相关信息。
3.比较message的timestamp与vertex/edge/${property name}deletedatetime。
3.1.如果vertex/edge/${property name}delete datetime存在,而且
message的timestamp时间更晚,说明是再次删除。
3.1.1.将这个vertex/edge/${property name}delete message id更新为message的message id。
3.1.2.将这个vertex/edge/${property name}delete datetime更新为message的timestamp。
本申请的方案通过vertex/edge/property log,记录vertex/edge/property的创建时间、最近修改时间、删除时间、覆盖时间以及相应的message id。其中message id用来判断,是否已经有相同的message处理过了。创建时间、最近修改时间、删除时间、覆盖时间结合在一起,共同解决时序问题,即,先判断出当前处理的时序是否正确,然后再采取本方案设计的相应流程进行处理,可以保证即使是异常时序,也能最终和正常时序的处理结果相同。
比如,有2个message(message-1,message-2)如下,都是更新同一个vertex(vertex id是1200)的同一个${property name}value(score value),但是要更新的${property name}value的值(一个是80.5,另一个是60.9)不同。如果是正常时序,先处理message-1,后处理message-2,score value最终会被更新为60.9。如果是异常时序,先处理message-2,后处理message-1。处理完message-2后,score update datetime更新为2019-10-0313:19:26.152。处理message-1时,根据设计的流程,先比较message-2的timestamp与score update datetime,发现message-2的timestamp时间更早,是异常时序,这时不会再更新score value。这样正常时序与异常时序的最终处理结果是完全相同的,包括scorelog。这样就同时实现了时序性和幂等性。
message-1:
message id:187374
timestamp:2019-10-0309:30:29.374
operation:添加或覆盖vertex的属性(add or replace vertex properties)data:
vertex id:1200
properties:
property:
name:score
value:80.5
message-2:
message id:187481
timestamp:2019-10-0313:19:26.152
operation:添加或覆盖vertex的属性(add or replace vertex properties)data:
vertex id:1200
properties:
property:
name:score
value:60.9
以vertex为最小单位,允许同时对不同的vertex进行处理,edge看作是同时对2个vertex进行处理。通过对vertex id上锁的方式,避免同时对相同vertex或edge处理时,产生脏读或脏写。以vertex为最小单位处理并发,可以尽可能小的减少冲突,有效增加分布式并行处理时实际的并行度。一般来说,随着图数据处理量的增加,图数据库的数据也会增大,即,vertex和edge也会增加。当图数据处理量的增加时,如果处理的并行度也随之增加,那么冲突的概率不会线性增加。这样可以通过横向扩展的方式,降低单位节点的处理量,降低延迟保证实时性。
综上所述,本方案同时实现了源数据到图数据库增量更新过程的分布式、实时性、时序性和幂等性。支持数据分布式并行传输和处理(同时支持多进程和多线程),无论数据传输和处理时的顺序如何,以及是否重复传输和处理,只要相关的数据全部至少成功传输和处理一次,最终结果保证和数据按时间顺序串行执行的结果完全一致。
本申请还提供如下的实施例:
一种图数据库的数据更新装置,包括:
确定模块,用于确定更新操作的增量数据和操作类型;
上锁模块,用于使用分布式锁,将增量数据所对应的数据编号上锁;
查询模块,用于调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;
判断模块,用于根据操作类型和判断结果对图数据库中的相应数据进行更新;
解锁模块,用于更新操作完成后,将数据编号解锁。
关于上述实施例中的装置,其中各个模块执行操作的具体步骤已经在有关该方法的实施例中进行了详细描述,此处不再详细阐述说明。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

Claims (10)

1.一种图数据库的数据更新方法,其特征在于,包括:
确定更新操作的增量数据和操作类型;
使用分布式锁,将增量数据所对应的数据编号上锁;
调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;
根据操作类型和判断结果对图数据库中的相应数据进行更新;
更新操作完成后,将数据编号解锁。
2.根据权利要求1所述的方法,其特征在于,所述将增量数据所对应的数据编号上锁,包括:
当增量数据为vertex时,则对vertex id上锁。
3.根据权利要求2所述的方法,其特征在于,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:
当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加vertex的子流程;如果判断结果为已存在,进入覆盖vertex的子流程;
当操作类型为删除时,如果判断结果为已存在,进入删除vertex的子流程,并对vertexlog进行更新。
4.根据权利要求3所述的方法,其特征在于,所述添加vertex的子流程包括:
将该vertex的vertex id设置为message的vertex id;
将该vertex的available设置为true;
遍历message的properties,生成vertex相应的properties;
对vertex log进行更新;
添加vertex数据到图数据库。
5.根据权利要求3所述的方法,其特征在于,所述覆盖vertex的子流程包括:
比较vertex的vertex update message id与message的message id,如果两个messageid相同,则流程结束;
遍历message的properties,查找在vertex的properties中,是否存在vertex的${property name}与message的property的name相同;
如果存在,覆盖vertex的property;如果不存在,在这个vertex中,添加一个property;
遍历vertex的properties,比较vertex的${property name}update message id与message的message id;
如果两个message id不相同,比较message的timestamp与vertex的${property name}update datetime;
如果message的timestamp时间更晚,则更新相关信息。
6.根据权利要求2所述的方法,其特征在于,所述将增量数据所对应的数据编号上锁,包括:
当增量数据为edge时,则对edge的起点vertex id和终点vertex id排序,按照顺序对起点vertex id和终点vertex id上锁。
7.根据权利要求6所述的方法,其特征在于,所述根据操作类型和判断结果对图数据库中的相应数据进行更新,包括:
当操作类型为添加或覆盖时,如果判断结果为不存在,进入添加edge的子流程;如果判断结果为已存在,进入覆盖edge的子流程;
当操作类型为删除时,根据附加条件删除相应的edge数据。
8.根据权利要求7所述的方法,其特征在于,所述添加edge的子流程包括:
将该edge的from vertex id设置为message的from vertex id;
将该edge的to vertex id设置为message的to vertex id;
将该edge的relation设置为message的relation;
将该edge的available设置为true;
遍历message的properties,生成edge相应的properties;
对edge log进行更新;
添加edge数据到图数据库。
9.根据权利要求6所述的方法,其特征在于,所述根据附加条件删除相应的edge数据,包括:
如果附加条件为from vertex id、to vertex id和relation,则删除对应的1个edg数据;
如果附加条件为from vertex id和to vertex id,则删除对应的多个edg数据;
如果附加条件为from vertex id或to vertex id,则删除对应的多个edg数据。
10.一种图数据库的数据更新装置,其特征在于,包括:
确定模块,用于确定更新操作的增量数据和操作类型;
上锁模块,用于使用分布式锁,将增量数据所对应的数据编号上锁;
查询模块,用于调用图数据库的查询接口,查询数据编号是否存在对应的历史数据;
判断模块,用于根据操作类型和判断结果对图数据库中的相应数据进行更新;
解锁模块,用于更新操作完成后,将数据编号解锁。
CN202010241791.2A 2020-03-31 2020-03-31 图数据库的数据更新方法和装置 Pending CN111309750A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010241791.2A CN111309750A (zh) 2020-03-31 2020-03-31 图数据库的数据更新方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010241791.2A CN111309750A (zh) 2020-03-31 2020-03-31 图数据库的数据更新方法和装置

Publications (1)

Publication Number Publication Date
CN111309750A true CN111309750A (zh) 2020-06-19

Family

ID=71146053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010241791.2A Pending CN111309750A (zh) 2020-03-31 2020-03-31 图数据库的数据更新方法和装置

Country Status (1)

Country Link
CN (1) CN111309750A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112015819A (zh) * 2020-08-31 2020-12-01 杭州欧若数网科技有限公司 分布式图数据库的数据更新方法、装置、设备及介质
CN112860953A (zh) * 2021-01-27 2021-05-28 国家计算机网络与信息安全管理中心 图数据库的数据导入方法、装置、设备及存储介质
CN116028651A (zh) * 2023-03-28 2023-04-28 南京万得资讯科技有限公司 一种支持本体和数据增量更新的知识图谱构建***及方法

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101726309A (zh) * 2009-12-18 2010-06-09 吉林大学 基于道路数据增量更新的导航电子地图动态拓扑重建***方法
CN102693324A (zh) * 2012-01-09 2012-09-26 西安电子科技大学 一种分布式数据库同步***、同步方法和节点管理方法
US20130110766A1 (en) * 2009-10-13 2013-05-02 Open Text Software Gmbh Method for performing transactions on data and a transactional database
CN106354729A (zh) * 2015-07-16 2017-01-25 阿里巴巴集团控股有限公司 一种图数据处理方法、装置和***
CN107967279A (zh) * 2016-10-19 2018-04-27 北京国双科技有限公司 分布式数据库的数据更新方法及装置
US20180144060A1 (en) * 2016-11-23 2018-05-24 Linkedin Corporation Processing deleted edges in graph databases
CN108415835A (zh) * 2018-02-22 2018-08-17 北京百度网讯科技有限公司 分布式数据库测试方法、装置、设备及计算机可读介质
CN108595251A (zh) * 2018-05-10 2018-09-28 腾讯科技(深圳)有限公司 动态图更新方法、装置、存储引擎接口和程序介质
CN109033234A (zh) * 2018-07-04 2018-12-18 中国科学院软件研究所 一种基于状态更新传播的流式图计算方法及***
CN109582831A (zh) * 2018-10-16 2019-04-05 中国科学院计算机网络信息中心 一种支持非结构化数据存储与查询的图数据库管理***
CN109670089A (zh) * 2018-12-29 2019-04-23 颖投信息科技(上海)有限公司 知识图谱***及其图服务器
CN110609904A (zh) * 2019-09-11 2019-12-24 深圳众赢维融科技有限公司 图数据库数据处理方法、装置、电子设备及存储介质
CN110866024A (zh) * 2019-11-06 2020-03-06 山东省国土测绘院 一种矢量数据库增量更新方法及***

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130110766A1 (en) * 2009-10-13 2013-05-02 Open Text Software Gmbh Method for performing transactions on data and a transactional database
CN101726309A (zh) * 2009-12-18 2010-06-09 吉林大学 基于道路数据增量更新的导航电子地图动态拓扑重建***方法
CN102693324A (zh) * 2012-01-09 2012-09-26 西安电子科技大学 一种分布式数据库同步***、同步方法和节点管理方法
CN106354729A (zh) * 2015-07-16 2017-01-25 阿里巴巴集团控股有限公司 一种图数据处理方法、装置和***
CN107967279A (zh) * 2016-10-19 2018-04-27 北京国双科技有限公司 分布式数据库的数据更新方法及装置
US20180144060A1 (en) * 2016-11-23 2018-05-24 Linkedin Corporation Processing deleted edges in graph databases
CN108415835A (zh) * 2018-02-22 2018-08-17 北京百度网讯科技有限公司 分布式数据库测试方法、装置、设备及计算机可读介质
CN108595251A (zh) * 2018-05-10 2018-09-28 腾讯科技(深圳)有限公司 动态图更新方法、装置、存储引擎接口和程序介质
CN109033234A (zh) * 2018-07-04 2018-12-18 中国科学院软件研究所 一种基于状态更新传播的流式图计算方法及***
CN109582831A (zh) * 2018-10-16 2019-04-05 中国科学院计算机网络信息中心 一种支持非结构化数据存储与查询的图数据库管理***
CN109670089A (zh) * 2018-12-29 2019-04-23 颖投信息科技(上海)有限公司 知识图谱***及其图服务器
CN110609904A (zh) * 2019-09-11 2019-12-24 深圳众赢维融科技有限公司 图数据库数据处理方法、装置、电子设备及存储介质
CN110866024A (zh) * 2019-11-06 2020-03-06 山东省国土测绘院 一种矢量数据库增量更新方法及***

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112015819A (zh) * 2020-08-31 2020-12-01 杭州欧若数网科技有限公司 分布式图数据库的数据更新方法、装置、设备及介质
CN112860953A (zh) * 2021-01-27 2021-05-28 国家计算机网络与信息安全管理中心 图数据库的数据导入方法、装置、设备及存储介质
CN116028651A (zh) * 2023-03-28 2023-04-28 南京万得资讯科技有限公司 一种支持本体和数据增量更新的知识图谱构建***及方法

Similar Documents

Publication Publication Date Title
USRE48589E1 (en) Sharing and deconflicting data changes in a multimaster database system
CN111309750A (zh) 图数据库的数据更新方法和装置
US20190340166A1 (en) Conflict resolution for multi-master distributed databases
US7120651B2 (en) Maintaining a shared cache that has partitions allocated among multiple nodes and a data-to-partition mapping
JP4301937B2 (ja) 分散データベース環境での一貫した読取
US6957236B1 (en) Providing a useable version of a data item
US6845384B2 (en) One-phase commit in a shared-nothing database system
CN110517140B (zh) 一种区块链智能合约交易并发执行方法
EP0362709A2 (en) Method for obtaining access to data structures without locking
US20070226269A1 (en) Method and system for an update synchronization of a domain information file
EP4276651A1 (en) Log execution method and apparatus, and computer device and storage medium
CN111444027A (zh) 事务处理方法、装置、计算机设备及存储介质
Perrin et al. Update consistency for wait-free concurrent objects
US10860402B2 (en) Long-running storage manageability operation management
JPH0458743B2 (zh)
CN114328591A (zh) 事务执行方法、装置、设备和存储介质
CN113420006A (zh) 数据迁移方法、装置、电子设备及计算机可读介质
US8838910B2 (en) Multi-part aggregated variable in structured external storage
US11907192B1 (en) Systems and methods for artifact peering within a multi-master collaborative environment
CN116149803A (zh) 数据库的事务处理方法、装置、电子设备及存储介质
CN117435574A (zh) 改进的二阶段提交事务实现方法及***、设备、存储介质
CN114297043A (zh) 日志包重演方法、装置、电子设备及存储介质
CN114791837A (zh) 一种数据库多中心的数据处理的方法、装置、设备及介质
CN114722125A (zh) 数据库事务处理的方法、装置、设备和计算机可读介质
KR100426316B1 (ko) 그룹통신의 메시징 순서를 이용한 즉시 갱신 중복기법에서 전역 직렬성 검사 방법

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