Galaxybase是创邻科技自主研发的国内首款超大规模分布式并行原生图平台产品,拥有优异的数据读写查询性能、强⼤的可视化分析能力、丰富的可编程接口和开箱即用的图算法引擎,是集存储、计算、分析于一体的图数据全生命周期⼀站式管理平台,符合大数据时代下,客户对数据高效存储和查询的需求。
目前,Galaxybase已在金融、能源、政府、公安等行业完成落地,在需要复杂关联数据实时查询分析的场景下,可以实现原有关系型数据库或国外同类型产品的平滑替代,帮助企业激发数据价值。ArangoDB是国外较为流行的原生多模型数据库产品,兼有键值、文档、图三种数据模型,适用于开发需要具备灵活性的场景。本文将以创邻科技官网的MovieDemo数据集作为例子,教大家运用两种方案实现ArangoDB到Galaxybase的数据迁移。
Galaxybase-convert为创邻科技封装完成的数据迁移工具,在本方案中将使用convert工具将MovieDemo数据集从ArangoDB(v3.10)数据迁移至Galaxybase(v3.4.2),具体迁移流程图如下:
示例数据集为创邻科技官网提供的MovieDemo数据集,包含两个点类型、一条边类型。为将源数据导入ArangoDB,我们将对数据类型做一些修改,具体属性信息如下:
“人物”点数据,将其类型名改为people,并增加以下两列连续增长的 _key 及相应的 _id ;
属性名 | 属性类型 |
---|---|
_id | STRING |
_key | STRING |
姓名 | STRING |
出生年份 | STRING |
出生地 | STRING |
“电影”点数据,将其类型名改为movie,并增加以下两列连续增长的 _key 及相应的 _id ;
属性名 | 属性类型 |
---|---|
_id | STRING |
_key | STRING |
上映年份 | STRING |
语言 | STRING |
评分 | INT |
票房 | INT |
类型 | STRING |
“出演电影”边数据,起始点为“人物”,终止点为“电影”,将其类型名改为act,并增加 _from 和 _to ,分别对应“人物”和“电影”的 _id ,同时保留“电影名”和“演员”属性。
属性名 | 属性类型 |
---|---|
_from | STRING |
_to | STRING |
电影名 | STRING |
演员 | STRING |
片酬 | INT |
角色名称 | STRING |
是否主演 | STRING |
本方案适用于可以在Galaxybase服务器上直接访问到ArangoDB的情况,一步完成。否则,建议直接从跳到方案二。 执行方案一进行数据迁移时,针对可能出现的情况提出以下注意事项:
使用以下命令调用convert工具,系统将指定ArangoDB的地址、用户名、密码,并导出某个数据库到预设路径下,再导入Galaxybase。
$ galaxybase-convert \
--arangodb tcp://192.168.20.76:8529 \
--arangoUser root --arangoPass 1 \
--graphName _system \
--dataDir ~/galaxybase_home/graph/data \
--arangoexport ~/arangoexport \
--arangoConfiguration ./arangoexport.conf \
--graph 127.0.0.1:18088 \--username admin --password admin
2022/11/09 11:04:23 Statistics vertexes and edges information...
2022/11/09 11:04:23 vertexes count is : [8885], edges count is : [6154]
2022/11/09 11:04:23 Analytic graph structure...
2022/11/09 11:04:23 Get vertex information...
2022/11/09 11:04:23 Analyze the vertex structure :
[==================================================] 100.00%
2022/11/09 11:04:23 Get edge information...
2022/11/09 11:04:24 Analyze the edge structure progress :
[==================================================] 100.00%
2022/11/09 11:04:24 Draws the vertex structure to the schema...
2022/11/09 11:04:24 Draws the edge structure to the schema...
2022/11/09 11:04:24 Generating schema file...
2022/11/09 11:04:24 Draws the vertex structure to the mapping...
2022/11/09 11:04:24 Draws the edge structure to the mapping...
2022/11/09 11:04:24 Generating mapping file...
2022/11/09 11:04:24 Start exporting data to CSV files...
2022/11/09 11:04:24 Will load vertexes: [ movie people ]
2022/11/09 11:04:24 Will load edges: [ people-act-movie ]
2022/11/09 11:04:24 Start loading the graph...
2022/11/09 11:04:24 The graph [_system] does not exist, start creating the graph
2022/11/09 11:04:24 create graph successfully
2022/11/09 11:04:24 save mapping successfully
2022/11/09 11:04:24 Start loading data...
current time : 2022-11-09 11:05:04 graph name : _system
start time : 2022-11-09 11:04:24 end time : 2022-11-09 11:05:03
load state : loadSuccessful use time : 40.112 s
vertexLoad speed : -/s edgeLoad speed : -/s
vertexLoad speed avg : 1714 /s edgeLoad speed avg : 34379 /s
vertex line scan : 8885 edge line scan : 6154
file error line : 0
2022/11/09 11:05:04 load successfully
命令参数说明:
参数 | 说明 |
---|---|
–arangodb | ArangoDB的协议、IP、端口 |
–arangoUser | ArangoDB的用户名 |
–arangoPass | ArangoDB的密码 |
–graphName | 需要导出的数据库名,在ArangoDB中将导入整个库 |
–dataDir | 导出文件存放路径。注意,最终存放路径为dataDir/graphName/ |
–arangoexport | arangoexport命令的路径 |
–arangoConfiguration | aranfoexport的配置文件 |
–graph | Galaxybase的IP地址和端口 |
–username | Galaxybase的用户名 |
–password | Galaxybase的密码 |
命令执行完成后,“MovieDemo”图将从ArangoDB迁移至Galaxybase,可以访问Galaxybase图可视化平台查看图项目。
本方案适用于在Galaxybase服务器上无法访问ArangoDB的情况。 操作总共分为三步:执行galaxybase-convert导出数据为csv、移动数据到Galaxybase服务器上、实现galaxybase-load执行数据导入,下面讲解迁移实现过程。
使用以下命令调用convert工具,系统将指定ArangoDB的地址、用户名、密码,并导出某个数据库到预设路径下。
$ galaxybase-convert \
--arangodb tcp://192.168.20.76:8529 \
--arangoUser root --arangoPass 1 \
--graphName _system \
--dataDir ~/galaxybase_home/graph/data \
--arangoexport ~/arangoexport \
--arangoConfiguration ./arangoexport.conf \
--onlyOutput
2022/11/08 10:31:57 Statistics vertexes and edges information...
2022/11/08 10:31:57 vertexes count is : [8885], edges count is : [6156]
2022/11/08 10:31:57 Analytic graph structure...
2022/11/08 10:31:57 Get vertex information...
2022/11/08 10:31:57 Analyze the vertex structure :
[==================================================] 100.00%
2022/11/08 10:31:57 Get edge information...
2022/11/08 10:31:57 Analyze the edge structure progress :
[==================================================] 100.00%
2022/11/08 10:31:57 Draws the vertex structure to the schema...
2022/11/08 10:31:57 Draws the edge structure to the schema...
2022/11/08 10:31:57 Generating schema file...
2022/11/08 10:31:57 Draws the vertex structure to the mapping...
2022/11/08 10:31:57 Draws the edge structure to the mapping...
2022/11/08 10:31:57 Generating mapping file...
2022/11/08 10:31:57 Start exporting data to CSV files...
2022/11/08 10:31:57 Will load this vertex: [ movie people ]
2022/11/08 10:31:57 Will load this edges: [ people-act-movie movie-act-people ]
命令参数说明:
参数 | 说明 |
---|---|
–arangodb | ArangoDB的协议、IP、端口 |
–arangoUser | ArangoDB的用户名 |
–arangoPass | ArangoDB的密码 |
–graphName | 需要导出的数据库名,在ArangoDB中将导入整个库 |
–dataDir | 导出文件存放路径。注意,最终存放路径为dataDir/graphName/ |
–arangoexport | arangoexport命令的路径 |
–arangoConfiguration | aranfoexport的配置文件 |
–onlyOutput | 仅导出数据,不导入Galaxybase |
从ArangoDB导出时的文件内容如下:
将生成的MovieDemo文件夹,移动到Galaxybase服务器上,移动路径如下所示:
执行以下命令,使用galaxybase-load工具将MovieDemo数据集导入,schema存放在schema.json路径,mapping存放在mapping.json路径,两个文件的路径可自行调整。具体调用命令如下:
$ galaxybase-load -g MovieDemo -s ~/galaxybase_home/graph/data/MovieDemo/schema.json -
m ~/galaxybase_home/graph/data/MovieDemo/mapping.json --disableStudio
2022/10/28 09:40:07 The graph [MovieDemo] does not exist, start creating the graph
2022/10/28 09:40:07 create graph successfully
2022/10/28 09:40:08 save mapping successfully
2022/10/28 09:40:08 Start loading data...
current time : 2022-10-28 09:41:17 graph name : MovieDemo
start time : 2022-10-28 09:40:08 end time : 2022-10-28 09:41:16
load state : loadSuccessful use time : 1m9.133s
vertexLoad speed : -/s edgeLoad speed : -/s
vertexLoad speed avg : 1638/s edgeLoad speed avg:1171/s
vertex line scan : 8885 edge line scan : 6154
file error line : 0
2022/10/28 09:41:17 load successfully
访问Galaxybase图可视化平台查看迁移结果,可以看到图名称为MovieDemo,点数量为8592个,边数量为6154条,和命令行中名称、数量一致;图模型为人物-出演-电影,属性信息和原数据集一致。
本文讲述了通过命令行工具galaxybase-convert,以MovieDemo数据集为例,进行第三方数据库ArangoDB数据迁移至Galaxybase的操作流程。此外,该工具还支持多项数据源的数据迁移,目前支持的数据源有Neo4j 3.x版本、4.x版本,ArangoDB <=3.10版本,一般应用在实体关系复杂且难以获取的场景中,如果场景中实体结构清晰,建议使用图构建工具galaxybase-load进行数据的迁移工作。具体迁移工具使用详情可以移步创邻科技官网-资源中心-开发者资源-技术文档-命令行工具-图构建数据导入工具,查看图模型定义文件(schema.json)和图数据映射文件(mapping.json)。
后续,我们将统计读者在使用Galaxybase进行替换的过程中,对数据迁移提出的共性问题产出实践文案。针对细节性问题,可以再Galaxybase公众号留言或在官方论坛提问,我们将给予答复。