5分钟迁移关系型数据库到图数据库

分钟,迁移,关系,数据库 · 浏览次数 : 55

小编点评

## 华为云图引擎服务 (Graph Engine Service) 数据迁移指南 **作者:** RiverSide **前言:** 华为云图引擎服务 (Graph Engine Service) 是国内首个商用的、拥有自主知识产权的国产分布式原生图引擎。支持社交应用、企业关系分析、风控、推荐、反欺诈等具有丰富关系数据的场景。由于关系型数据库和如GES的图数据库天然存在的异构性,将已有的关系型数据库中的数据存储至图数据库中仍存在较多的难点。本文借助 Apache Hop 及 GES 插件,提供了多数据源通用、可视化、开箱即用的数据转换工程,可将多种关系型数据库迁移至GES图数据库中。 **流程概述:** 1. **数据准备:** - 将已有的关系型数据库中的数据导出至 CSV 文件中。 - 使用 Apache Hop 创建数据转换工程,指定数据源和目标格式。 - 配置GES插件连接参数。 2. **转换过程:** - 读取 CSV 文件并解析元数据与 ID映射文件。 - 生成动态 SQL 语句,指定查询结果的格式。 - 将查询结果写入 CSV 文件中,用于导入 GES 图实例。 **工具介绍:** - **Apache Hop:** 数据编排和数据工程平台,用于数据转换和关系数据库连接。 - **GES 插件:** 用于将关系型数据库数据转换为 GES 图模型。 **环境准备:** - 下载并解压缩 GES 插件。 - 配置 Apache Hop 的相关参数。 **步骤执行:** 1. 打开 Hop 界面,点击 "metadata->relational database connection" 创建数据库连接。 2. 选择关系型数据库类型,填入账号密码等信息。 3. 点击 "metadata->GES Connection" 建立图连接,按 .zip 文件中说明文档填入账号密码等信息。 4. 点击 "project detail" 定义项目参数,并启动数据转换。 **数据转换结果:** - 数据转换完成后,将转换完成的图数据库文件存放在指定路径下。 - 可通过前端页面访问导入的数据,进行分析和查询。 **附件:** - sample project 及 GES 插件 .zip 文件。 **总结:** 华为云图引擎服务提供一种便捷的方法,可将多个关系型数据库迁移至 GES 图数据库中。该指南提供数据转换工程的详细步骤和工具介绍,帮助您顺利迁移数据。

正文

本文分享自华为云社区《5分钟迁移关系型数据库到图数据库》,作者: RiverSide 。

以往开发者会使用关系型数据库如MySQL对领域数据进行存储,这类关系型数据库诞生较早,但并不适合存储关联度较大的数据,如社交关系网络。随着高关联度数据的存储及分析的需求随数据量日益增长,将海量关联数据存入图数据库中进行深度挖掘分析是大势所趋。华为云图引擎服务(Graph Engine Service)是国内首个商用的、拥有自主知识产权的国产分布式原生图引擎。广泛应用于社交应用、企业关系分析、风控、推荐、反欺诈等具有丰富关系数据的场景。

由于关系型数据库和如GES的图数据库天然存在的异构性,将已有的关系型数据库中的数据存储至图数据库中仍存在较多的难点。本文借助Apache Hop及GES插件,提供了多数据源通用、可视化、开箱即用的数据转换工程,可将多种关系型数据库迁移至GES图数据库中。转换工作流复用度高,可通过输入不同的元数据文件与数据源连接,使转换工作流完成多个数据源的迁移任务。

支持的数据源

借助Apache Hop的能力,支持MySQL,PostgreSQL,Oracle,MS SqlServer等多种关系型数据库,具体列表参见:Database Plugins :: Apache Hop

数据要求

  1. 已经建立好GES图模型,属性名与表中的字段名相同
  2. 对单个标签来说,所有属性都在同一张表中
  3. 数据源中的数据符合图模型中对应数据类型的要求(如GES中date类型为yyyy-mm-dd hh:mm:ss,若数据源中的date类型不合要求,应在数据源转为相应格式的字符串类型)

节点唯一性问题

在图数据库中不允许存在两个索引值相同的节点,因此需要确保节点的全局唯一性,即节点id。通常情况下,可以将表中具有唯一性约束的字段,如表的主键映射为对应节点数据的id。在关系型数据库(如MySQL)中,不同的表属于不同的命名空间,即不同表中的主键可以相同的值。因此在这种情况下,需要改变相应的映射规则。如通过将表名与主键拼接的方式生成新的节点id,以确保节点的全局唯一性。

在转换过程中,需要将指定的id映射关系生成为以下格式的csv:标签名, 表名,节点id对应字段,终点id对应字段。此处若标签对应的是点数据,则终点id为空。

如在TPC-H数据集中,表数据转换为一条简单的关系及其起点终点,需要指明的信息如下:

  • 对于Order标签的节点,数据源中对应的表名为orders;采用主键o_orderkey作为节点id。
  • 对于Supplier标签的节点,数据源中对应的表名为supplier;采用主键s_suppkey作为节点id。
  • 对于supply标签的边,数据源中对应的表名为lineitem;起点为Supplier,对应表lineitem表中外键l_suppkey作为起点id;终点为Order,对应外键l_orderkey作为终点id。需要注意的是,边的起点与终点的id映射需要与对应标签的节点id映射对应,如例子中的lineitem表的外键l_suppkey对应的正是supplier表中的s_suppkey,它们的值为一一对应的关系。

cke_128.png

流程概述

cke_129.png

数据转换的主要思路是以csv文件格式为媒介,将关系型数据库中的数据按指定格式导出至csv文件中,导出数据借助华为云对象存储服务(OBS)上云,GES服务完成云端数据导入图实例。

cke_130.png

数据的格式转换发生在查询结果生成过程中,通过解析元数据与id映射文件,我们可以在动态生成的SQL语句的SELECT子句中指定查询结果的格式。将查询结果写入csv即可得到可以导入GES图实例的数据文件。

环境准备

Apache Hop

Apache Hop(Hop Orchestration Platform)是一个数据编排和数据工程平台,旨在促进数据和元数据编排的各个方面。Hop让您专注于您试图解决的问题,而不会有技术阻碍。

下载Apache Hop v2.4.0:Download - Hop

Apache Hop依赖JDK11,检查java版本,若不满足可按附件中《使用说明》配置:

cke_131.png

通过hop文件夹下hop-gui.bat进入gui操作界面

cke_132.png

加载GES插件

GES Plugin for Apache Hop是GES开发用于连接Hop工具的插件,用于将上传数据文件、将云端数据导入图实例等操作。

在附件中下载GES插件后,解压.zip文件,将hop-transform-ges文件夹放到Apache Hop文件夹./hop/pulgins/transforms下。

数据迁移

数据准备

本文以TPC-H数据集为例,对数据集中的部分数据建立如下图模型:

cke_133.png

对应的GES元数据文件如下,文件格式可参考:GES图的基本概念和数据格式

cke_134.png

节点id映射关系文件如下,使用”标签名_主键“的格式确保id唯一性:

cke_135.png

运行迁移工程

点击上方菜单栏新建项目:

cke_136.png

指定项目名称与项目主目录

cke_137.png

将工程文件拷贝到项目主目录,完成后项目主目录下文件如下图。其中.hpl与.hwf文件为定义好的hop转换规则文件,tpch.xml为GES元数据文件,tpch.csv为节点id映射关系文件。

cke_138.png

在gui界面中点击metadata->relational database connection,选择合适的关系型数据库类型,填入账号密码等信息。

cke_139.png

点击metadata->GES Connection,建立图连接,按.zip附件中说明文档填入账号密码等信息。

cke_140.png

点击项目详情,定义相关参数为项目变量:

cke_141.png

打开RelationalDB_to_GES.hwf:

cke_142.png

点击运行

cke_143.png

cke_144.png

数据转换结束,数据转换至对应路径下,共转换点边近3700万行,用时约200秒

cke_145.png

登录前端图访问页面,可以查询到导入数据,数据成功导入。

cke_146.png

 

点击关注,第一时间了解华为云新鲜技术~

 

与5分钟迁移关系型数据库到图数据库相似的内容:

5分钟迁移关系型数据库到图数据库

本文借助Apache Hop及GES插件,提供了多数据源通用、可视化、开箱即用的数据转换工程,可将多种关系型数据库迁移至GES图数据库中。

保姆教程系列:Git 实用命令详解

!!!是的没错,胖友们,保姆教程系列又更新了!!! @目录前言1.将本地项目推送到远程仓库2. Idea Git回退到某个历史版本3. 修改项目关联远程地址方法4. Git 修改分支的名称5. Git 删除分支6. master分支代码复制到新的分支7. Git迁移项目到其他代码仓库,且保留分支与提

5种GaussDB ETCD服务异常实例分析处理

摘要:一文带你细数几种ETCD服务异常实例状态。 本文分享自华为云社区《【实例状态】GaussDB ETCD服务异常》,作者:酷哥 。 首先确认是否是虚拟机、网络故障 虚拟机故障导致ETCD服务异常告警 问题现象 管控面上报etcd服务异常告警,虚拟机发生重启,热迁移、冷迁移,HA等动作。 问题分析

Karmada v1.5发布:多调度组助力成本优化

摘要:在最新发布的1.5版本中,Karmada 提供了多调度组的能力,利用该能力,用户可以实现将业务优先调度到成本更低的集群,或者在主集群故障时,优先迁移业务到指定的备份集群。 本文分享自华为云社区《Karmada v1.5发布!多调度组助力成本优化》,作者:华为云云原生团队。 Karmada 是开

[转帖]ESXi5.5升级到ESXi6.7

之前一直以为ESXi升级必须得 一个版本一个版本升级,不能跨版本,做了个实验结果证实从ESXi5.5可以升级到6.7。该实验是虚拟了一台ESXi上面并没有跑虚机,生产环境进行升级时,能将虚机迁移则迁移(就算升级失败大不了重装,不至于丢失数据)。 1、ESXi的介质分为两类,以6.7为例:VMware

5分钟了解LangChain的路由链

路由链(RouterChain)是由LLM根据输入的Prompt去选择具体的某个链。路由链中一般会存在多个Prompt,Prompt结合LLM决定下一步选择哪个链。

5分钟理透LangChain的Chain

LangChain几乎是LLM应用开发的第一选择,它的野心也比较大,它致力于将自己打造成LLM应用开发的最大社区。而LangChain最核心的部分非 Chain 莫属。

5分钟带你了解RabbitMQ的(普通/镜像)集群

通过本文我们深入了解了RabbitMQ的集群模式及其优缺点。无论是普通集群还是镜像集群,都有其适用的场景和局限性。普通集群利用Erlang语言的集群能力,但消息可靠性和高可用性方面存在一定挑战;而镜像集群通过主动消息同步提高了消息的可靠性和高可用性,但可能会占用大量网络带宽。因此,在选择集群方案时,...

5分钟明白LangChain 的输出解析器和链

本文介绍 LangChain 的输出解析器OutputParser的使用,和基于LangChain的LCEL构建链。 1. 输出解析器OutputParser 1.1、为什么需要OutputParser 常规的使用LangChain构建LLM应用的流程是:Prompt 输入、调用LLM 、LLM输出

5分钟教你搭建邮件服务器的实用指南

今天我写了一篇实用的文章,重点是教你如何免费搭建一个邮件服务器,这个服务器不仅可以用于发送邮件,还可以供我的待办机器人使用。一开始我试图找一些免费的 API 接口来实现这个功能,但遗憾的是,并没有找到合适的。对于程序员来说,能自己动手实现绝对是最好的选择,幸运的是,我有一台空闲的服务器可以利用。如果...