在微服务中使用ETL

从微服务到ETL

当单片系统向微服务架构演变过程中,新服务产生的数据很可能会和遗留系统数据产生相耦合,但是由于数据库相互独立,所以怎么保证遗留系统的和新系统的数据一致性,成为影响遗留系统可用性的关键问题。

什么是ETL?1

ETL (Extract, Transform and Load) 用于多系统之间的数据集成,按照定义分为三部分:

  • 数据提取:从相同或者不同数据源提取数据。
  • 数据转换:为了查询和分析数据,将其转化并存储成为适合的格式
  • 数据回灌:把数据上传至最终的目标(数据库)

数据提取

作为ETL的第一部分,它包含了源数据的提取,这些源数据包含关系型数据库、非关系型数据库xml、csv等,一般来说提取的目的是为了数据转换,把数据存储单一的格式。

在数据的提取阶段,还包括了数据的验证,判断某些数据是否需要从数据源中抽取出来。

数据转化

在数据转化阶段,有些数据需要根据业务和技术的需求,采用一定的规则和方法进行转化。比如:

  • 只选择需要的字段,并忽略空数据
  • 翻译数据内容
  • 对内容进行编码
  • 根据公式重计算数据
  • 为了搜索效率重新排序
  • 合并数据,减少冗余
  • 合计数据
  • 生成代理键值
  • 行列转换
  • 拆分列
  • 合并重复列
  • 从其他表中查找相关数据

数据回灌

数据的回灌目标可以是限定的文件或者数据仓库,数据回灌的频率也取决于不同的业务需求。

ETL实践的生命周期

  • 构建基准数据
  • 提取数据
  • 数据验证
  • 数据转化
  • 回灌测试环境
  • 测试数据审计报告
  • 回灌生产环境
  • 数据存档

ETL如何落地?

使用ETL可视化工具 2

常见的工具有:

  • Oracle Warehouse Builder (OWB)
  • Oracle Data Integrator (ODI)
  • IBM Infosphere Information Server

开源的工具有:

  • Talend Studio for Data Integration,
  • CloverETL
  • Pentaho Data Integration

使用工具的好处

  • 美观的可视化界面
  • 自动生成可维护的代码
  • 代码版本控制
  • 定制转化非常简单
  • 提供元数据支持
  • 转化和部署速度快
  • debug容易

使用工具的缺点

  • 价格成本高
  • 受限于使用者对工具的了解程度
  • 可优化性受限

自定义开发ETL

kiba3, 定义了一套数据extract, transform, load的框架,可以根据自己需要编写ETL脚本。

自定义开发ETL好处

  • 价格成本低
  • 代码可维护性高
  • 自由度大

自定义开发ETL缺点

  • 需要开发成本
  • debug困难
  • 发布周期长

如何使用Talent

Talent, 易安装、跨平台、基于eclipse,操作体验好。所以本文通过Talent,来介绍可视化ETL工具。

  • 安装Talend Studio for Data Integration 4
下载地址:https://sourceforge.net/projects/talend-studio/
  • 下载完成后解压,根据系统打开可执行文件。(支持windows, MacOS, Linux, BSD)

  • 从数据库到xml

    • 新建一个job design
    • 从右侧拖拽一个tMysqlInput,选择要提取的数据库和表名
    • 从右侧拖拽一个tAdvancedFileOutputXML, 设置其保存路径。
    • 双击xml图标,设置xml的结构,以及循环元素
    • 把需要提取的schema内容加入循环元素
    • 执行job
  • 从数据库到数据库

    • 新建一个job design
    • 从右侧拖拽一个tMysqlInput,选择要提取的数据库和表名
    • 从右侧拖拽一个tMysqlOutput, 设置目标数据库的表名。

    • 编辑schema,可以自动同步两个数据库相同的column

    • 执行job

以上

  1. https://en.wikipedia.org/wiki/Extract,_transform,_load 

  2. https://www.etltool.com 

  3. https://github.com/thbar/kiba 

  4. https://www.youtube.com/watch?v=525Sgwd-9o8