参考文档
引言
Teiid 可以让你用 JDBC + SQL 来访问企业的任何数据,并可对这些不同源的数据进行联合查询。
环境准备
- 操作系统:Windows 7 x64
- JDK版本:jdk1.8.0_11
- Teiid Server:teiid-9.3.5-wildfly-server.zip
- IDE工具:Eclipse Neon Release (4.6.0)
- Eclipse插件:JBOSS TOOLS
- Eclipse插件:Teiid Designer 11.0.1
Teiid Server安装
下载并安装JDK
建议下载安装Java 7以上,这里装的是jdk1.8.0_11。
下载并安装Teiid Server
- 下载安装的是集成wildfly的版本:teiid-9.3.5-wildfly-server.zip
- 下载后解压至C:\teiid-9.3.5,路径名不要有空格,所以不要装在Program Files中
- 命令行运行cd,进入Teiid安装目录的bin文件夹,比如:cd C:\teiid-9.3.5\bin
安装Teiid独立模式服务器,运行standalone.bat和jboss-cli.bat
启动服务器,运行:
12C:\Users\Administrator>cd C:\teiid-9.3.5\binC:\teiid-9.3.5\bin>standalone.bat接着打开另一个命令窗口,运行:
123C:\Users\Administrator>cd C:\teiid-9.3.5\binC:\teiid-9.3.5\bin>jboss-cli.bat --connect --file=scripts/teiid-standalone-mode-install.cliC:\teiid-9.3.5\bin>add-user.bat
5. 创建Teidd服务器admin用户和应用用户,运行add-user.bat
创建admin用户:
12345678910111213141516171819
C:\teiid-9.3.5\bin>add-user.batWhat type of user do you wish to add?a) Management User (mgmt-users.properties)b) Application User (application-users.properties)(a): aEnter the details of the new user to add.Using realm 'ManagementRealm' as discovered from the existing property files.Username : adminThe username 'admin' is easy to guessAre you sure you want to add user 'admin' yes/no? yesPassword :Re-enter Password :What groups do you want this user to belong to? (Please enter a comma separated list,or leave blank for none)[ ]:About to add user 'admin' for realm 'ManagementRealm'Is this correct yes/no? yesIs this new user going to be used for one AS process to connect to another AS process?yes/no? no
创建应用用户:
1234567891011121314151617
C:\teiid-9.3.5\bin>add-user.batWhat type of user do you wish to add?a) Management User (mgmt-users.properties)b) Application User (application-users.properties)(a): bEnter the details of the new user to add.Using realm 'ApplicationRealm' as discovered from the existing property files.Username : userPassword :Re-enter Password :What groups do you want this user to belong to? (Please enter a comma separated list,or leave blank for none)[ ]: odataAbout to add user 'user' for realm 'ApplicationRealm'Is this correct yes/no? yesIs this new user going to be used for one AS process to connect to another AS process?yes/no? no
或者,可以直接快速创建:
12345
C:\teiid-9.3.5\bin>add-user.bat -a -u dashboardAdmin -p password1! -g adminC:\teiid-9.3.5\bin>add-user.bat -a -u teiidUser -p password1! -g userC:\teiid-9.3.5\bin>add-user.bat -a -u restUser -p password1! -g restC:\teiid-9.3.5\bin>add-user.bat -a -u odataUser -p password1! -g odataC:\teiid-9.3.5\bin>add-user.bat admin password1!
Teiid Server运行
命令窗口中启动 Teiid Server
打开命令窗口,进入Teiid安装目录bin下,运行standalone.bat:
如果不使用默认设置运行,在后面添加自定义设置的文件名名:-c {configuration.file}:
在浏览器中输入http://localhost:8080/进入到 JBoss 欢迎界面,点击界面上的“Administration Console”链接就看到管理界面。
Eclipse中启动 Teiid Server
- 在 Eclipse中安装JBOSS TOOLS插件
- 打开 Eclipse,选择 Help > Install New Software
- 地址栏输入如下地址:http://download.jboss.org/jbosstools/neon/stable/updates/
- 选择出现的所有插件,一直点击下一步,安装完毕后,重启Eclipse
- 在 Eclipse中配置 Teiid server
- 打开 Eclipse,在视图 Servers中右键选择 New > Server
- 选择对应于安装的 Server 类型,JBoss Community > WildFly 10.x,点下一步
- 选择 Create new runtime (next page),其他默认,点下一步
- 设置WildFly安装路径(C:\teiid-9.3.5),选择启动的配置文件standalone-teiid.xml,点完成
- 双击视图 Servers 中新建的 WildFly Server名,打开配置页面 Overview
- 配置 Management Login Credentials,使用之前设置的admin账号和密码
- 启动服务器,在Server配置页Teiid Instance中填入JDBC的用户名和密码,测试连接成功后保存设置
JDBC的用户名和密码默认是 user:user,在$JBOSS_HOME/standalone/configuration/teiid-security-users.properties中配置。
虚拟数据库(VDB)建立
手动创建和部署VDB
适配不同数据源和生成虚拟数据库(VDB)需要维护好几个配置文件,可参考Teiid 基于数据联邦的集成方案中的最后部分“建立虚拟数据库”,比较复杂,一般创建和部署可使用Teiid提供的辅助工具Teiid Designer来完成。
Teiid Designer 配置
- 打开 Eclipse,选择 Help > Install New Software
- 地址栏输入如下地址:http://download.jboss.org/jbosstools/updates/release/neon/integration-stack/teiiddesigner/11.0.0.Final/
- 选择插件工具 Data Virtualization,一直点击下一步,安装完毕后,重启Eclipse
Teiid Designer 实践
测试案例为一个ORACLE测试库和一个CSV测试文件的数据联邦。以下为具体步骤:
- 启动与设置 Teiid Server
- 打开配置好 Teiid Designer 插件的 Eclipse,切换至 Teiid Designer 视图
- 点击Default Server下的No default server define,参考在 Eclipse中配置 Teiid server,设置 Teiid Server
- 完成后Default Server变成新建服务器,启动服务器,在Server配置页Teiid Instance中配置JDBC连接
- 创建 Teiid Model 工程
- 在 Teiid Designer 的 Model Explorer视图中,右击选择 New > Teiid Model Project
- 输入工程名后,点击下一步,Create Folders 界面勾选要创建的 Folders 后,完成创建
- 导入 ORACLE 数据源
- 在 Guides 中,选择 Model JDBC Source,下方窗口显示具体操作选项
- 双击 Define Teiid Model Project ,选择之前创建的 Teiid Model 工程
- 双击 Create JDBC connection,在弹出的窗口中,选择 Oracle 数据库,然后点下一步
- 选择 Oracle 驱动,配置好 Oracle 数据源的的 url、用户名、密码后,点击完成
- 双击 Create source model for JDBC data source,一直下一步,直到选择数据库和表
- 选择所需数据库和表,点下一步,自定义 Model Name(Oracle.xmi),其他默认,点击完成
- 双击 Preview Data,在弹框中选择需要 preview 的表或者 precedure ,结果显示在 SQL Result 框中
运行Preview Data时,会跳出提示(Required data sources are not deployed …),点击Yes,数据源将在服务器创建和部署。
- 导入 CSV 数据源
- 在 Guides 中,选择 Model Flat File Source,下方窗口显示具体操作选项
- 双击 Define Teiid Model Project ,选择之前创建的 Teiid Model 工程
- 双击 Create Flat File connection,在弹出的窗口中,点击下一步,设置CSV所在目录,然后点击完成
- 双击 Create source model for local flat file source,点击下一步,直到选择CSV文件窗口
- 选择所需CSV文件,按照默认配置一直下一步,在view model definition 界面,设置含合法字符的table view ,点击Finish
- 双击 Preview Data,在弹框中选择需要 preview 的views目录下的表,结果将显示在 SQL Result 框中
运行Preview Data时,会跳出提示(Required data sources are not deployed …),点击Yes,数据源将在服务器创建和部署。
- 生成虚拟数据库
- 在 Guides 中,选择之前设置过的 Model JDBC Source 或者 Model Flat File Source
- 双击 Define VDB > New… ,输入VDB名,Add添加之前导入的数据源(包括sources和views),点击Finish
- Define VDB 自动显示新建VDB,点击确定,Define VDB下的Edit VDB和Execute VDB自动关联对应VDB
- 部署虚拟数据库
- 在 Guides 中,选择生成虚拟数据库步骤所在的选项
- 双击 Execute VDB ,之前已自动关联VDB,点击OK运行后,自动跳转到Database Development视图中
- 在跳转的界面中,可选择对应类型和Database,查询之前设置的Oracle和CSV数据源中的数据
运行Execute VDB,Teiid Designer会部署自动虚拟数据库(VDB)到服务器中。
注意:以上操作会修改Teiid Server中的配置,比如standalone-teiid.xml,故在命令行运行添加VDB后的服务器时,需使用以下命令:
|
|
问题
关于性能和时延
Teiid是数据联邦的开源实现,优点是可将各类不同数据集合到一个虚拟数据源中,能方便和实时的获取数据;缺点是随着数据量增大,Teiid将面临性能方面的问题。
与其它数据集成技术相比,数据联邦技术的明显优势在于获取数据的方便性和实时性。现在很多企业都在实现 SOA,SOA 的灵活性和敏捷性要求组织提供数据时应该具有更少的时延。以前的利用批量任务或者 ETL 的方式创建数据集市和数据仓库的方式的实时性都不太好,在很多应用场景中被数据联邦技术所取代。
但是数据联邦技术访问数据是通过一个“联邦”视图(federation view)来实现的,视图是实时的。随着企业数据量的增大,性能问题是所有数据集成(Data Integration tools)都面临的问题,但是由于设计上的根本缺陷,数据联邦在这方面虽有很大进展,但是仍无法和另外一些数据集成技术相比。这种缺点制约了它在数据集成领域的适用性,虽然很多领域都使用了数据联邦技术,但是在关键的核心业务系统它的应用非常少。
目前已实施数据联邦项目的特点如下:使用简单的有限的数据源,数据结果集不大,只读性的数据访问,数据质量要求简单。比较典型数据联邦产品有:BEA 的 AquaLogic Data Services Platform、IBM 公司的 Federation Server、Software AG 公司的 Enterprise Information Integration、Sybase 的 DataFederation 以及 Red Hat 公司的 JBoss MetaMatrix,其开源实现即 Teiid。
关于Teiid组件版本兼容
Teiid Server版本是Teiid 9.3.5,Teiid Designer插件版本是11.0.1,使用Eclipse创建VDB时,经常有报错信息,可能是两者的兼容问题引起。
部分JDBC Source无法Create source model
比如,创建SQL Server数据库source model时,JDBC Source连接和访问正常,但之后创建的source model无法显示列和数据,原因未知。