数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。数据集成的方式多种多样,这里介绍的 Teiid 是其中的一种:通过抽象和联邦技术,实现分布式数据源的实时数据访问和集成,无需从记录系统中复制或移动数据。

链接是一篇关于 Teiid 的中文介绍,比较详细。

由于适配不同数据源和生成虚拟数据库(VDB)需要维护好几个配置文件,直接手动部署 Teiid 比较难受。好在 Teiid 提供了辅助工具 Teiid Designer,这是一个 Eclipse 插件,能帮助用户可视化的管理数据的集成过程。

  • 安装配置

    参见官网的 Downloads 界面的详细介绍(注意:环境配置中,各组件需严格遵循官网指定版本,实践经验表明,Teiid 本身并不够鲁棒,容不得小差错)。

接下来,我们用一个简单的应用场景实践 Teiid 的数据集成功能。

应用场景

书店主营图书销售,并维护者一个用户对图书评价的数据库。技术上说,书店拥有三个数据模块:

  • MySQL 数据库,存储用户信息和用户对某书的评价

    表结构如下:

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  1. create database library;
  2. use library;
  3. create table users (
  4. id int primary key,
  5. name char(20) not null,
  6. passwd char(20)) not null,
  7. );
  8. create table comments(
  9. cid int primary key,
  10. uid int ,
  11. bookid int not null,
  12. content char(255),
  13. foreign key (uid) references users(id)
  14. );
  • EXCEL 表格,店主用于记录销售量、记录销售单价
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  1. book_id,price,sales
  2. 1,89.00,1000
  3. 2,52.00,9999
  4. 3,30.00,10000
  5. 4,9800,5555
  6. 5,69.00,1234
  • XML 文件记录书籍信息,包括
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  1. <?xml version= "1.0" encoding ="UTF-8"?>
  2. <BooksInfo>
  3. <Book id = "1" >
  4. <Title> Hadoop: The Definitive Guide </Title>
  5. <Author> Tom White</Author >
  6. <publisher> O'Reilly</ publisher>
  7. </Book>
  8. <Book id = "2" >
  9. <Title> Effective Java</Title >
  10. <Autorh> Joshua Bloch</Autorh>
  11. <publisher> HZ Books</ publisher>
  12. </Book>
  13. <Book id = "3" >
  14. <Title> C Programming Language</Title >
  15. <Autorh> Kernighan, Ritchie </Autorh>
  16. <publisher> HZ Books</ publisher>
  17. </Book>
  18. <Book id = "4" >
  19. <Title> Head First: Design Pattern</Title >
  20. <Autorh> Freeman</ Autorh>
  21. <publisher> Turning Education</publisher >
  22. </Book>
  23. <Book id = "5" >
  24. <Title> Refactoring: Improving the Design of Existing Code </Title>
  25. <Autorh> Martin Fowler </Autorh>
  26. <publisher> O'Reilly</ publisher>
  27. </Book>
  28. </BooksInfo>

实践

1.创建工程

打开配置好 Teiid Designer 插件的 Eclipse,在 Teiid Designer 视图的 Guides 中,找到 Define Teiid Model Project 选项,如下图:

一路点击 next,在如下界面勾选 sources 和 views 即可,designer guid 会帮助生成这两个目录,其他目录在此项目中不需要。

2.导入 MyQL 数据源

在 Guides 界面,选择 JDBC 数据源

第一个步骤 Define Teiid Model Project 在上一步中已经完成了,现在需要创建一个 JDBC 链接,选择 Create JDBC connection,在弹出的窗口中,选择 Mysql 数据库,然后点下一步

选择 mysql 驱动,配置好 Mysql 数据源的的 url、用户名、密码,点下一步。(在这里,mysql 的端口为默认的 3306,library 为之前配置好的 mysql 数据库)。点击 test connection 测试与 mysql 的链接能否建立。

接下来需要给数据源创建源模型(source model)了。同样在 Guides 试图上双击 Create source model for JDBC data source,一路下一步,直到选择数据库和表,选择 library 数据库中的所有表,如下图:

创建源模型的最后一步如下图,可以自定义 Model Name,为了让之后的 sql 查询过程更可读,我将以数据源类型命名它(mysql.xmi)。其他无关配置暂时不用理会。

finish 后,就生成了一个元模型,如下图。图中可视化的显示了数据库所建的两张表

接下来可以测试数据是否可读,双击 Guides 中的 Preview Data,在弹框中选择需要 preview 的表或者 precedure(procedure 在本工程里这里不会被用到)查询结果显示在了 eclipse 下方的 SQL Result 框中,如下图:

接下先来不用着急 Define VDB,我们先把所有数据源配置完成后再一起来定义虚拟数据库。

3.导入 FlatFile 数据源(CSV)

跟之前一个步骤一样,只需要沿着 Guides 里的路线一步一步操作。

首先创建连接,配置好后 test connection 确保链接无误

链接建立后,需要创建元模型。如下图,提示有错,只需要选定 Source Model Definition 的文件的存储位置即可。存放在项目的 sources 目录中

按照默认配置,不断下一步,在 Flat File Demilited Columns Parser Settings 这一步,可以注意到下方有生成一串 SQL 语句。这些语句告诉 Teiid 需要如何将 csv 文件中的数据映射为关系型数据。

继续下一步,view model definition 界面,提示创建的 tableview 名字包含不合法字符。原来由于将 flat file 命名为 sales.csv,它自动生成了 price.csvView 作为 table name,但名字中是不能出现.的,于是修改为 salesview,finish。

之后测试数据能否读取。在选择所要 preview 的数据时,需要选择相应的 table,而不是模型(这里需要选择 salesView,而不是上层的 price_view.xmi)。如下图:

4.导入 xml 数据

大部分步骤跟之前的步骤类似,在设定源模型时,需要注意配置好 xml 数据到关系型数据的映射关系,如下图:

XML File Contents 中会根据 xml 文件中的数据解析出整体的层次结构。我们需要将其中的 Book 里的信息,添加到右边的 Column Info 中。虽然有很多 Book 数据列表显示在左边一栏里,但实际上只需要添加一次相关信息到右边的列信息中。值得注意的是,这里自动生成的 Root Path 是错误的,需要修改为 BooksInfo/Book。其他没有什么特别的,一路下一步。

现在整个项目如下图:

5.生成虚拟数据库

点击 Guides 中的 Define VDB,将三个数据源的模型加入到 VDB 中:MySQL 的源模型,XML 和 CSV 的视图模型(注意:不可以加入另外两个源模型的 xmi 文件,博主如此操作后遇到了一些莫名其妙的问题)。

如此就完成了在 Teiid Designer 中的多数据源集成的配置了。

6.部署和使用

通过 Teiid Designer,我们能方便的部署 VDB 到 Jboss 服务器。

在 Guides 界面下,有 execute vdb 选项,双击即可。正式运行之前,需要运行 Jboss server,如果没有启动服务器,Teiid Designer 会弹框提醒的。

最后,尝试一下通过 Teiid 集成查询多个数据源。将 sql 语句输入到执行框中,刷蓝->右键->执行选中的语句。

  1. 1
  1. > select * from "csv"."sales" as A join "xml"."booksinfo" as B on A.book_id = B.id

结果如图:

 原文地址:http://biaobiaoqi.me/blog/2013/10/19/data-integration-tool-teiid/
 版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0

数据集成工具:Teiid实践的更多相关文章

  1. 数据集成工具Teiid Designer的环境搭建

    由于实验室项目要求的关系,看了些数据汇聚工具 Teiid 的相关知识.这里总结下 Teiid 的可视化配置工具 Teiid Designer 的部署过程. 背景知识 数据集成是把不同来源.格式.特点性 ...

  2. 数据集成工具Kettle、Sqoop、DataX的比较

    数据集成工具很多,下面是几个使用比较多的开源工具. 1.阿里开源软件:DataX         DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).H ...

  3. 数据集成工具—Sqoop

    数据集成/采集/同步工具 @ 目录 数据集成/采集/同步工具 Sqoop简介 Sqoop安装 1.上传并解压 2.修改文件夹名字 3.修改配置文件 4.修改环境变量 5.添加MySQL连接驱动 6.测 ...

  4. 数据集成工具—FlinkX

    @ 目录 FlinkX的安装与简单使用 FlinkX的安装 FlinkX的简单使用 读取mysql中student表中数据 FlinkX本地运行 MySQLToHDFS MySQLToHive MyS ...

  5. 【ODI】| 数据ETL:从零开始使用Oracle ODI完成数据集成(一)

    0. 环境说明及软件准备 ODI(Oracle Data Integrator)是Oracle公司提供的一种数据集成工具,能高效地实现批量数据的抽取.转换和加载.ODI可以实现当今大多数的主流关系型数 ...

  6. 打造实时数据集成平台——DataPipeline基于Kafka Connect的应用实践

    导读:传统ETL方案让企业难以承受数据集成之重,基于Kafka Connect构建的新型实时数据集成平台被寄予厚望. 在4月21日的Kafka Beijing Meetup第四场活动上,DataPip ...

  7. 阿里云DataWorks实践:数据集成+数据开发

    简介 什么是DataWorks: DataWorks(数据工场,原大数据开发套件)是阿里云重要的PaaS(Platform-as-a-Service)平台产品,为您提供数据集成.数据开发.数据地图.数 ...

  8. 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化

    背景 字节跳动开发套件数据集成团队(DTS ,Data Transmission Service)在字节跳动内基于 Flink 实现了流批一体的数据集成服务.其中一个典型场景是 Kafka/ByteM ...

  9. DataPipeline在大数据平台的数据流实践

    文 | 吕鹏 DataPipeline架构师 进入大数据时代,实时作业有着越来越重要的地位.本文将从以下几个部分进行讲解DataPipeline在大数据平台的实时数据流实践. 一.企业级数据面临的主要 ...

随机推荐

  1. POJ 1064 Cable master 浮点数二分

    http://poj.org/problem?id=1064 题目大意: 有N条绳子,他们的长度分别为Li,如果从它们中切割出k条长度相同的绳子的话,这K条绳子每条能有多长? 思路: 二分,设答案为m ...

  2. LA 3989 - Ladies' Choice 稳定婚姻问题

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  3. ThinkPHP视图查询

    ThinkPHP视图查询 一.总结 1.这里的视图查询和多表查询很像,当然多表查询的话肯定要支持左右链接查询 2.view:视图的使用,关键字是view 3.sql视图功能支持:thinkphp支持视 ...

  4. Linux 下配置 Python IDE——Emacs

    工欲善其事,必先利其器.Python作为高级语言,因为其简介.灵活已经被越来越多的程序员所青睐.在尝试了众多IDE之后,终于找到了自己的挚爱.废话少说,下面开始说一下如何在linux下安装配置Emac ...

  5. 【record】11.14..11.20

    balabala

  6. Swift入坑系列—集合类型

    数组(Arrays) 字典(Dictionaries) 数组(Arrays) 在OC里面,NSArray和NSMutableArray这两个类可以存储任意类型的对象,并且不提供所返回对象的任何特别信息 ...

  7. php 微信支付企业付款

    1.所需参数 字段名 变量名 必填 示例值 类型 描述 公众账号appid mch_appid 是 wx8888888888888888 String 公众号的appId 商户号 mchid 是 19 ...

  8. Opencv Sift算子特征提取与匹配

    SIFT算法的过程实质是在不同尺度空间上查找特征点(关键点),用128维方向向量的方式对特征点进行描述,最后通过对比描述向量实现目标匹配. 概括起来主要有三大步骤: 1.提取关键点: 2.对关键点附加 ...

  9. Android 实现限制EditText输入文字的数量

    前段时间比较忙 没来的及时分享出来.需求是这样的要求用户只能输入12个字符或者6位中文的数据:作为一个菜鸟遇到这样的问题第一反应就是 Android:maxLength="12"这 ...

  10. Navigation Pane不能设置显示标题

    https://msdn.microsoft.com/VBA/Word-VBA/articles/view-showheading-method-word https://social.msdn.mi ...