CN112685419B - 一种可保持janusGraph数据一致性的分布式高效并行加载方法 - Google Patents
一种可保持janusGraph数据一致性的分布式高效并行加载方法 Download PDFInfo
- Publication number
- CN112685419B CN112685419B CN202011622773.5A CN202011622773A CN112685419B CN 112685419 B CN112685419 B CN 112685419B CN 202011622773 A CN202011622773 A CN 202011622773A CN 112685419 B CN112685419 B CN 112685419B
- Authority
- CN
- China
- Prior art keywords
- data
- distributed
- point
- queue
- module
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种可保持janusGraph实时数据一致性的高效并行加载方法,属于分布式图数据库领域,首先构建分布式结构;创建两个空的分布式队列;然后,实时接收数据并解析后存入队列一中;数据处理模块逐条取出,调用分布式索引模块中存在对应ID的数据加载到图数据库中,并将无法调用ID的点的唯一标志存入队列二中,点处理模块判断能否获取各标志对应的ID,如果能,则继续获取下一个进行判断;否则,将各标志加载到图数据库中,并产生对应的ID;同时将S与ID的对应关系保存;集群管理模块找寻主节点,并对各子节点分发任务,各子节点并行处理各自的分布式队列分区中的数据。本发明保证数据一致性的同时提高实时数据的并行加载。
Description
技术领域
本发明属于分布式图数据库领域,具体是一种可保持janusGraph数据一致性的分布式高效并行加载方法。
背景技术
随着计算机技术的不断发展和信息化程度的不断提高,数据量在迅速增长,数据结构也在逐渐复杂化,传统的关系型数据库在很多场景下难以使用,因此诞生了各种非关系型数据库。
图数据库是非关系型数据库中的一种,擅长存储各种关系网络数据,在众多图数据库中,janusGraph是一个非常优秀的分布式图数据库,具有极高的可扩展性,通过扩大集群大小线性地提高图存储的上限,可支持超级大的图的存储检索。
在很多场景下janusGraph都是一个非常优秀好用的图数据库,但是在处理实时数据时,为了保证数据的一致性只能进行单节点,单进程,单线程加载,因此实时数据加载效率具有很大局限性,不能满足大流量实时数据的加载需求。
发明内容
针对图数据库在处理大流量实时数据时的低效不安全性的问题,本发明提供了一种可保持janusGraph数据一致性的分布式高效并行加载方法,通过增加节点数量实现加载速度近线性提升,在保持数据一致性的前提下极大提高数据加载效率。
所述的高效并行加载方法,具体步骤如下:
步骤一、构建包括集群管理模块、消息队列模块、数据处理模块、点处理模块和分布式索引模块的高效加载分布式结构;
集群管理模块负责给各节点分配要处理的队列任务区间,消息队列模块负责数据的跨节点传输,数据处理模块与分布式索引模块配合工作,负责从消息队列获取图数据并进行加载,点处理模块和分布式索引模块配合工作,负责从消息队列获取点数据并进行处理。
集群管理模块,消息队列模块和分布式索引模块都同时连接数据处理模块和点处理模块;
步骤二、初始化消息队列模块,创建两个空的消息队列:第一分布式队列和第二分布式队列;
第一分布式队列用于存放原始图数据;第二分布式队列用于存放处理时的点数据;每个消息队列里有若干分区。
步骤三、终端用户调用API接口,从CSV文件或其他消息队列中实时接收数据,并解析后存入第一分布式队列中;
解析是指将接收的数据解析为json结构;
每条数据由点边点结构组成,具体包括:起始点的属性,终止点的属性,边的属性,起始点的标签,终止点的标签,边的标签,起始点的唯一标志和终止点的唯一标志;
步骤四、数据处理模块从第一分布式队列中逐条取出数据,调用分布式索引模块将数据加载或更新到图数据库中;
分布式索引模块中存储的是每个点的唯一标志和该点ID之间的映射关系;
具体为:
首先,针对当前数据a,根据起始点a1和终止点b1的唯一标志,利用分布式索引模块找到两个点的映射ID;
然后,判断两个ID是否都存在于图数据库中,如果是,将当前数据a的所有信息更新到图数据库中;否则,数据a重新回到第一分布式队列中继续排队,并将未获取到ID的点对应的唯一标志放入第二分布式队列的指定分区中;
数据a中未获取到ID的点放入哪个分区,是由点对应的唯一标志的哈希值对第二分布式队列的分区数取模决定。
步骤五、点处理模块从第二分布式队列中逐条获取各点的唯一标志,针对当前点对应的唯一标志S,判断能否从分布式索引模块获取S对应的ID,如果能,则继续获取下一个标志进行判断;否则,将S加载到图数据库中,并产生对应的ID;同时将S与ID的对应关系放入分布式索引模块中,然后选择下一个标志进行判断;
步骤六、集群管理模块找寻主节点,并对各子节点分发任务,各子节点并行处理各自的分布式队列分区中的数据,实现实时数据一致性的高效并行加载。
加入集群最早的节点为主节点;每个子节点都包括第一分布式队列和第二分布式队列中的分区,不同子节点对应不同的分区区间;
本发明的优点在于:本发明可保证数据一致性的同时,提高janusGraph实时数据的并行加载性能。
附图说明
图1为本发明一种可保持janusGraph数据一致性的分布式高效并行加载的分布式结构图;
图2为本发明一种可保持janusGraph数据一致性的分布式高效并行加载方法原理图;
图3为本发明一种可保持janusGraph数据一致性的分布式高效并行加载方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供了一种分布式加载实时数据的方法,在保证数据一致性的前提下极大地提高了janusGraph实时数据的加载性能;如图2和图3所示,具体步骤包括:
步骤一、构建包括集群管理模块、消息队列模块、数据处理模块、点处理模块和分布式索引模块的高效加载分布式结构;
针对janusGraph图数据库构建一种可以保持数据一致性的分布式并行加载结构,如图1 所示,包括5个模块,各模块独自或交互完成部分功能,从而实现整体上加载效率的提升。具体为:集群管理模块、消息队列模块、数据处理模块、点处理模块和分布式索引模块。
集群管理模块同时连接数据处理模块和点处理模块,负责给各节点分配要处理的队列任务区间;分布式索引模块同时连接数据处理模块和点数据处理模块,数据处理模块与分布式索引模块配合工作,负责从消息队列获取图数据并进行加载,点处理模块和分布式索引模块配合工作,负责从消息队列获取点数据并进行处理。数据处理模块同时连接消息队列模块,从消息队列模块中读取数据,并返回数据;消息队列模块同时返回消息给点处理模块;消息队列模块负责数据的跨节点传输。
集群管理模块,负责感知各节点变化,并在节点变化时由主节点计算各子节点所负责的任务区间并进行分发。
消息队列模块,负责接收和缓存需要被处理的数据,初始化时会创建两个消息队列,每个消息队列里有多个数据分区,数据在单个分区内是严格有序的。
数据处理模块,即ID转换模块,负责从消息队列模块中的第一分布式队列取出数据,尝试调用分布式索引模块并将数据中的点加载或更新到图数据库中;
点处理模块,负责从第二分布式队列中取出点数据,并进行加载,并在加载完成后将点的唯一标志及其ID对应关系添加进分布式索引模块中。
步骤二、初始化消息队列模块,创建两个空的消息队列:第一分布式队列和第二分布式队列;
第一分布式队列用于存放原始图数据;第二分布式队列用于存放处理时的点数据;每个消息队列里有若干数据分区。
步骤三、终端用户调用API接口,从CSV文件或其他消息队列中实时接收数据,并解析后存入第一分布式队列中;
解析是指将接收的数据解析为json结构;
每条数据由点边点结构组成,json结构明确标识哪些字段属于起始点,终止点和边上的属性、哪些字段属于起始点,终止点和边上的标签、哪个字段是起始点和终止点的唯一标志;
步骤四、数据处理模块从第一分布式队列中逐条取出数据,调用分布式索引模块将数据加载或更新到图数据库中;
分布式索引模块中存储的是每个点的唯一标志和该点ID之间的映射关系;
ID指的是图数据库在新添加一个点时会为其分配一个long类型的ID,根据这个ID可以在图数据库中快速唯一定位这个点,并对这个点执行操作;如给该点添加和修改属性,以及添加边等操作;
点的唯一标志是原始图数据的属性,唯一标志能在入图数据库之前将该点与别的点区分开,比如对于短信数据,手机号就是点的唯一标志,根据点的唯一标志并不能快速在图数据库中定位到该点。
映射关系需要被添加到分布式索引模块中,以便后续能够根据点的唯一标志来查询这个点的ID;
具体为:
首先,针对当前数据a,根据起始点a1和终止点b1的唯一标志,判断是否在分布式索引模块中找到两个点分别对应的映射ID;如果是,将当前数据a的所有信息更新到图数据库中;否则,数据a重新回到第一分布式队列中继续排队,并将未获取到ID的点对应的唯一标志放入第二分布式队列的指定分区中;
数据a中未获取到ID的点放入哪个分区,是由点对应的唯一标志的哈希值对第二分布式队列的分区数取模决定。
步骤五、点处理模块从第二分布式队列中逐条获取各点的唯一标志,针对当前点对应的唯一标志S,判断能否从分布式索引模块获取S对应的ID,如果能,则继续获取下一个标志进行判断;否则,将S加载到图数据库中,并产生对应的ID;同时将S与ID的对应关系放入分布式索引模块中,然后选择下一个标志进行判断;
步骤六、集群管理模块找寻主节点,并对各子节点分发任务,各子节点并行处理各自的分布式队列分区中的数据,实现实时数据一致性的高效并行加载。
加入集群最早的节点为主节点;主节点一个独立的线程计算任务区间并分发任务到所有子节点,该线程独立运行,分发的任务为节点应该处理的分布式队列分区的分区区间。
每个子节点都包括第一分布式队列和第二分布式队列中的分区,不同子节点对应不同的分区区间。
Claims (4)
1.一种可保持janusGraph数据一致性的分布式高效并行加载方法,其特征在于,具体步骤如下:
步骤一、构建包括集群管理模块、消息队列模块、数据处理模块、点处理模块和分布式索引模块的高效加载分布式结构;
集群管理模块负责给各节点分配要处理的队列任务区间,消息队列模块负责数据的跨节点传输,数据处理模块与分布式索引模块配合工作,负责从消息队列获取图数据并进行加载,点处理模块和分布式索引模块配合工作,负责从消息队列获取点数据并进行处理;
步骤二、初始化消息队列模块,创建两个空的消息队列:第一分布式队列和第二分布式队列;
步骤三、终端用户调用API接口,从CSV文件或其他消息队列中实时接收数据,并解析后存入第一分布式队列中;
解析是指将接收的数据解析为json结构;
每条数据由点边点结构组成,具体包括:起始点的属性,终止点的属性,边的属性,起始点的标签,终止点的标签,边的标签,起始点的唯一标志和终止点的唯一标志;
步骤四、数据处理模块从第一分布式队列中逐条取出数据,调用分布式索引模块将数据加载或更新到图数据库中;
分布式索引模块中存储的是每个点的唯一标志和该点ID之间的映射关系;
具体为:
首先,针对当前数据a,根据起始点a1和终止点b1的唯一标志,利用分布式索引模块找到两个点的映射ID;
然后,判断两个ID是否都存在于图数据库中,如果是,将当前数据a的所有信息更新到图数据库中;否则,数据a重新回到第一分布式队列中继续排队,并将未获取到ID的点对应的唯一标志放入第二分布式队列的指定分区中;
步骤五、点处理模块从第二分布式队列中逐条获取各点的唯一标志,针对当前点对应的唯一标志S,判断能否从分布式索引模块获取S对应的ID,如果能,则继续获取下一个标志进行判断;否则,将S加载到图数据库中,并产生对应的ID;同时将S与ID的对应关系放入分布式索引模块中,然后选择下一个标志进行判断;
步骤六、集群管理模块找寻主节点,并对各子节点分发任务,各子节点并行处理各自的分布式队列分区中的数据,实现实时数据一致性的高效并行加载;
加入集群最早的节点为主节点;每个子节点都包括第一分布式队列和第二分布式队列中的分区,不同子节点对应不同的分区区间。
2.如权利要求1所述的一种可保持janusGraph数据一致性的分布式高效并行加载方法,其特征在于,步骤一中所述集群管理模块,消息队列模块和分布式索引模块都同时连接数据处理模块和点处理模块。
3.如权利要求1所述的一种可保持janusGraph数据一致性的分布式高效并行加载方法,其特征在于,步骤二中所述的第一分布式队列用于存放原始图数据;第二分布式队列用于存放处理时的点数据;每个消息队列里有若干分区。
4.如权利要求1所述的一种可保持janusGraph数据一致性的分布式高效并行加载方法,其特征在于,所述步骤四中,数据a中未获取到ID的点放入哪个分区,是由点对应的唯一标志的哈希值对第二分布式队列的分区数取模决定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011622773.5A CN112685419B (zh) | 2020-12-31 | 2020-12-31 | 一种可保持janusGraph数据一致性的分布式高效并行加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011622773.5A CN112685419B (zh) | 2020-12-31 | 2020-12-31 | 一种可保持janusGraph数据一致性的分布式高效并行加载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685419A CN112685419A (zh) | 2021-04-20 |
CN112685419B true CN112685419B (zh) | 2021-09-10 |
Family
ID=75454019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011622773.5A Active CN112685419B (zh) | 2020-12-31 | 2020-12-31 | 一种可保持janusGraph数据一致性的分布式高效并行加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685419B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
CN108536808A (zh) * | 2018-04-04 | 2018-09-14 | 国家计算机网络与信息安全管理中心 | 一种基于Spark计算框架的数据获取方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11074495B2 (en) * | 2013-02-28 | 2021-07-27 | Z Advanced Computing, Inc. (Zac) | System and method for extremely efficient image and pattern recognition and artificial intelligence platform |
CN107038260B (zh) * | 2017-05-27 | 2020-03-10 | 国家计算机网络与信息安全管理中心 | 一种可保持titan实时数据一致性的高效并行加载方法 |
US11481441B2 (en) * | 2019-04-26 | 2022-10-25 | At&T Intellectual Property I, L.P. | Graph database query pagination |
CN110677461A (zh) * | 2019-09-06 | 2020-01-10 | 上海交通大学 | 一种基于键值对存储的图计算方法 |
CN110941619B (zh) * | 2019-12-02 | 2023-05-16 | 浪潮软件股份有限公司 | 针对多种使用场景的图数据存储模型和结构的定义方法 |
CN111552628A (zh) * | 2020-03-20 | 2020-08-18 | 北京海致星图科技有限公司 | 一种针对图数据库及图服务接口进行分布式压测系统及方法 |
CN111814020A (zh) * | 2020-06-23 | 2020-10-23 | 五八有限公司 | 一种数据的获取方法和装置 |
CN111966739A (zh) * | 2020-08-21 | 2020-11-20 | 苏州浪潮智能科技有限公司 | 一种图数据处理的方法和设备 |
CN112015820A (zh) * | 2020-09-01 | 2020-12-01 | 杭州欧若数网科技有限公司 | 分布式图数据库实现的方法、系统、电子装置和存储介质 |
-
2020
- 2020-12-31 CN CN202011622773.5A patent/CN112685419B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779185A (zh) * | 2012-06-29 | 2012-11-14 | 浙江大学 | 一种高可用分布式全文索引方法 |
CN108536808A (zh) * | 2018-04-04 | 2018-09-14 | 国家计算机网络与信息安全管理中心 | 一种基于Spark计算框架的数据获取方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112685419A (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10394792B1 (en) | Data storage in a graph processing system | |
US10778707B1 (en) | Outlier detection for streaming data using locality sensitive hashing | |
CN107104824B (zh) | 一种网络拓扑确定方法和装置 | |
CN110569252B (zh) | 一种数据处理系统及方法 | |
CN107391554A (zh) | 高效分布式局部敏感哈希方法 | |
CN114911830B (zh) | 基于时序数据库的索引缓存方法、装置、设备及存储介质 | |
CN111881221A (zh) | 物流服务里客户画像的方法、装置和设备 | |
CN107102995B (zh) | 一种sql执行计划的确定方法及装置 | |
WO2023197864A1 (zh) | 一种调用拓扑图生成方法及装置 | |
US20040064430A1 (en) | Systems and methods for queuing data | |
CN107330094A (zh) | 动态存储键值对的布鲁姆过滤器树结构及键值对存储方法 | |
CN110674231A (zh) | 一种面向数据湖的用户id集成方法和系统 | |
CN117633116A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN106599189A (zh) | 基于云计算的动态Skyline查询装置 | |
CN114237850A (zh) | 一种量子计算分布式队列管理方法及系统 | |
CN106776810B (zh) | 一种大数据的数据处理系统及方法 | |
CN106980540A (zh) | 一种分布式多维离散数据的计算方法 | |
CN112685419B (zh) | 一种可保持janusGraph数据一致性的分布式高效并行加载方法 | |
CN106990913A (zh) | 一种大规模流式集合数据的分布式处理方法 | |
CN112099864A (zh) | 一种异步数据的处理方法及装置 | |
CN109753533A (zh) | 一种多源关系型数据库客户端开发方法及装置 | |
CN115630122A (zh) | 一种数据同步方法、装置、存储介质和计算机设备 | |
CN114866597A (zh) | 一种分组管理客户端连接方法以及系统 | |
CN115526586A (zh) | 一种基于智能运算的业务流程处理方法 | |
US20190057114A1 (en) | Two phase retrieval using named graphs |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |