美文网首页数据库同步
小程聊微服务-数据抽取那点事(二)

小程聊微服务-数据抽取那点事(二)

作者: 小程故事多 | 来源:发表于2017-08-03 08:50 被阅读229次

    一、什么是ETL

    ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,这里介绍一个ETL工具Kettle,这个工具很强大,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现。

    二、Kettle概念

    Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
    Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
    Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
    Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

    Kettle可以在http://kettle.pentaho.org/网站下载。

    三、Kettle的使用

    要实现实时的增量更新共有两种方法:

    1、通过触发器。
    在要抽取的表上建立需要的触发器,一般要建立插入、修改、删除三个触发器,每当源表中的数据发生变化,就被相应的触发器将变化的数据写入一个临时 表,抽取线程从临时表中抽取数据,临时表中抽取过的数据被标记或删除。触发器方式的优点是数据抽取的性能较高,缺点是要求业务表建立触发器,对业务系统有 一定的影响。

    2.通过时间戳。
    可以在两边数据库的表里插入了一列(用来取数据变动时的时间),然后做个计划任务,设置每隔多少时间跑一次kettle,就行了。要实现“实时”,就只能把时间间隔设小一点。

    • 通过时间戳方式

    利用kettle工具,通过时间戳完成某表实时的增量更新。
    利用模块完成即可,如下简图:

    image.png

    准备一个实验环境:
    准备基本完成如下效果:
    select t.*, t.rowid from EMP_ETL t

    image.png

    编写时间戳ktr转换过程,把原表中最大的hiredate作为变量,如下图:

    image.png

    下面在“表输入”环节中,使用传递过来的${MAXSJ}作为条件,完成向目标表插入数据,简要流程如下:

    image.png

    执行转换,完成数据插入,简图如下:

    image.png

    最后利用kettle形成的整体数据流如下图所示:


    image.png

    下一篇文章,我将重点介绍基于Oracle的双活方案

    相关文章

      网友评论

        本文标题:小程聊微服务-数据抽取那点事(二)

        本文链接:https://www.haomeiwen.com/subject/acwdlxtx.html