数据集成工具:Teiid实践

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

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

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

  • 安装配置

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

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

应用场景

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

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

    表结构如下:

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

实践

1.创建工程

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

数据集成工具:Teiid实践_第1张图片

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

数据集成工具:Teiid实践_第2张图片

2.导入 MyQL 数据源

在 Guides 界面,选择 JDBC 数据源

数据集成工具:Teiid实践_第3张图片

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

数据集成工具:Teiid实践_第4张图片

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

数据集成工具:Teiid实践_第5张图片

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

数据集成工具:Teiid实践_第6张图片

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

数据集成工具:Teiid实践_第7张图片

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

数据集成工具:Teiid实践_第8张图片

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

数据集成工具:Teiid实践_第9张图片

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

3.导入 FlatFile 数据源(CSV)

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

数据集成工具:Teiid实践_第10张图片

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

数据集成工具:Teiid实践_第11张图片

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

数据集成工具:Teiid实践_第12张图片

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

数据集成工具:Teiid实践_第13张图片

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

数据集成工具:Teiid实践_第14张图片

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

数据集成工具:Teiid实践_第15张图片

4.导入 xml 数据

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

数据集成工具:Teiid实践_第16张图片

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

现在整个项目如下图:

数据集成工具:Teiid实践_第17张图片

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
> select * from "csv"."sales" as A join "xml"."booksinfo" as B on A.book_id = B.id 

结果如图:

数据集成工具:Teiid实践_第18张图片

你可能感兴趣的:(数据)