数据集成工具:Teiid实践
数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。数据集成的方式多种多样,这里介绍的 Teiid 是其中的一种:通过抽象和联邦技术,实现分布式数据源的实时数据访问和集成,无需从记录系统中复制或移动数据。
链接是一篇关于 Teiid 的中文介绍,比较详细。
由于适配不同数据源和生成虚拟数据库(VDB)需要维护好几个配置文件,直接手动部署 Teiid 比较难受。好在 Teiid 提供了辅助工具 Teiid Designer,这是一个 Eclipse 插件,能帮助用户可视化的管理数据的集成过程。
安装配置
参见官网的 Downloads 界面的详细介绍(注意:环境配置中,各组件需严格遵循官网指定版本,实践经验表明,Teiid 本身并不够鲁棒,容不得小差错)。
接下来,我们用一个简单的应用场景实践 Teiid 的数据集成功能。
应用场景
书店主营图书销售,并维护者一个用户对图书评价的数据库。技术上说,书店拥有三个数据模块:
MySQL 数据库,存储用户信息和用户对某书的评价
表结构如下:
1 |
|
- EXCEL 表格,店主用于记录销售量、记录销售单价
1 |
|
- XML 文件记录书籍信息,包括
1 |
|
实践
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 |
|
结果如图:
原文地址:http://biaobiaoqi.me/blog/2013/10/19/data-integration-tool-teiid/
版权声明:自由转载-非商用-非衍生-保持署名| Creative Commons BY-NC-ND 3.0
数据集成工具:Teiid实践的更多相关文章
- 数据集成工具Teiid Designer的环境搭建
由于实验室项目要求的关系,看了些数据汇聚工具 Teiid 的相关知识.这里总结下 Teiid 的可视化配置工具 Teiid Designer 的部署过程. 背景知识 数据集成是把不同来源.格式.特点性 ...
- 数据集成工具Kettle、Sqoop、DataX的比较
数据集成工具很多,下面是几个使用比较多的开源工具. 1.阿里开源软件:DataX DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).H ...
- 数据集成工具—Sqoop
数据集成/采集/同步工具 @ 目录 数据集成/采集/同步工具 Sqoop简介 Sqoop安装 1.上传并解压 2.修改文件夹名字 3.修改配置文件 4.修改环境变量 5.添加MySQL连接驱动 6.测 ...
- 数据集成工具—FlinkX
@ 目录 FlinkX的安装与简单使用 FlinkX的安装 FlinkX的简单使用 读取mysql中student表中数据 FlinkX本地运行 MySQLToHDFS MySQLToHive MyS ...
- 【ODI】| 数据ETL:从零开始使用Oracle ODI完成数据集成(一)
0. 环境说明及软件准备 ODI(Oracle Data Integrator)是Oracle公司提供的一种数据集成工具,能高效地实现批量数据的抽取.转换和加载.ODI可以实现当今大多数的主流关系型数 ...
- 打造实时数据集成平台——DataPipeline基于Kafka Connect的应用实践
导读:传统ETL方案让企业难以承受数据集成之重,基于Kafka Connect构建的新型实时数据集成平台被寄予厚望. 在4月21日的Kafka Beijing Meetup第四场活动上,DataPip ...
- 阿里云DataWorks实践:数据集成+数据开发
简介 什么是DataWorks: DataWorks(数据工场,原大数据开发套件)是阿里云重要的PaaS(Platform-as-a-Service)平台产品,为您提供数据集成.数据开发.数据地图.数 ...
- 字节跳动流式数据集成基于Flink Checkpoint两阶段提交的实践和优化
背景 字节跳动开发套件数据集成团队(DTS ,Data Transmission Service)在字节跳动内基于 Flink 实现了流批一体的数据集成服务.其中一个典型场景是 Kafka/ByteM ...
- DataPipeline在大数据平台的数据流实践
文 | 吕鹏 DataPipeline架构师 进入大数据时代,实时作业有着越来越重要的地位.本文将从以下几个部分进行讲解DataPipeline在大数据平台的实时数据流实践. 一.企业级数据面临的主要 ...
随机推荐
- Linux动态链接库的创建与使用
Linux动态链接库的创建与使用1. 介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数 ...
- Internet连接共享只能上qq不能打开网页的问题解决
作者:朱金灿 来源:http://blog.csdn.net/clever101 之前我写过一篇<Windows共享上网的做法>,在设置共享网络时是有一个家庭网络连接的选项的,如下图: 但 ...
- vue学习笔记三:常见的表单绑定
<template> <div id="app"> <input type="checkbox" id="checked ...
- POJ 1258 Agri-Net|| POJ 2485 Highways MST
POJ 1258 Agri-Net http://poj.org/problem?id=1258 水题. 题目就是让你求MST,连矩阵都给你了. prim版 #include<cstdio> ...
- Access Violations 访问冲突(AVs)是Windows编程时发生的最麻烦的错误?
Access Violations<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office&qu ...
- .NET Framework基础知识(五)(转载)
.程序集:是 .NET Framework 应用程序的构造块:程序集构成了部署.版本控制.重复使用.激活范围控制和 安全权限的基本单元. .程序集的优点:版本控制问题.最终解决DLL冲突 .程序集分为 ...
- iconv简介(1、字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2、编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有linux等)
iconv简介(1.字符串|文件字符转换:iconv用于将一种已知的字符集文件转换成另一种已知的字符集文件)(2.编程语言函数功能的相似性:iconv不仅再php中有用,而且c语言中也有用,还有lin ...
- thinkphp3.1的验证码
代码中写 public function verify(){ import('ORG.Util.Image'); ob_clean(); Image::buildImageVerify(); } ht ...
- 前端js实现打印excel表格
产品原型: 图片.png 功能需求:点击导出考勤表格按钮,会自动下载成Excel格式 图片.png 图片.png jsp页面代码: <div class="tools"> ...
- 【u211】编码
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 假设phi(W)得到是按照以下算法编码后的结果: 1. 如果W的长度为1那么phi(W)即为W: 2. ...