Teiid からデータソースへの接続

作成日:2015.10.22
修正日:2016.05.04

このページではTeiid のインストールメモの手順が終わった前提で、Teiid 上に物理データベースをデータソースとする仮想データベースを作成する手順を説明する。 物理データベースとしては MySQL サーバーと PostgreSQL サーバーが 1 台づつあり、この 2 台を仮想データベースとしてまとめるという前提で説明する。

Teiid に関する他のページはTeiid Data Virtualization の覚え書きのインデックスからたどれる。

Notice

Teiid 8.13 リリース以降は、Teiid Server の動作基盤が JBoss EAP ではなく、JBoss EAP の OSS 版の WildFly に変更された。 同梱版も WildFly になっている。 JBoss EAP と WildFly で差はほとんどない。 一部の説明を JBoss EAP → WildFly に読み替えて欲しい。

また一部の画像が古いバージョンになっているが適時読み替えて欲しい。


更新履歴
(2015.10.22) 作成。
(2016.05.04) Teiid 8.12.4 & Teii Designer 10.0 にアップデート


目次

1. Teiid を動かす前提環境

Teiid Designer を動かすクラインと、Teiid Server、データベースがそれぞれ別のホストで動作している前提で話を進める(MySQL サーバーと PostgreSQL サーバーは同一のホストで動かす)。 実際には 4 種類のソフトが全て同じホスト上で動いていても動作する。 ユーザーの環境に合わせて読み替えて欲しい。

 IP アドレスOS
Teiid Designer 10.0.010.20.230.6Windows 7
Teiid Server 8.12.410.20.230.16CentOS 6.7
MySQL 5.7.1210.20.230.17CentOS 7.2
PostgreSQL 9.410.20.230.17CentOS 7.2

MySQL サーバーと PostgreSQL サーバーはすでに起動済みで、両方にサンプルとして dbt3 というデータベースが作成され、ユーザー名 nminoru、パスワード nminoru でアクセス可能とする。

サンプルのデータベースはteiid-sample-database.tgzで作成できる。 dbt3 というデータベースを作成した後に、teiid-sample-database.tgz を /tmp 以下で展開してから、PostgreSQL は以下のコマンドを入力する。

$ psql dbt3 -f /tmp/teiid-sample-database/create_tables.sql
$ psql dbt3 -f /tmp/teiid-sample-database/load-postgresql.sql

MySQL の場合は以下を入力する。

$ mysql -D dbt3 -u nminoru -p < /tmp/teiid-sample-database/create_tables.sql
$ mysql -D dbt3 -u nminoru -p < /tmp/teiid-sample-database/load-mysql.sql

また MySQL サーバーと PostgreSQL サーバーとの接続用にそれぞれの JDBC ドライバー(ここでは postgresql-9.4-1204.jdbc42.jar、mysql-connector-java-5.1.38-bin.jar)を入手しておく必要がある。

2. Teiid Server と Teiid Designer の起動

インストールメモの 3.5 節の手順で Teiid Server を起動する。

Teiid Designer を起動した後に、5.3 節の手順で Teiid Designer から Teiid Server を起動または接続する。

3. Database Connection Profile

PostgreSQL と MySQL のデーターベースを Teiid から仮想データベースとしてアクセス可能にするためには、まず PostgreSQL と MySQL へのデータベース・コネクション・プロファイルを作成する。

Teiid Designer のメニューバーの "Window" → "Perspective" をクリックし、"Teiid Designer" を選択すると Teiid Designer のパーセクティブが表示される。 このパーセクティブを選択すると、Teiid Designer の "Guides" というウィンドウが表示される。 プッシュダウンメニューから "Model JDBC Source" を選択する。 その中にある "Create JDBC Connection" をクリックする。

"New Connection Profile" ダイアログに "Connection Profile" と表示されるので、その中で適合するデータベース種類を選ぶ。

3.1 PostgreSQL Connection Profile

先に PostgreSQL のデータベース・コネクション・プロファイルを作成するので、先ほどの "New Connection Profile" ダイアログで "PostgreSQL" を選択する。 すると "Name:" に New PostgreSQL とデフォルト値が入るが、これから接続する PostgreSQL のデータベースを加味した名前を決め入力する。 この名前は実際に Teiid Server にアクセスしに行く時のスキーマ名となるので重要である。 空白文字や記号が入った名前は避けるべきである。 ここでは PostgreSqlDbt3 という名前にする。

名前を決めたら "Next" をクリックして次に進む。

"Specify a Driver and Connection Details" と表示される。 "Drivers:" の右端にあるボタンをクリックする。

"New Driver Definition" ダイアログが表示され、"Specify a Driver Template and Definition Name" と表示される。 ここで PostgreSQL の JDBC ドライバーを設定する。 まず "Name/Type" タブの "PostgreSQL JDBC Driver" をクリックした後に、"JAR List" のタブをクリックする。

"JAR List" タブでは postgresql-8.1-404.jdbc2.jar という JDBC ドライバーがデフォルトで載っているが、"Remote JAR/Zip" を押して削除する。

同じタブで "Add JAR/Zip..." をクリックし、ダウンロードしておいた postgresql-9.4-1204.jdbc42.jar のパスを指定する。 "OK" をクリックして完了。

最後に JDBC のパラメータを指定する。

"Finish" をクリックして完了。

3.2 MySQL Connection Profile

次に MySQL のデータベース・コネクション・プロファイルを作成する。 こちらは MySqlDbt3 とする。

 New Driver Definition  ダイアログでは、System Version 5.1 の MySQL JDBC Driver を選択して、 JAR List  タブを開く。

ダウンロードした mysql-connector-java-5.1.38-bin.jar を設定する。

最後に JDBC のパラメータを指定する。

"Finish" をクリックして完了。

Tips: データベース・コネクション・プロファイルの削除

データベース・コネクション・プロファイルを削除する手順は少し隠れたところにある。

メニューバーから "Window" → "Show View" をクリックした後、"Other..." を選択する。 表示可能なビューが階層構造で表示されるので、"Data Management" の下にある "Data Source Explorer" を呼び出す。 "Database Connections" の下に作成した過去に作成した database connection profile が並んでいるので、削除したいプロファイルを右クリックしてプロパティから "Delete" を選択して削除する。

4. Teiid Model Project の作成

いよいよ Teiid Server 上の仮想データベースのためのモデルを作成する。

Teiid Designer のメニューバーの "Window" → "Perspective" をクリックし、"Teiid Designer" を選択すると Teiid Designer のパーセクティブが表されると、"Model Explorer" が表示されるはずである。 Model Explorer は最初空だが、空白部分で右クックしプロパティを表示。 "New" → "Teiid Model Project" を選択すると、"New Model Project" ダイアログを設定する。

ここで "Project name:" にプロジェクト名を適当に決める。 この名前は Teiid Designer の作業ファイルが配置される workspace の下に掘るディレクトリ名となる。 ここでは Dbt3Benchmark とする。

"Finish" をクリックして完了。

Model Explorer に Dbt3Benchmark というプロジェクトが表示される。

5. データベースのインポート

次に Dbt3Benchmark プロジェクトに3.13.2 で作ったデータベース・コネクション・プロファイルを経由して PostgreSQL と MySQL のテーブルをインポートする。

Model Explorer の Dbt3Benchmark プロジェクトをクリックし、右プロパティから "Import" を選択すると、"Import" ダイアログが表示される。 まず "Import" ダイアログの中から "Teiid Designer" を選択する。

5.1 PostgreSQL データベースのインポート

"Import" ダイアログの中から "JDBC Database" を選択すると、"Import Database via JDBC" ダイアログが表示される。 ここで "Connection Profile" から 3.1 で作成した PostgreSqlDbt3 を選択する。

"Next" をクリックして選択する。

"Select Database Metadata" へ進むが、選択するテーブル種類を問われる。 ここでは TABLE だけを選択する。

"Next" をクリックして選択する。

"Select Database Objects" へ進む。 Teiid Designer は JDBC 経由で PostgreSQL にアクセスし、データベース内に存在するテーブルを表示する。 この中で Teiid の仮想データベースに加えたいテーブルを選択する。 ここでは "public" スキーマの下にある "TABLE" のうち、実体のあるテーブルを選択する。 "time_statistics" は使わないので選択しない。

"Next" をクリックして選択する。

最後に "Specify Import Options" が聞かれるが、"Finish" して完了する。

Dbt3Benchmark プロジェクト内に PostgreSqlDbt3 がインポートされたことが確認できる。

5.2 MySQL データベースのインポート

同様に MySQL データベースのインポートも行う。

"Select Database Metadata" では、TABLE を選択する。

"Select Database Objects" では、PostgreSQL と同様にテーブルを選択する。

最後に "Specify Import Options" が聞かれるが、"Finish" して完了する。

Dbt3Benchmark プロジェクト内に MySqlDbt3 がインポートされたことが確認できる。

Tips: テーブルデータのプレビュー

Model Explorer から「テーブル」を選択し、右プロパティの "Preview Data" を選択すると、Teiid Designer から JDBC 経由でデータベースに接続しテーブルの中身を確認することができる。

6. VDB の作成と配備

最後に Teiid Model Project を Teiid Server に配備可能な VDB に変換し、実際に Teiid Server に配備する。

まず Model Explorer の Dbt3Benchmark プロジェクトをクリックし、右プロパティの "New" から "Teiid VDB" を選択する。 すると "New VDB" ダイアログが表示される。

"VDB Name:" を決定する。 ここで指定する名前が、実際に Teiid Server にアクセスしに行く時のデータベース名となる。 ここでは Benchmark という名前にする。

次に "New VDB" ダイアログの "Add" をクリックして PosgreSqlDbt3.xml と MySqlDbt3.xml を取り込む。

Model Explorer の Dbt3Benchmark プロジェクトに Benchmark.vdb が追加された。

Model Explorer の Dbt3Benchmark プロジェクトの Benchmark.vdb をクリックし、右プロパティから "Modeling" → "Deploy" を選択すると、この仮想データベースの Teiid Server への配備が開始される。 途中で "Create VDB Data Source" ダイアログが表示される。

ここで "JNDI Name" で指定する名前が、実際に Teiid Server にアクセスしに行く時のデータベース名となる。 デフォルトでは VDB 名と同じ Benchmark だが、そのまま Benchmark という名前にする。 この

Tips: Deploy がうまくいかない場合

Default server が起動状態(started)の後に VDB の "Deploy" を選択した場合でも、"Server is not connected" というダイアログが表示され "This action requires a running server - please connect and retry." というメッセージが表示されることがある。

この場合、"Deploy" コマンドを何度が実行したり、"Modeling" の下にある "Execute VDB" を実行したりするとうまくいくことがある。 いろいろ不安定らしい。

これで配備は完了である。 Teiid Server には VDB が配備されており、以降は Teiid Designer なしで Teiid Server にある仮想データベースへクエリーを投げることが可能になる。 確認のために Teiid Server の Web Console にアクセスする。 アクセス方法は インストールメモの 3.5節 を参考のこと。

右上を "Runtime" に合わせ、左メニューの "Server" → "Manage Deployments" を見ると、Benchmark.vdbpostgresql-9.4-1204.jdbc42.jarmysql-connector-java-5.1.17.jar が配備されていることが分かる。

右上を "Runtime" に合わせ、左メニューの "Status" → "Subsystems" → "Virtual Databases" を見ると、配備済みの仮想データベースとして Benchmark が確認できる。

右上を "Profile" に合わせ、左メニューの "Subsystems" → "Connector" → "Datasources" を見ると、JDBC Datasources に BenchmarkMySqlDbt3PostgreSqlDbt3 が確認できる。

以降は運用モードに入れる。 Teiid Designer は不要である。 Teiid Designer が Teiid Server の制御をしている場合、Teiid Designer を終了した後に Teiid Server を起動し直す。 Teiid Designer が Teiid Server の制御を行ってない場合は、Teiid Designer だけを終了する。

Tips: 確認のための VDB 実行

VDB の配備前に仮想データベースが正しく構築できたことを確認するために Teiid Designer からテストクエリーを実行することができる。

これには Model Explorer の Dbt3Benchmark プロジェクトの Benchmark.vdb をクリックし、右プロパティから "Modeling" → "Execute VDB" を選択すると、SQL Scrapbook というウィンドウが開く。 ここに SQL 文を入力した後に、右プロパティで "Execute ..." を選択すると Teiid Server 側 で実行され、その実行結果を表示される。

実行するクエリーの中で仮想データベース内のテーブルを指定するには、<schema_name>.<table_spec> となる。 <schema_name> はインポートしたモデル名となる。 SQL 文がエラーとなる場合は <schema_name> と <table_spec> をそれぞれ引用符(")で囲って指定する。

SELECT *
    FROM "MySqlDbt3"."nation" A, "PostgreSqlDbt3"."nation" B
    WHERE A.n_nationkey = B.n_nationkey

コメント

トラックバック   [Trackback URL: http://www.nminoru.jp/cgi-bin/tb.cgi/teiid__teiid-datasource-connection]
コメントを書き込む

TOP    掲示板    戻る
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp