5分钟迁移关系型数据库到图数据库
本文分享自华为云社区《5分钟迁移关系型数据库到图数据库》,作者: RiverSide 。
以往开发者会使用关系型数据库如MySQL对领域数据进行存储,这类关系型数据库诞生较早,但并不适合存储关联度较大的数据,如社交关系网络。随着高关联度数据的存储及分析的需求随数据量日益增长,将海量关联数据存入图数据库中进行深度挖掘分析是大势所趋。华为云图引擎服务(Graph Engine Service)是国内首个商用的、拥有自主知识产权的国产分布式原生图引擎。广泛应用于社交应用、企业关系分析、风控、推荐、反欺诈等具有丰富关系数据的场景。
由于关系型数据库和如GES的图数据库天然存在的异构性,将已有的关系型数据库中的数据存储至图数据库中仍存在较多的难点。本文借助Apache Hop及GES插件,提供了多数据源通用、可视化、开箱即用的数据转换工程,可将多种关系型数据库迁移至GES图数据库中。转换工作流复用度高,可通过输入不同的元数据文件与数据源连接,使转换工作流完成多个数据源的迁移任务。
支持的数据源
借助Apache Hop的能力,支持MySQL,PostgreSQL,Oracle,MS SqlServer等多种关系型数据库,具体列表参见:Database Plugins :: Apache Hop
数据要求
- 已经建立好GES图模型,属性名与表中的字段名相同
- 对单个标签来说,所有属性都在同一张表中
- 数据源中的数据符合图模型中对应数据类型的要求(如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,它们的值为一一对应的关系。
流程概述
数据转换的主要思路是以csv文件格式为媒介,将关系型数据库中的数据按指定格式导出至csv文件中,导出数据借助华为云对象存储服务(OBS)上云,GES服务完成云端数据导入图实例。
数据的格式转换发生在查询结果生成过程中,通过解析元数据与id映射文件,我们可以在动态生成的SQL语句的SELECT子句中指定查询结果的格式。将查询结果写入csv即可得到可以导入GES图实例的数据文件。
环境准备
Apache Hop
Apache Hop(Hop Orchestration Platform)是一个数据编排和数据工程平台,旨在促进数据和元数据编排的各个方面。Hop让您专注于您试图解决的问题,而不会有技术阻碍。
下载Apache Hop v2.4.0:Download - Hop
Apache Hop依赖JDK11,检查java版本,若不满足可按附件中《使用说明》配置:
通过hop文件夹下hop-gui.bat进入gui操作界面
加载GES插件
GES Plugin for Apache Hop是GES开发用于连接Hop工具的插件,用于将上传数据文件、将云端数据导入图实例等操作。
在附件中下载GES插件后,解压.zip文件,将hop-transform-ges文件夹放到Apache Hop文件夹./hop/pulgins/transforms下。
数据迁移
数据准备
本文以TPC-H数据集为例,对数据集中的部分数据建立如下图模型:
对应的GES元数据文件如下,文件格式可参考:GES图的基本概念和数据格式
节点id映射关系文件如下,使用”标签名_主键“的格式确保id唯一性:
运行迁移工程
点击上方菜单栏新建项目:
指定项目名称与项目主目录
将工程文件拷贝到项目主目录,完成后项目主目录下文件如下图。其中.hpl与.hwf文件为定义好的hop转换规则文件,tpch.xml为GES元数据文件,tpch.csv为节点id映射关系文件。
在gui界面中点击metadata->relational database connection,选择合适的关系型数据库类型,填入账号密码等信息。
点击metadata->GES Connection,建立图连接,按.zip附件中说明文档填入账号密码等信息。
点击项目详情,定义相关参数为项目变量:
打开RelationalDB_to_GES.hwf:
点击运行
数据转换结束,数据转换至对应路径下,共转换点边近3700万行,用时约200秒
登录前端图访问页面,可以查询到导入数据,数据成功导入。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GaussDB(for Redis)多租户:读写权限控制和数据库隔离的完美融合
本文分享自华为云社区《GaussDB(for Redis)企业级特性揭秘之多租户管理》,作者: GaussDB 数据库 。 华为云GaussDB(for Redis)持续完善企业级增强特性,是名副其实的"Redis Plus",其中很经典的企业级特性是多租户能力,支持添加只读账号、读写账号,并且可约束每个账号可访问的数据库(DB)范围,避免误操作其他租户数据。该特性可以帮助企业在共享Redis实例的情况下,保护不同租户的数据安全,为企业的开发和管理提供便利。 哪些用户需要使用租户管理功能? 多租户是数据库用户刚需的一个功能,例如,企业中有两个业务部门A和B,他们都需要使用Redis来存储自己的数据,如果不使用多租户权限功能,那么A和B的数据就会混在一起,这样就会存在数据泄露和误操作的风险。一旦使用了多租户管理功能,就可以将A和B的数据分别存储在不同的Redis实例/DB中,并且对这些实例/DB进行权限控制,从而保障数据的安全性和可靠性。 在数据库领域,多租户技术往往有以下一些标准属性:比如读写权限控制、跨DB鉴权隔离等等;而GaussDB(for Redis)就是具备完善的多租户管理技...
- 下一篇
数仓现网案例丨超大结果集接收异常
本文分享自华为云社区《GaussDB(DWS)现网案例之超大结果集接收异常》,作者:你是猴子请来的救兵吗 。 问题背景 内核版本GaussDB 8.1.3 问题描述用户使用数据库客户端工具如navicat、dbeaver等执行查询语句异常中断,中断信息"Last read message sequence %d is not equal to the max written message sequence %d" 问题定位 客户端异常中断后有些错误信息时不感知的,此时topsql就派上了用场。历史topsql记录了查询作业运行结束时的资源使用情况(包括内存、下盘、CPU时间等)和运行状态信息(包括报错、终止、异常等)以及性能告警信息。而对于由于FATAL、PANIC错误导致查询异常结束时,状态信息列只显示aborted,无法记录详细异常信息。 1,此时我们通过历史topsql查询视图查询语句执行情况 --当前CN select * from GS_WLM_SESSION_HISTORY; --所有CN select * from PGXC_WLM_SESSION_H...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块