基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置制造方法及图纸

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

【技术实现步骤摘要】
基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置
本申请涉及数据处理领域,尤其涉及一种基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置。
技术介绍
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。On-LineTransactionProcessing联机事务处理过程(OLTP),也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。OnlineAnalyticalProcessing联机分析处理(OLAP)是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(FastAnalysisofSharedMultidimensionalInformation),即共享多维信息的快速分析的特征。其中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依赖;提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4jcypher格式片段;提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4jcypher格式片段的转换,以提供经建立的Flink写入Neo4j图数据库的处理组件。在本申请的一些实施例中,所述提供经建立的数据转换映射器包括:提供经建立的Json格式映射器,所述Json格式映射器用于将业务对象转化为json格式,并转化为Neo4jcypher操作语句;提供经建立的对象映射器,所述对象映射器基于Neo4j对象图形映射库将数据对象映射到Neo4j图数据库。在本申请的一些实施例中,所述以提供经建立的Flink写入Neo4j图数据库的处理组件包括以提供经建立的Flink流式处理写入Neo4j图数据库的处理组件;所述Flink流式处理写入Neo4j图数据库的处理组件通过如下方式建立:继承RichSinkFunction<T>类;重写open(inttaskNumber,intnumTasks)方法,在其中创建Neo4j的连接驱动,使得每个Neo4jsink实例在初始化时完成所述连接驱动的创建;重写invoke(Trecord)方法,至少在其中完成数据对象与Neo4jcypher格式片段的转换;重写close()方法,在其中主动释放数据处理过程中调用的资源,使得每个Neo4jSink实例在销毁时释放资源。在本申请的一些实施例中,所述重写invoke(Trecord)方法包括:当前批次数据不为空时执行如下写入操作:创建数据批次容器;通过所述数据转换映射器,将数据对象转换为Neo4jcypher格式片段,并加入到所述数据批次容器中;通过Neo4jcypher模板,将所述数据批次容器格式化为cypher语句;开启连接会话;判断是否开启事务;若是,则执行所述cypher语句,并提交事务;若否,则执行所述cypher语句;关闭所述连接会话。在本申请的一些实施例中,所述开启连接会话之后还包括:当数据异常时,执行事务回滚。在本申请的一些实施例中,所述Flink写入Neo4j图数据库的处理组件包括:Flink流式处理写入Neo4j图数据库的处理组件;和/或Flink批量处理写入Neo4j图数据库的处理组件。根据本申请的又一方面,还提供一种基于Flink实现Neo4j数据同步的方法,由Flink流式处理写入Neo4j图数据库的处理组件执行,包括:当前批次数据不为空时执行如下写入操作:创建数据批次容器;通过数据转换映射器,将数据对象转换为Neo4jcypher格式片段,并加入到所述数据批次容器中;通过Neo4jcypher模板,将所述数据批次容器格式化为cypher语句;执行所述cypher语句。根据本申请的又一方面,还提供一种基于Flink实现Neo4j数据同步的集成装置,包括:第一提供模块,配置成提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;第二提供模块,配置成提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4jcypher格式片段;第三提供模块,配置成提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于本文档来自技高网
...

【技术保护点】
1.一种基于Flink实现Neo4j数据同步的集成方法,其特征在于,包括:/n提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;/n提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4jcypher格式片段;/n提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4j cypher格式片段的转换,以提供经建立的Flink写入Neo4j图数据库的处理组件。/n

【技术特征摘要】
1.一种基于Flink实现Neo4j数据同步的集成方法,其特征在于,包括:
提供经建立的项目的核心依赖及其版本,所述核心依赖至少包括Flink依赖以及Neo4j依赖;
提供经建立的数据转换映射器,所述数据转换映射器用于将数据对象转换为Neo4jcypher格式片段;
提供经重写的基于对所述Flink依赖中的部分方法,其中,在重写的部分方法中基于所述数据转换映射器完成数据对象与Neo4jcypher格式片段的转换,以提供经建立的Flink写入Neo4j图数据库的处理组件。


2.如权利要求1所述的基于Flink实现Neo4j数据同步的集成方法,其特征在于,所述提供经建立的数据转换映射器包括:
提供经建立的Json格式映射器,所述Json格式映射器用于将业务对象转化为json格式,并转化为Neo4jcypher操作语句;
提供经建立的对象映射器,所述对象映射器基于Neo4j对象图形映射库将数据对象映射到Neo4j图数据库。


3.如权利要求1所述的基于Flink实现Neo4j数据同步的集成方法,其特征在于,所述以提供建立的Flink写入Neo4j图数据库的处理组件包括以提供建立的Flink流式处理写入Neo4j图数据库的处理组件;所述Flink流式处理写入Neo4j图数据库的处理组件通过如下方式建立:
继承RichSinkFunction<T>类;
重写open(inttaskNumber,intnumTasks)方法,在其中创建Neo4j的连接驱动,使得每个Neo4jsink实例在初始化时完成所述连接驱动的创建;
重写invoke(Trecord)方法,至少在其中完成数据对象与Neo4jcypher格式片段的转换;
重写close()方法,在其中主动释放数据处理过程中调用的资源,使得每个Neo4jSink实例在销毁时释放资源。


4.如权利要求3所述的基于Flink实现Neo4j数据同步的集成方法,其特征在于,所述重写invoke(Trecord)方法包括:
当前批次数据不为空时执行如下写入操作:
创建数据批次容器;
通过所述数据转换映射器,将数据对象转换为Neo4jcypher格式片段,并加入到所述数据批次容器中;
通过Neo4jcypher模板,将所述数据批次容器格式化为cypher语句;
开启连接会话;
判断是否开启事务;
若是,则执行所述cypher语句,并提交事务;

【专利技术属性】
技术研发人员:管峻宇许路路朱俊张炜
申请(专利权)人:苏州科达科技股份有限公司
类型:发明
国别省市:江苏;32

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

1