IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> datax关系/图数据库(neo4j)插件设计与实现 -> 正文阅读

[大数据]datax关系/图数据库(neo4j)插件设计与实现

背景

DataX是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQLOracle)HDFSHiveODPSHBaseFTP等各种异构数据源之间稳定高效的数据同步功能。解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

图库是属于newsql/nosql, 近几年应用火热的数据库类型,广泛用于金融风控,社交,制造等领域

datax没有实现图数据库相关插件,但datax提供很好的插件机制,可自行实现

参考和术语

ETL Extract-Transform-Load的缩写, 数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端

图数据库

datax原理介绍

?*官方图,Transport处是Channel,本人觉得不太准确,应为Transport

> 作业分解为任务,任务分组,最后调度器调度任务(组)

*作业分片和任务分组没有在高可用中

> 调度器负责分派资源执行任务(组),TaskEecutor执行任务

> transport包括数据交换(exchanger),数据转换(transformer),交换数据字节数/记录数的统计(channel)

关系/图数据库插件

架构设计

数据同步分3步

0. 模式(schema)转换构建,并输出,序列化或数据库持久

1. 表数据同步,datax表模式,schema表写入datax的表模式配置

2. 表关系同步,按表表连接图分组,一对关系一组,表连接关系生成querySql,写入写入datax的querySql模式配置

其中后两步DataX执行,作业驱动两个datax作业串行

关系(oracle)数据和图数据映射策略

这里展示的是oracle,mysql/sqlserver类似

映射策略,oracle<->neo4j

oracle schema

映射策略

neo4j schema

备注

/

/

/

/

? 名称

Lable

? 字段

/

/

没有直接映射,字段定义,名称/类型被其他映射参考

行数据

表一行数据映射为节点,表名映射为节点Label

节点

字段(值)

字段名/字段值

检查是否已存在,防止冗余字段

空值不处理

节点属性

连接表

连接表映射为关系,表名映射为关系的Label

关系

连接表需人工识别

? 字段(值)

同行数据字段

关系属性

索引

BTree

根据索引字段转换,单属性和复合属性,分3个情况:

  1. 外键字段? 转换为关系对应属性索引
  2. 连接表字段 字段转换为关系对应属性索引
  3. 其他字段,对应节点属性索引

节点属性索引

关系属性索引

约束映射后

Hash

/

/

无适合映射

neo4j lookup index按理解对应hash或位图,v4.3的特性

位图

/

/

约束

主键

/

/

没有特别处理,主键字段按一般字段处理,转换为节点或关系属性;

增加属性唯一约束

外键

若是连接表外键不处理

映射为关系,名称映射为关系Label

关系

唯一

属性唯一约束

非空

属性存在约束

检查

/

/

无对应映射

默认

/

/

无对应映射

*oracle模型注释没有合适映射

*neo4j索引还有以下特性,oracle没有对应特性转换:

1. 提供者(provider),索引的技术实现, 如,native-btree-1.0 and lucene+native-3.0

2. text ?index

lookup ?index(since v4.3)

full-text ?index

详细设计

schema转换组件(schema-transformer)

  • schema模型

?模式转换设计

?schema转换器以图方式遍历schema,遍历到组件获取对应的映射器,映射为neo4j的schema

mapping组件封装转换策略,参考关系(oracle)数据和图数据映射策略

数据同步(data-transformer)组件

驱动两个datax作业

1. 第一个作业,表数据同步,datax table模式, schema的表写入datax的table模式配置;同时支持用户配置表,特别地,当用户配置单个表是,可使用datax的单表分片特性,该特性用于针对数据量超大的表

2. 第二个作业,表关系同步,按表连接图分组,一对关系一组,表连接关系生成querySql,写入datax的querySql模式配置

工程解释

  • 工程结构

  • scanner

数据库schema扫描,目前只有关系数据库 scanner;关系数据库schema模型

  • transformer

这里的transformer是模式的转换,并非datax的转换器,datax的转换器是record转换

  • common

定义record实现,TableRecord和RelRecord,派生自Record,分表对应表同步和关系同步

  • mysqlreader4graph/oraclereader4graph/rdbms-utils

mysqlreader4graph/oraclereader4graph 与datax自带没有什么变化

rdbms-utils 主要改动地方,OriginalConfPretreatmentUtil结合schema写入table/querySql配置

  • neo4jWriter

接收两阶段record,TableRecored和RelRecord,构造neo4j query,

  • neo4jDao

record动态的,只有使用原生的Driver,支持参数化,事务; 重试

  • rdb2graph-datax

主入口,串行驱动连个datax engine

demo

本节展示如何使用组件转换关系数据到neo4j,使用mysql的sakila库作为示例

?扫描数据库/设置连接表

扫描器扫描出数据库的schema,包括表元数据,字段元数据,约束和索引,

扫描没有识别那些表是连接表,需要扫描后处理

SchemaSerTest

?schema转换

代码来自SchemaTransformerTest

两个api,传入数据源转换;传入schema转换

其中,第一种适合不需要连接表后处理的情况

  1. 数据同步

同步分两阶段,表行数据同步和表关系同步

?另有,file_actor和file_category是连接表,转换为关系

?关系,其中file_category和file_actor是连接表转成关系

效果

关系

??索引和约束

源码

datax关系/图数据库插件-Java文档类资源-CSDN下载

?附录

  • datax job配置

table模式或querySql模式

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:42:19  更:2022-05-18 17:43:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:51:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码