查询语句会关联模型 Accounts 和 MarketData 中的数据,在后台,Teiid 会同时访问关系型和非关系型数据源,计算出投资利润,并返回结果。DynamicPortfolio 的内容如下(portfolio-vdb.xml):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<vdb name="Portfolio" version="1">
<description>The Portfolio Dynamic VDB</description>
<property name="UseConnectorMetadata" value="true" />
<model name="MarketData">
<source name="text-connector" translator-name="file" connection-jndi-name="java:/marketdata-file"/>
</model>
<model name="Accounts">
<property name="importer.useFullSchemaName" value="false"/>
<source name="h2-connector" translator-name="h2" connection-jndi-name="java:/accounts-ds"/>
</model>
</vdb>
这里我们来解释一下上面的 VDB XML 结构:
元素 “vdb” 定义了虚拟数据库的名称和版本,在例子中为 “Portfolio” 版本为 1。
元素 “model” 表示被集成的 schema。在例子中我们定义了两个数据源,“MarketData” 表示保存股票信息的文本文件的 Schema,”Accounts” 则用来表示 HSQL 数据库的 Schema。
“model”元素的子元素“source”,其有关属性分别定义了数据源的名称(任意名称),转换器的名字(定义了数据源的类型,比如 oracle、 db2、 mysql、 h2、file、 ws 等等),随后的 “connection-jndi-name” 则定义了数据源在 JBoss AS 容器中的 JNDI 名称
同样在 “model” 元素里,你还可以找到一些 “property” 元素,这些元素用来定义元数据如何从数据源中被导入的。其含义可以查阅动态 VDB 参考手册。
当然我们还需要为这两个数据源建立其 JNDI 查找,这样动态 VDB 才能获得数据库连接信息。如何编写JNDI 查找的 XML 文件可以参考 docs/teiid/datasource 目录中的例子和说明。不过注意 marketdata 的JNDI 查找是要归并到 standalone-teiid.xml 配置文件中,这和数据库的不太一样。
一旦 JNDI 查找部署成功,就可以部署动态 VDB 了,只需要将 “portfolio-vdb.xml” 拷贝到以下文件夹中,
<jboss-install>/standalone/deployments
该动作会触发 Teiid 运行时自动加载 VDB,同时还会验证数据源是否可用,一旦成功加载,在 Admin Console 中 VDB 状态将显示为 “Active”。
除了这种方式外,你还可以使用 Admin Console 或者 Admin Shell 来将虚拟数据局部署到远程服务器或者群集上,这里给出用命令行方式的部署方法:
bin/jboss-admin.sh
command and run
# in stand alone mode
deploy /path/to/my.vdb
# in domain mode
deploy –all-server-groups /path/to/my.vdb