CN113111131B - 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置 - Google Patents

基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置 Download PDF

Info

Publication number
CN113111131B
CN113111131B CN202110485131.3A CN202110485131A CN113111131B CN 113111131 B CN113111131 B CN 113111131B CN 202110485131 A CN202110485131 A CN 202110485131A CN 113111131 B CN113111131 B CN 113111131B
Authority
CN
China
Prior art keywords
neo4j
data
flink
cypher
mapper
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
Application number
CN202110485131.3A
Other languages
English (en)
Other versions
CN113111131A (zh
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.)
Suzhou Keda Technology Co Ltd
Original Assignee
Suzhou Keda Technology Co 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 Suzhou Keda Technology Co Ltd filed Critical Suzhou Keda Technology Co Ltd
Priority to CN202110485131.3A priority Critical patent/CN113111131B/zh
Publication of CN113111131A publication Critical patent/CN113111131A/zh
Application granted granted Critical
Publication of CN113111131B publication Critical patent/CN113111131B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses

Abstract

本申请提供一种基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置,基于Flink实现Neo4j数据同步的集成方法包括:提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4j cypher格式片段;提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以提供经建立的Flink写入Neo4j图数据库的处理组件。本申请实现高效简洁、灵活自由的Neo4j数据同步方案。

Description

基于Flink实现Neo4j数据同步的方法及系统、集成方法及 装置
技术领域
本申请涉及数据处理领域,尤其涉及一种基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置。
背景技术
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
On-Line Transaction Processing联机事务处理过程(OLTP),也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。
Online Analytical Processing联机分析处理(OLAP)是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征。其中F是快速性(Fast),指系统能在数秒内对用户的多数分析要求做出反应;A是可分析性(Analysis),指用户无需编程就可以定义新的专门计算,将其作为分析的一部分,并以用户所希望的方式给出报告;M是多维性(Multi—dimensional),指提供对数据分析的多维视图和分析;I是信息性(Information),指能及时获得信息,并且管理大容量信息。
ETL用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
crud是指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。
现有的Neo4j数据同步方案主要有两类,一种是在OLTP流程中随着业务数据进行CRUD,另一种是在OLAP流程中伴随ETL最终落入Neo4j。前者时效性高,系统结构简单,但只能嵌入在业务服务中,灵活性和扩展性较低;后者时效性较低,系统结构复杂,各类ETL组件需要自行与Neo4j进行集成,但数据来源自由多样,灵活性和扩展性高。
另一方面,Neo4j现有的操作类库仅提供了CRUD的API(应用接口),对于Upsert(当写入值不存在时,表示写入数据,否则更新数据)尚未支持,而Neo4j在日常业务应用中是以Upsert场景为主。
由此,如何实现高效简洁、灵活自由的Neo4j数据同步方案,是本领域技术人员亟待解决的技术问题。
发明内容
本申请为了克服上述现有技术存在的缺陷,提供一种基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置,以实现高效简洁、灵活自由的Neo4j数据同步方案。
根据本申请的一个方面,提供一种基于Flink实现Neo4j数据同步的集成方法,包括:
提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;
提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4j cypher格式片段;
提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以提供经建立的Flink写入Neo4j图数据库的处理组件。
在本申请的一些实施例中,所述提供经建立的数据转换映射器包括:
提供经建立的Json格式映射器,所述Json格式映射器用于将业务对象转化为json格式,并转化为Neo4j cypher操作语句;
提供经建立的对象映射器,所述对象映射器基于Neo4j对象图形映射库将数据对象映射到Neo4j图数据库。
在本申请的一些实施例中,所述以提供经建立的Flink写入Neo4j图数据库的处理组件包括以提供经建立的Flink流式处理写入Neo4j图数据库的处理组件;所述Flink流式处理写入Neo4j图数据库的处理组件通过如下方式建立:
继承RichSinkFunction<T>类;
重写open(int taskNumber,int numTasks)方法,在其中创建Neo4j的连接驱动,使得每个Neo4jsink实例在初始化时完成所述连接驱动的创建;
重写invoke(T record)方法,至少在其中完成数据对象与Neo4j cypher格式片段的转换;
重写close()方法,在其中主动释放数据处理过程中调用的资源,使得每个Neo4jSink实例在销毁时释放资源。
在本申请的一些实施例中,所述重写invoke(T record)方法包括:
当前批次数据不为空时执行如下写入操作:
创建数据批次容器;
通过所述数据转换映射器,将数据对象转换为Neo4j cypher格式片段,并加入到所述数据批次容器中;
通过Neo4j cypher模板,将所述数据批次容器格式化为cypher语句;
开启连接会话;
判断是否开启事务;
若是,则执行所述cypher语句,并提交事务;
若否,则执行所述cypher语句;
关闭所述连接会话。
在本申请的一些实施例中,所述开启连接会话之后还包括:
当数据异常时,执行事务回滚。
在本申请的一些实施例中,所述Flink写入Neo4j图数据库的处理组件包括:
Flink流式处理写入Neo4j图数据库的处理组件;和/或
Flink批量处理写入Neo4j图数据库的处理组件。
根据本申请的又一方面,还提供一种基于Flink实现Neo4j数据同步的方法,由Flink流式处理写入Neo4j图数据库的处理组件执行,包括:
当前批次数据不为空时执行如下写入操作:
创建数据批次容器;
通过数据转换映射器,将数据对象转换为Neo4j cypher格式片段,并加入到所述数据批次容器中;
通过Neo4j cypher模板,将所述数据批次容器格式化为cypher语句;
执行所述cypher语句。
根据本申请的又一方面,还提供一种基于Flink实现Neo4j数据同步的集成装置,包括:
第一提供模块,配置成提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;
第二提供模块,配置成提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4j cypher格式片段;
第三提供模块,配置成提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以建立Flink写入Neo4j图数据库的处理组件。
根据本申请的又一方面,还提供一种基于Flink实现Neo4j数据同步的系统,包括:
多个数据源;
Neo4j图数据库;
Flink写入Neo4j图数据库的处理组件,配置成执行如权利要求7所述的基于Flink实现Neo4j数据同步的方法,以将来自所述数据源的数据对象写入所述Neo4j图数据库。
在本申请的一些实施例中,所述Flink写入Neo4j图数据库的处理组件包括:
Flink流式处理写入Neo4j图数据库的处理组件,以实现实时数据处理;和/或
Flink批量处理写入Neo4j图数据库的处理组件,以实现离线数据处理。
根据本申请的又一方面,还提供一种电子设备,所述电子设备包括:处理器;存储介质,其上存储有计算机程序,所述计算机程序被所述处理器运行时执行如上所述的步骤。
根据本申请的又一方面,还提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上所述的步骤。
由此可见,本申请提供的方案,与现有技术相比,具有如下优势:
本申请通过提供经建立的项目至少包括Flink依赖以及Neo4j依赖的核心依赖,提供经建立的数据转换映射器以便于数据转换映射器用于将数据对象转换为Neo4j cypher格式片段,基于对所述Flink依赖中的部分方法的重写,并在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以建立Flink写入Neo4j图数据库的处理组件,从而在Flink的基础上集成Neo4j,由此,结合Flink的特点,实现高效简洁、灵活自由的Neo4j数据同步方案。
本申请通过由Flink流式处理写入Neo4j图数据库的处理组件在当前批次数据不为空时执行包括数据转换和cypher语句的写入操作,从而实现目前的Neo4j操作类库不支持的Upsert操作。
附图说明
通过参照附图详细描述其示例实施方式,本申请的上述和其它特征及优点将变得更加明显。
图1示出了根据本申请实施例的基于Flink实现Neo4j数据同步的集成方法的流程图。
图2示出了根据本申请实施例的基于Flink实现Neo4j数据同步的方法的流程图。
图3示出了根据本申请实施例的基于Flink实现Neo4j数据同步的集成装置的模块图。
图4示出了根据本申请实施例的基于Flink实现Neo4j数据同步的系统的示意图。
图5示意性示出本公开示例性实施例中一种计算机可读存储介质示意图。
图6示意性示出本公开示例性实施例中一种电子设备示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本申请的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此,实际执行的顺序有可能根据实际情况改变。
为了克服上述现有技术存在的缺陷,本申请提供一种基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置,以实现高效简洁、灵活自由的Neo4j数据同步方案。
首先参见图1,图1示出了根据本申请实施例的基于Flink实现Neo4j数据同步的集成方法的流程图。图1共示出了如下步骤:
步骤S110:提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖。
具体而言,Flink具有如下特点:1)Flink可以方便地接入各类应用作为数据源,比如Kafka、Redis、Mysql、ElasticSearch等,也可以通过实现指定接口,自行集成任意数据源;2)Flink对于流式数据及批量数据都提供了SQL操作支持和算子API支持,可以方便地实现过滤、转义、聚合和关联等数据操作;3)Flink通过checkPoint(检查点)机制来实现数据的Exactly Once(严格一次)语义,保证数据不会丢失;通过Flink可以集成Neo4j,将数据处理之后直接输出到Neo4j;4)Neo4j-ogm(Neo4j对象图形映射库)可以通过注解的形式,便捷地实现java对象与Neo4j数据的序列化与反序列化,通过自定义Cypher语句,可以实现Neo4j的复杂查询及操作。
因此,本申请在Flink的基础上进行了Neo4j-ogm集成,使Neo4j可以便捷地作为数据源和数据输出,能够支持数据批量写入Neo4j以减少网络传输从而提高写入性能。
具体而言,步骤S110可以采用maven(项目对象模型)进行管理构建。
在一个具体实现中,步骤S110可以由如下代码实现:
Figure BDA0003049985630000071
Figure BDA0003049985630000081
以上仅仅是示意性地示出步骤S110的代码化形式,本申请并非以此为限制。
步骤S120:提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4j cypher格式片段。
具体而言,建立数据转换映射器可以通过如下步骤实现:建立Json格式映射器,所述Json格式映射器用于将业务对象转化为json格式,并转化为Neo4j cypher操作语句;建立对象映射器,所述对象映射器基于Neo4j对象图形映射库(Neo4j-OGM)将数据对象映射到Neo4j图数据库。
步骤S130:提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以提供经建立的Flink写入Neo4j图数据库的处理组件。
具体而言,基于对所述Flink依赖中的部分方法的重写,以提供经建立的Flink写入Neo4j图数据库的处理组件包括以提供经建立的Flink流式处理写入Neo4j图数据库的处理组件,其中,Flink流式处理写入Neo4j图数据库的处理组件通过如下方式建立:继承RichSinkFunction<T>类;重写open(int taskNumber,int numTasks)方法,在其中创建Neo4j的连接驱动,使得每个Neo4jsink实例在初始化时完成所述连接驱动的创建;重写invoke(T record)方法,至少在其中完成数据对象与Neo4j cypher格式片段的转换;重写close()方法,在其中主动释放数据处理过程中调用的资源,使得每个Neo4jSink实例在销毁时释放资源。上述各方法皆为Flink依赖内置的函数方法,在此不予赘述。
其中,继承RichSinkFunction<T>类中的T为数据对象。继承RichSinkFunction<T>类可以代码化为:
Figure BDA0003049985630000082
Figure BDA0003049985630000091
具体而言,所述重写invoke(T record)方法可以包括:当前批次数据不为空时执行如下写入操作:创建数据批次容器;通过所述数据转换映射器,将数据对象转换为Neo4jcypher格式片段,并加入到所述数据批次容器中;通过Neo4j cypher模板,将所述数据批次容器格式化为cypher语句;开启连接会话;判断是否开启事务;若是,则执行所述cypher语句,并提交事务;若否,则执行所述cypher语句;关闭所述连接会话。其中,所述开启连接会话之后还可以包括:当数据异常时,执行事务回滚。
其中,会话(Session)是通信双方从开始通信到通信结束期间的一个上下文(Context)。这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器、通过哪个应用程序、哪个用户登录等信息。连接(Connection):连接是从客户端到服务器实例的一条物理路径。连接可以在网络上建立,或者在本机通过IPC(进程间通信或者跨进程通信)机制建立。通常会在客户端进程与一个专用服务器或一个调度器之间建立连接。会话(Session)是和连接(Connection)是同时建立的,两者是对同一件事情不同层次的描述。简单讲,连接(Connection)是物理上的客户端同服务器的通信链路,会话(Session)是逻辑上的用户同服务器的通信交互。数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
重写invoke(T record)方法可以代码化为:
Figure BDA0003049985630000092
Figure BDA0003049985630000101
Figure BDA0003049985630000111
以上仅仅是示意性地示出步骤S130的具体实现,本发明并非以此为限制。
进一步地,在本申请的一些具体实现中,所述Flink写入Neo4j图数据库的处理组件可以包括Flink流式处理写入Neo4j图数据库的处理组件,以实现实时数据处理。在另一些实现中,所述Flink写入Neo4j图数据库的处理组件可以包括Flink批量处理写入Neo4j图数据库的处理组件,以实现离线数据处理。在又一些实现中,所述Flink写入Neo4j图数据库的处理组件可以包括Flink流式处理写入Neo4j图数据库的处理组件以及Flink批量处理写入Neo4j图数据库的处理组件,从而同时实现实时处理和离线处理。其中,Flink流式处理写入Neo4j图数据库的处理组件以及Flink批量处理写入Neo4j图数据库的处理组件皆可以按前述的步骤S130的类似的方式来构建。具体而言,Flink流式处理写入Neo4j图数据库的处理组件以及Flink批量处理写入Neo4j图数据库的处理组件的构建原理相同,但他们继承的类并不相同。
本申请提供的基于Flink实现Neo4j数据同步的集成方法中,通过提供经建立的项目至少包括Flink依赖以及Neo4j依赖的核心依赖,提供经建立的数据转换映射器以便于数据转换映射器用于将数据对象转换为Neo4j cypher格式片段,基于对所述Flink依赖中的部分方法的重写,并在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4jcypher格式片段的转换,以建立Flink写入Neo4j图数据库的处理组件,从而在Flink的基础上集成Neo4j,由此,结合Flink的特点,实现高效简洁、灵活自由的Neo4j数据同步方案。
以上示例性地示出本申请的多个实现方式,本申请并非以此为限制,各实施方式中,步骤的增加、省略、顺序变换皆在本申请的保护范围之内;各实施方式可以单独或组合来实现。
本申请还提供一种基于Flink实现Neo4j数据同步的方法,参见图2。基于Flink实现Neo4j数据同步的方法包括:
步骤S210:判断当前批次数据是否不为空;
若步骤S210判断为是,则执行步骤S220:创建数据批次容器;
步骤S230:通过数据转换映射器,将数据对象转换为Neo4j cypher格式片段,并加入到所述数据批次容器中;
步骤S240:通过Neo4j cypher模板,将所述数据批次容器格式化为cypher语句;
步骤S250:执行所述cypher语句。
上述步骤的代码化实现可以参见步骤S130中,invoke(T record)方法的重写,本申请并非以此为限制。
由此,本申请提供的基于Flink实现Neo4j数据同步的方法,通过由Flink流式处理写入Neo4j图数据库的处理组件在当前批次数据不为空时执行包括数据转换和cypher语句的写入操作,从而实现目前的Neo4j操作类库不支持的Upsert操作。
下面结合图3描述本申请提供的基于Flink实现Neo4j数据同步的集成装置300。基于Flink实现Neo4j数据同步的集成装置300包括第一提供模块310、第二提供模块320以及第三提供模块330。
第一建立模块310配置成提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;
第二建立模块320配置成提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4j cypher格式片段;
第三建立模块330配置成提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以建立Flink写入Neo4j图数据库的处理组件。
本申请提供的基于Flink实现Neo4j数据同步的集成装置中,通过建立项目至少包括Flink依赖以及Neo4j依赖的核心依赖,建立数据转换映射器以便于数据转换映射器用于将数据对象转换为Neo4j cypher格式片段,基于对所述Flink依赖中的部分方法的重写,并在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以建立Flink写入Neo4j图数据库的处理组件,从而在Flink的基础上集成Neo4j,由此,结合Flink的特点,实现高效简洁、灵活自由的Neo4j数据同步方案。
本申请可以通过软件、硬件、固件及其任意结合的方式实现基于Flink实现Neo4j数据同步的集成装置300。图3仅仅是示意性的示出本申请提供的基于Flink实现Neo4j数据同步的集成装置300,在不违背本申请构思的前提下,模块的拆分、合并、增加都在本申请的保护范围之内。
本申请还提供一种基于Flink实现Neo4j数据同步的系统,参见图4。
Flink实现Neo4j数据同步系统包括多个数据源410、Flink写入Neo4j图数据库的处理组件(441以及442)以及Neo4j图数据库450。其中,Flink写入Neo4j图数据库的处理组件可以包括实现实时数据处理的Flink流式处理写入Neo4j图数据库的处理组件442以及实现离线数据处理的Flink批量处理写入Neo4j图数据库的处理组件441。Flink流式处理写入Neo4j图数据库的处理组件442以及Flink批量处理写入Neo4j图数据库的处理组件441可以执行如图2所示出的步骤。
进一步地,在本实施例中,基于Flink实现Neo4j数据同步的系统还可以包括离线处理采集接口421、实时处理采集接口422、以及数据清洗和转换等预处理操作模块430。
以上仅仅是示意性地描述本申请提供的基于Flink实现Neo4j数据同步的系统,本申请并非以此为限制。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被例如处理器执行时可以实现上述任意一个实施例中所述基于Flink实现Neo4j数据同步的集成方法和/或基于Flink实现Neo4j数据同步的方法的步骤。在一些可能的实施方式中,本申请的各个方面还可以实现为一种程序产品的形式,其包括程序代码,若所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述基于Flink实现Neo4j数据同步的集成方法和/或基于Flink实现Neo4j数据同步的方法部分中描述的根据本申请各种示例性实施方式的步骤。
参考图5所示,描述了根据本申请的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适若的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在租户计算设备上执行、部分地在租户设备上执行、作为一个独立的软件包执行、部分在租户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到租户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在本公开的示例性实施例中,还提供一种电子设备,该电子设备可以包括处理器,以及用于存储所述处理器的可执行指令的存储器。其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一个实施例中所述基于Flink实现Neo4j数据同步的集成方法和/或基于Flink实现Neo4j数据同步的方法的步骤。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图6来描述根据本申请的这种实施方式的电子设备600。图6显示的电子设备600仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同系统组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元610执行,使得所述处理单元610执行本说明书上述基于Flink实现Neo4j数据同步的集成方法和/或基于Flink实现Neo4j数据同步的方法部分中描述的根据本申请各种示例性实施方式的步骤。例如,所述处理单元610可以执行如图1中所示的步骤。
所述存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
所述存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得租户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应若明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述基于Flink实现Neo4j数据同步的集成方法和/或基于Flink实现Neo4j数据同步的方法。
本申请通过建立项目至少包括Flink依赖以及Neo4j依赖的核心依赖,建立数据转换映射器以便于数据转换映射器用于将数据对象转换为Neo4j cypher格式片段,基于对所述Flink依赖中的部分方法的重写,并在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以建立Flink写入Neo4j图数据库的处理组件,从而在Flink的基础上集成Neo4j,由此,结合Flink的特点,实现高效简洁、灵活自由的Neo4j数据同步方案。
本申请通过由Flink流式处理写入Neo4j图数据库的处理组件在当前批次数据不为空时执行包括数据转换和cypher语句的写入操作,从而实现目前的Neo4j操作类库不支持的Upsert操作。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。

Claims (10)

1.一种基于Flink实现Neo4j数据同步的集成方法,其特征在于,包括:
提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;
提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4jcypher格式片段;
提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以提供经建立的Flink写入Neo4j图数据库的处理组件,所述Flink写入Neo4j图数据库的处理组件包括Flink流式处理写入Neo4j图数据库的处理组件,所述Flink流式处理写入Neo4j图数据库的处理组件通过如下方式建立:
其中,继承RichSinkFunction<T>类;重写open(int taskNumber,int numTasks)方法;重写invoke(T record)方法;重写close()方法,所述重写invoke(T record)方法包括:
当前批次数据不为空时执行如下写入操作:
创建数据批次容器;
通过所述数据转换映射器,将数据对象转换为Neo4j cypher格式片段,并加入到所述数据批次容器中;
通过Neo4j cypher模板,将所述数据批次容器格式化为cypher语句;
执行所述cypher语句。
2.如权利要求1所述的基于Flink实现Neo4j数据同步的集成方法,其特征在于,所述提供经建立的数据转换映射器包括:
提供经建立的Json格式映射器,所述Json格式映射器用于将业务对象转化为json格式,并转化为Neo4j cypher操作语句;
提供经建立的对象映射器,所述对象映射器基于Neo4j对象图形映射库将数据对象映射到Neo4j图数据库。
3.如权利要求1所述的基于Flink实现Neo4j数据同步的集成方法,其特征在于,在所述重写open(int taskNumber,int numTasks)方法,在其中创建Neo4j的连接驱动,使得每个Neo4jsink实例在初始化时完成所述连接驱动的创建;
在所述重写invoke(T record)方法中,至少在其中完成数据对象与Neo4j cypher格式片段的转换;
在所述重写close()方法中,在其中主动释放数据处理过程中调用的资源,使得每个Neo4jSink实例在销毁时释放资源。
4.如权利要求3所述的基于Flink实现Neo4j数据同步的集成方法,其特征在于,所述执行所述cypher语句包括:
开启连接会话;
判断是否开启事务;
若是,则执行所述cypher语句,并提交事务;
若否,则执行所述cypher语句;
关闭所述连接会话。
5.如权利要求4所述的基于Flink实现Neo4j数据同步的集成方法,其特征在于,所述开启连接会话之后还包括:
当数据异常时,执行事务回滚。
6.如权利要求1至5任一项所述的基于Flink实现Neo4j数据同步的集成方法,其特征在于,所述Flink写入Neo4j图数据库的处理组件还包括:
Flink批量处理写入Neo4j图数据库的处理组件。
7.一种基于Flink实现Neo4j数据同步的方法,其特征在于,由Flink流式处理写入Neo4j图数据库的处理组件执行,包括:
当前批次数据不为空时执行如下写入操作:
创建数据批次容器;
通过数据转换映射器,将数据对象转换为Neo4j cypher格式片段,并加入到所述数据批次容器中;
通过Neo4j cypher模板,将所述数据批次容器格式化为cypher语句;
执行所述cypher语句。
8.一种基于Flink实现Neo4j数据同步的集成装置,其特征在于,包括:
第一提供模块,配置成提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;
第二提供模块,配置成提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4j cypher格式片段;
第三提供模块,配置成提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以建立Flink写入Neo4j图数据库的处理组件,所述Flink写入Neo4j图数据库的处理组件包括Flink流式处理写入Neo4j图数据库的处理组件,所述Flink流式处理写入Neo4j图数据库的处理组件通过如下方式建立:
其中,继承RichSinkFunction<T>类;重写open(int taskNumber,int numTasks)方法;重写invoke(T record)方法;重写close()方法,所述重写invoke(T record)方法包括:
当前批次数据不为空时执行如下写入操作:
创建数据批次容器;
通过所述数据转换映射器,将数据对象转换为Neo4j cypher格式片段,并加入到所述数据批次容器中;
通过Neo4j cypher模板,将所述数据批次容器格式化为cypher语句;
执行所述cypher语句。
9.一种基于Flink实现Neo4j数据同步的系统,其特征在于,包括:
多个数据源;
Neo4j图数据库;
Flink写入Neo4j图数据库的处理组件,配置成执行如权利要求7所述的基于Flink实现Neo4j数据同步的方法,以将来自所述数据源的数据对象写入所述Neo4j图数据库。
10.如权利要求9所述的基于Flink实现Neo4j数据同步的系统,其特征在于,所述Flink写入Neo4j图数据库的处理组件包括:
Flink流式处理写入Neo4j图数据库的处理组件,以实现实时数据处理;和/或
Flink批量处理写入Neo4j图数据库的处理组件,以实现离线数据处理。
CN202110485131.3A 2021-04-30 2021-04-30 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置 Active CN113111131B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110485131.3A CN113111131B (zh) 2021-04-30 2021-04-30 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110485131.3A CN113111131B (zh) 2021-04-30 2021-04-30 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置

Publications (2)

Publication Number Publication Date
CN113111131A CN113111131A (zh) 2021-07-13
CN113111131B true CN113111131B (zh) 2022-07-08

Family

ID=76720764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110485131.3A Active CN113111131B (zh) 2021-04-30 2021-04-30 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置

Country Status (1)

Country Link
CN (1) CN113111131B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020852A (zh) * 2021-09-29 2022-02-08 苏州臻璇数据信息技术有限公司 知识图谱的展示方法和装置
CN114296809B (zh) * 2021-12-24 2023-05-05 深圳航天科技创新研究院 一种基于操作系统的对象模型构建方法及其系统调用接口
CN114385140B (zh) * 2021-12-29 2023-03-24 武汉达梦数据库股份有限公司 基于flink框架的ETL流程组件多个不同输出的处理方法与装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112507029A (zh) * 2020-12-18 2021-03-16 上海哔哩哔哩科技有限公司 数据处理系统及数据实时处理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109376154B (zh) * 2018-10-26 2020-11-10 杭州玳数科技有限公司 数据读取、写入方法及数据读取、写入系统
CN110427505A (zh) * 2019-07-05 2019-11-08 苏州浪潮智能科技有限公司 一种批量数据导入图像数据库的方法和装置
CN111026779B (zh) * 2019-12-19 2023-10-17 厦门安胜网络科技有限公司 一种基于Flink SQL的数据处理方法、装置、存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112507029A (zh) * 2020-12-18 2021-03-16 上海哔哩哔哩科技有限公司 数据处理系统及数据实时处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GitHub-flink-neo4j;albertodelazzari;《GitHub网站》;20170128;第1-2页 *

Also Published As

Publication number Publication date
CN113111131A (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
CN113111131B (zh) 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置
US9317542B2 (en) Declarative specification of data integration workflows for execution on parallel processing platforms
US9361648B2 (en) Rule authoring for events in a grid environment
US7779047B2 (en) Pluggable merge patterns for data access services
Oancea et al. Integrating R and hadoop for big data analysis
US11556496B2 (en) Outputting map-reduce jobs to an archive file
US8959117B2 (en) System and method utilizing a generic update module with recursive calls
US8826248B2 (en) Enabling computational process as a dynamic data source for bi reporting systems
Estrada et al. Big data smack
US20150006584A1 (en) Managing a complex object in a cloud environment
US11816234B2 (en) Fine-grained privacy enforcement and policy-based data access control at scale
US11269820B1 (en) Integration of model execution engine containers with a model development environment
CN113377342B (zh) 一种项目构建方法、装置、电子设备及存储介质
US10324908B2 (en) Exposing database artifacts
Estrada Fast Data Processing Systems with SMACK Stack
CN112970011A (zh) 记录查询优化中的谱系
US9195711B2 (en) Persisting and retrieving arbitrary slices of nested structures using a column-oriented data store
Mehrotra et al. Apache Spark Quick Start Guide: Quickly learn the art of writing efficient big data applications with Apache Spark
US10908924B2 (en) System and methods for loading objects from hash chains
Ventocilla Big data programming with Apache spark
US11003834B2 (en) Markup language parser
CA2864914A1 (en) Virtual data write-back for business intelligence reporting
US11237752B2 (en) Automated data translation
Antolínez García Introduction to apache spark for large-scale data analytics
WO2022199693A1 (en) Selective pruning of system configuration model for system reconfigurations

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