Galaxybase-convert实践:两步实现Neo4j数据迁移

news2024/11/18 11:36:15

前言

Galaxybase是创邻科技自主研发的国内首款超大规模分布式并行原生图平台产品,拥有优异的数据读写查询性能、强⼤的可视化分析能力、丰富的可编程接口和开箱即用的图算法引擎,是集存储、计算、分析于一体的图数据全⽣命周期⼀站式管理平台,符合大数据时代下,客户对数据高效存储和查询的需求。

Galaxybase系统架构图
目前,Galaxybase已在金融、能源、政府、公安等行业完成落地,在需要复杂关联数据实时查询分析的场景下,可以实现原有关系型数据库或国外同类型产品的平滑替代,帮助企业激发数据价值。Neo4j是国外较为成熟的图数据库产品,当前已在国内较多行业具备应用案例,而源于对底层基础软件信创国产化的要求,企业纷纷响应政府号召,对支撑其关键业务的软硬件进行国产化替代。 本文将以创邻科技官网的MovieDemo数据集作为例子,教大家使用Galaxybase-convert工具两步实现Neo4j到Galaxybase的数据迁移。

数据迁移方案

Galaxybase-convert为创邻科技封装完成的数据迁移工具,在本方案中将使用convert工具将MovieDemo数据集从Neo4j数据迁移至Galaxybase,具体迁移流程图如下:
convert数据迁移流程图

前提条件

  1. galaxybase-convert工具(下文统称“convert工具”)
  2. Galaxybase 数据库 load 权限;
  3. Neo4j 版本 3.x 或 4.x。

注意事项

  1. convert工具导出的数据和生成的文件在{dataDir}/{graphName}文件夹下,{dataDir}为使用convert工具时填写的–dataDir参数,{graphName}为使用convert工具时填写的–graphName参数;
  2. 当前方案使用convert工具需要在Galaxybase服务器上,并且有挂载data;
  3. 在Neo4j数据存在多label、无label的情况下,可能出现导出重复数据或数据丢失,具体情况如下:
    在这里插入图片描述

数据集说明

示例数据集为创邻科技官网提供的MovieDemo数据集,包含两个点类型、一条边类型,具体数据类型如下:
点类型“人物”,外部唯一标识字段为“姓名”,包含“出生年份”、“出生地”两个属性;

属性名属性类型
出生年份STRING
出生地STRING

点类型“电影”,外部唯一标识字段为“电影名”,包含“上映年份”、“语言”、“评分”、“票房”、“类型”五个属性;

属性名属性类型
上映年份STRING
语言STRING
评分INT
票房INT
类型STRING

边类型“出演电影”,起始点为“人物”,终止点为“电影”,包含“片酬”、“角色名称”、“是否主演”三个属性。

属性名属性类型
片酬INT
角色名称STRING
是否主演STRING

第一步:生成schema.json文件

如果已有schema.json文件,可以跳过此步骤,直接从第二步开始执行。在没有schema.json文件的情况下,用户可以在Galaxybase服务器上调用convert工具生成,调用命令如下:

$ galaxybase-convert --neo4j3 127.0.0.1:7687 --neoUser neo4j --neoPass admin --graphName 
MovieDemo --dataDir graphHomeDir/data/ --generateSchemaFast 
2022/10/27 16:42:41 Statistics vertexes and edges information... 
2022/10/27 16:42:41 vertexes count is : [8592], edges count is : [6154] 
2022/10/27 16:42:41 Analytic graph structure... 
2022/10/27 16:42:41 Get vertex information... 
2022/10/27 16:42:41 Analyze the vertex structure : 
[==================================================] 100.00% 
2022/10/27 16:42:41 Get edge information... 
2022/10/27 16:42:42 Analyze the edge structure progress : 
[==================================================] 100.00% 
2022/10/27 16:42:42 Draws the vertex structure to the schema... 
2022/10/27 16:42:42 Draws the edge structure to the schema... 
2022/10/27 16:42:42 Generating schema file... 

命令参数说明:

参数命令说明

注意:

  • 由于convert工具–generateSchemaFast参数是遍历每种label的部分数据来分析出schema.json,所以多label、无label的情况下可能导致分析出来的schema.json不准确。
  • 由于Neo4j的go-driver返回的数值类型都是最大精度的数值类型,例如:查询int类型的属性会以long类型返回,所以生成schema.json的属性类型会与预期有误差,但不影响数据迁移。

上述命令将使用"neo4j"为用户名,"admin"为密码连接,IP地址为127.0.0.1:7687的Neo4j 3.x的服务,遍历数据分析出graphName字段为"MovieDemo"的schema.json,保存在graphHomeDir/data/路径(启动 Galaxybase 时设置的data目录)下的MovieDemo文件夹中。schema.json如下:

{ 
"version": 0, 
"graphName": "MovieDemo", 
"vertexes": { 
"人物": { 
"type": "人物", 
"primaryId": "_ID", 
"property": [ 
{ 
"name": "出生年份", 
"type": "STRING" 
}, 
{ 
"name": "出生地", 
"type": "STRING" 
}, 
{ 
"name": "姓名", 
"type": "STRING" 
} 
] 
}, 
"电影": { 
"type": "电影", 
"primaryId": "_ID", 
"property": [ 
{ 
"name": "票房", 
"type": "LONG" 
}, 
{ 
"name": "电影名","type": "STRING" 
}, 
{ 
"name": "语言", 
"type": "STRING" 
}, 
{ 
"name": "评分", 
"type": "LONG" 
}, 
{ 
"name": "上映年份", 
"type": "STRING" 
}, 
{ 
"name": "类型", 
"type": "STRING" 
} 
] 
} 
}, 
"edges": { 
"出演电影": { 
"type": "出演电影", 
"directed": true, 
"allowRepeat": true, 
"fromAndToTypes": [ 
{ 
"fromType": "人物", 
"toType": "电影" 
} 
], 
"property": [ 
{ 
"name": "角色", 
"type": "STRING" 
}, 
{ 
"name": "是否主演", 
"type": "STRING" 
}, 
{ 
"name": "片酬", 
"type": "STRING" 
} 
] 
}} 
}

第二步:根据schema.json迁移数据到Galaxybase

使用以下命令调用convert工具,系统将会读取到graphHomeDir/data/schema.json的内容。使用Neo4j相关参数连接Neo4j后,根据schema.json的点边类型导出Neo4j数据为csv文件,保存在graphHomeDir/data/(启动Galaxybase时设置的data目录)路径下的MovieDemo文件夹中。根据csv文件路径生成mapping.json,保存在graphHomeDir/data/路径下的MovieDemo文件夹中。最后,convert工具通过schema.json和mapping.json,将csv数据导入到Galaxybase。具体调用命令如下:

$ galaxybase-convert --neo4j3 127.0.0.1:7687 --neoUser neo4j --neoPass neo4j --graphName 
MovieDemo --dataDir graphHomeDir/data/ --schema graphHomeDir/data/schema.json --graph 
127.0.0.1:18088 
2022/10/27 21:09:01 Statistics vertexes and edges information... 
2022/10/27 21:09:01 vertexes count is : [8592], edges count is : [6154] 
2022/10/27 21:09:01 Generating schema file... 
2022/10/27 21:09:01 Draws the vertex structure to the mapping... 
2022/10/27 21:09:01 Draws the edge structure to the mapping... 
2022/10/27 21:09:01 Generating mapping file... 
2022/10/27 21:09:01 Start exporting data to CSV files... 
2022/10/27 21:09:02 Exporting vertex : [===============================================] 
100.00% current speed : 8592 /s 
2022/10/27 21:09:02 Exporting edge : [===============================================] 
100.00% current speed : 6154 /s 
2022/10/27 21:09:02 Data export successful 
2022/10/27 21:09:02 Start loading the graph... 
2022/10/27 21:09:02 The graph [MovieDemo] does not exist, start creating the graph 
2022/10/27 21:09:04 create graph successfully 
2022/10/27 21:09:04 save mapping successfully 
2022/10/27 21:09:04 Start loading data... 
current time : 2022-10-27 21:09:42 graph name : MovieDemo 
start time : 2022-10-27 21:09:04 end time : 2022-10-27 21:09:41 
load state : loadSuccessful use time : 38.123 s 
vertexLoad speed : -/s edgeLoad speed : -/s 
vertexLoad speed avg : 1607 /s edgeLoad speed avg : 402 /s 
vertex line scan : 8592 edge line scan : 6154 
file error line : 0

迁移结果展示

下图为迁移到Galaxybase图数据库的最终结果,可以看到图名称为MovieDemo,点数量为8592个,边数量为6154条,和命令行中名称、数量一致;图模型为人物-出演-电影,属性信息和原数据集一致。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

结语

本文讲述了通过命令行工具galaxybase-convert,以MovieDemo数据集为例,进行第三方数据库Neo4j数据迁移至Galaxybase的操作流程。此外,该工具还支持多项数据源的数据迁移,目前支持的数据源有Neo4j 3.x版本、4.x版本,ArangoDB <=3.10版本,一般应用在实体关系复杂且难以获取的场景中,如果场景中实体结构清晰,建议使用图构建工具galaxybase-load进行数据的迁移工作。具体迁移工具使用详情可以移步创邻科技官网-资源中心-开发者资源-技术文档-命令行工具-图构建数据导入工具,查看图模型定义文件(schema.json)和图数据映射文件(mapping.json)。

后续,我们将优先输出从ArangoDB数据迁移至Galaxybase的文档,读者在使用Galaxybase进行替换的过程中,对数据迁移有任何疑问也可以在创邻科技Galaxybase公众号留言或在官方论坛(https://www.galaxybase.com/forum/)提问,我们将给予答复,统计共性问题输出相应迁移实践文案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/694835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ProtoBuf—2

文章目录 1、字段规则2、消息类型的定义和使用3、enum的使用4、any类型2、oneof类型3、map类型 1、字段规则 消息的字段可以用以下几种规则来修饰&#xff1a; singular&#xff1a;消息中可以包含该字段零次或一次(不超过一次)。proto3语法中&#xff0c;字段默认使用该规则…

【XML技术】web杂谈(3)之深入理解什么是XML、XML的语法详解

涉及知识点 什么是 XML&#xff0c;XML的特征&#xff0c;XML的基本语法及应用&#xff0c;应用程序接口&#xff08;DOM&SAX&#xff09;&#xff0c;XML的文档的显示&#xff0c;深入了解XML技术。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可…

马氏距离mahalanobis distance

来看个题 【解】 代码验证 import numpy as np from scipy.spatial.distance import mahalanobis# 定义四个点坐标的数组 points np.array([[0.5, 1.5], [4, 4], [8, 6], [2, 2]])# 计算协方差矩阵 covariance_matrix np.cov(points.T)# 计算马氏距离 mean np.mean(points,…

策略模式Strategy介绍与C++实现

目录 1、策略模式的提出&#xff1a; 2、策略模式定义&#xff1a; 3、策略模式总结&#xff1a; 4、需求描述&#xff1a; 5、普通实现 6、使用策略模式实现 1、策略模式的提出&#xff1a; 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多样&#xff0c;经…

Ubuntu下 NVIDIA Container Runtime 安装与使用

NVIDIA Container Runtime官网 GitHub仓库&#xff1a;Docker 是开发人员采用最广泛的容器技术。借助 NVIDIA Container Runtime&#xff0c;开发人员只需在创建容器期间注册一个新的运行时&#xff0c;即可将 NVIDIA GPU 暴露给容器中的应用程序。用于 Docker 的 NVIDIA Conta…

自然语言处理:任务与应用

文章目录 一、基本任务1.词性标注Part-of-speech (POS) tagging2.命名实体识别Named Entity Recognition (NER)3.共指消解Coreference Resolution4.句法依赖解析Syntactic Dependency Parsing5.中文分词Chinese Word Segmentation 二、常见应用1.文本匹配2. 知识图谱3. 问答系统…

微服务中的负载均衡

如图 有三处需要负载均衡 这里主要讲内部的grpc调用的 负载均衡 图中3的地方 ① 集中式load balance ② 进程内load balance ③独立进程load balance 首选第二种方式

华为MateBook 16 2021款锐龙版R7(CREM-WFD9)(CREM-WFG9)原装出厂Win11系统工厂模式,恢复原厂系统

HUAWEI华为笔记本电脑&#xff0c;MateBook 16 2021款 锐龙版 R7(CREM-WFD9) (CREM-WFG9) 原厂Windows11系统&#xff0c;带F10恢复功能&#xff0c;原装OEM专用系统&#xff0c;恢复出厂状态 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、华为电脑管家等预装程序 …

Java启动项目时,控制台报端口被占用,解决办法

端口占用一般是现在有别的程序正在使用该端口 第一步可以先查出来是哪个程序在占用&#xff1a; netstat -aon | find "8113" //8113为被占用的端口号 此时的结果是这样的&#xff0c;查询出来的为占用此端口程序的PID&#xff08; 25472 &#xff09; 然后根据…

隐式迭代是什么意思?jQuery选择器隐式迭代

在使用jQuery 选择器获取元素后&#xff0c;如果不考虑获取到的元素数量&#xff0c;直接对元素进行操作&#xff0c;则在操作时会发生隐式迭代。隐式迭代是指&#xff0c;当要操作的元素实际有多个时&#xff0c;jQuery 会自动对所有的元素进行操作&#xff0c;示例代码如下。…

Centos 系统中使用 Firefix 播放视频 - VLC播放器的安装

问题&#xff1a; 出于刷视频的需要&#xff0c;需要使用虚拟机&#xff08;Centos7&#xff09;上的 Firefix 来播放视频&#xff0c;经确认安装 flash 的方式是不行的。事实上在 Firefix 播放视频仅需要安装 VLC 播放器就可以了&#xff0c;以下记录安装 VLC 视频播放器的过程…

Selenium教程__截图(16)

selenium截图有两种方式 截取全屏 get_screenshot_as_file(filename)&#xff1a;将截图转化成文件保存到本地&#xff0c;filename为保存的文件路径get_screenshot_as_base64()&#xff1a;将截图转化成base64get_screenshot_as_png()&#xff1a;将截图转化成png 截取指定元…

Java学习记录之struts2(一)

1 struts入门 1.1 介绍  框架&#xff1a;就是半成品&#xff0c;框架已经完成一些通用功能。只需要实现与业务有关功能。  版本&#xff1a;struts-2.3.15.3-all 1.2 核心功能 1.3 目录结构  apps / struts2-blank.war 最简答环境  apps / struts2-showcase.war 常…

【Linux】MySQL 主从复制与读写分离

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 MySQL 主从复制与读写分离 MySQL 主从复制与读写分离1、什么是读写分离2、为什么要读写分离3、什么时候要读写分离4、主从复制与读写分离5、mysql支持的复制类型6、主从复制的…

Unity Android启动子进程加载其他SDK

1、导出untiy 安卓工程 添加MyService 2、 在子进程内加载SDK部分

【C#】错误 14 “GenerateResource”任务意外失败。

问题描述 Microsoft Visual Studio Ultimate 2013 12.0.21005.1 错误 14 “GenerateResource”任务意外失败。 System.Runtime.InteropServices.ExternalException (0x80004005): GDI 中发生一般性错误。在 System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder,…

开车适合佩戴哪种蓝牙耳机,分享几款骨传导耳机的使用体验

骨传导耳机从发布到现在有了几年的时间&#xff0c;也有很多人开始了解&#xff0c;但真正去选购的人还是很少&#xff0c;如果你没有使用过骨传导耳机&#xff0c;在选购时会很迷茫。作为一个骨传导耳机的重度使用者&#xff0c;下面就给大家分享一下我的体验感受以及选购建议…

大模型微调实践遗留问题1

Lora 和 AdaLora的区别和联系&#xff1f; P-tuning和Prompt tuning的区别和联系&#xff1f; P-Tuning&#xff0c;仅对大模型的Embedding加入新的参数。 P-Tuning-V2&#xff0c;将大模型的Embedding和每一层前都加上新的参数。 Prompt Tuning 方式可以看做是 Prefix Tuni…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第十二章 无线网络安全下)【建议收藏】

文章目录 一、自学网络安全学习的误区和陷阱二、学习网络安全的一些前期准备三、自学网络安全学习路线一、无线局域网安全性分析1、Wi-Fi网络安全2、WEP存在如下弱点&#xff1a; 二、移动通信网安全防护1、3G安全体系趋于透明化2、考虑采用公钥密码体系3、考虑新密码技术的应用…

kafka入门,生产者自定义分区(六)

1、实现Partitioner接口 package com.longer.producer;import org.apache.kafka.clients.producer.Partitioner; import org.apache.kafka.common.Cluster;import java.util.Map;/*** 实现接口Partitioner* 实现3个方法&#xff1a;partition&#xff0c;close,configure* 编写…