著者 Adam Tworkiewicz
最終更新日 2022年1月6日
警告
本記事はTeradata CorporationによるGetting Startedに掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
概要
このサンプルは、ミュールソフトのMySQLサンプルプロジェクトのクローンです。Teradataデータベースに問い合わせを行い、その結果をREST APIで公開する方法を示しています。
前提条件
・Mulesoft Anypoint Studioが必要です。30日間のトライアルは、https://www.mulesoft.com/platform/studio からダウンロードすることができます。
・Teradata Vantageインスタンスへのアクセス。
Vantageの新しいインスタンスが必要な場合は、Google Cloud、Azure、AWSのクラウドにVantage Expressという無料版をインストールすることができます。また、VMware、VirtualBox、またはUTMを使用して、ローカルマシン上でVantage Expressを実行することもできます。
・Java JDKです。OpenJDKのインストール方法を参照してください。https://openjdk.java.net/install/
・Apache Maven。インストール手順を参照してください: https://maven.apache.org/install.html
サービス例
このMulesoftサービスの例では、HTTPリクエストを受け取り、Teradata Vantageデータベースに問い合わせ、JSON形式で結果を返します。
Mule HTTP コネクタは、http://:8081/?lastname=; という形式の HTTP GET リクエストをリッスンします。HTTP コネクタは、<**parameter**> の値をメッセージ・プロパティの 1 つとしてデータベース・コネクタに渡します。データベースコネクターはこの値を抽出し、この SQL クエリで使用するように構成されています。
SELECT * FROM hr.employees WHERE LastName = :lastName
ご覧のように、HTTPコネクターに渡されたパラメーターの値を参照しながら、パラメーター化されたクエリーを使用しています。つまり、HTTPコネクターがhttp://localhost:8081/?lastname=Smith を受け取った場合、SQLクエリーは次のようになります。
SELECT * FROM employees WHERE last_name = Smith
データベースコネクターはデータベースサーバーにSQLクエリーの実行を指示し、クエリーの結果を取得し、その結果をJSONに変換するTransformメッセージプロセッサーに渡します。HTTPコネクターはリクエスト・レスポンス型に設定されているため、結果はHTTPクライアントに返されます。
セットアップ
① Teradata/mule-jdbc-exampleリポジトリをクローンします。
git clone git@github.com:Teradata/mule-jdbc-example.git
② src/main/mule/querying-a-teradata-database.xml を編集し、Teradata 接続文字列 jdbc:teradata://localhost/user=dbc,password=dbc を見つけ、Teradata 接続パラメータを環境に合わせ て置き換えます。
③ Vantageインスタンスでサンプルデータベースを作成します。このデータベースにサンプルデータを入力します。
-- create database
CREATE DATABASE HR
AS PERMANENT = 60e6, SPOOL = 120e6;
-- create table
CREATE SET TABLE HR.Employees (
GlobalID INTEGER,
FirstName VARCHAR(30),
LastName VARCHAR(30),
DateOfBirth DATE FORMAT 'YYYY-MM-DD',
JoinedDate DATE FORMAT 'YYYY-MM-DD',
DepartmentCode BYTEINT
)
UNIQUE PRIMARY INDEX ( GlobalID );
-- insert a record
INSERT INTO HR.Employees (
GlobalID,
FirstName,
LastName,
DateOfBirth,
JoinedDate,
DepartmentCode
) VALUES (
101,
'Test',
'Testowsky',
'1980-01-05',
'2004-08-01',
01
);
④ Teradata JDBCドライバをダウンロードし、解凍してください。
wget https://downloads.teradata.com/download/cdn/connectivity/jdbc/17.10.00.24/TeraJDBC__indep_indep.17.10.00.24.zip
unzip TeraJDBC__indep_indep.17.10.00.24.zip
⑤ JDBCドライバをローカルのMavenリポジトリにインポートします。
mvn install:install-file \
-Dfile=terajdbc4.jar \
-DgroupId=com.teradata \
-DartifactId=terajdbc4 \
-Dversion=17.10.00.24 \
-Dpackaging=jar \
-DgeneratePom=true
⑥ Anypoint Studio でプロジェクトを開きます。
○ Anypoint Studio で、[Import projects...] をクリックします。
○ ファイルシステム から Anypoint Studio プロジェクトを選択します。
○ git リポジトリをクローンしたディレクトリを Project Root として使用します。その他の設定はデフォルトのままにしておきます。
実行
① 実行] メニューを使用して、Anypoint Studio でサンプル・アプリケーションを実行します。これでプロジェクトがビルドされ、実行されます。1 分ほどかかります。
② Web ブラウザに移動し、次のリクエストを送信します: http://localhost:8081/?lastname=Testowsky.
次のような JSON 応答が得られるはずです。
[
{
"JoinedDate": "2004-08-01T00:00:00",
"DateOfBirth": "1980-01-05T00:00:00",
"FirstName": "Test",
"GlobalID": 101,
"DepartmentCode": 1,
"LastName": "Testowsky"
}
]
その他の資料
・お使いのマシンでデータベースコネクタを設定する方法の詳細については、このドキュメントを参照してください。
・Access plain データベースコネクタの参考資料です。
・DataSenseについて詳しくはこちら。