7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MulesoftサービスからのVantageへのクエリー実行

Last updated at Posted at 2022-10-14

著者 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 CloudAzureAWSのクラウドにVantage Expressという無料版をインストールすることができます。また、VMwareVirtualBox、またはUTMを使用して、ローカルマシン上でVantage Expressを実行することもできます。

・Java JDKです。OpenJDKのインストール方法を参照してください。https://openjdk.java.net/install/
・Apache Maven。インストール手順を参照してください: https://maven.apache.org/install.html

サービス例

このMulesoftサービスの例では、HTTPリクエストを受け取り、Teradata Vantageデータベースに問い合わせ、JSON形式で結果を返します。

画像1.png

Mule HTTP コネクタは、http://:8081/?lastname=; という形式の HTTP GET リクエストをリッスンします。HTTP コネクタは、<**parameter**> の値をメッセージ・プロパティの 1 つとしてデータベース・コネクタに渡します。データベースコネクターはこの値を抽出し、この SQL クエリで使用するように構成されています。

select_emplyee_1.sql
SELECT * FROM hr.employees WHERE LastName = :lastName

ご覧のように、HTTPコネクターに渡されたパラメーターの値を参照しながら、パラメーター化されたクエリーを使用しています。つまり、HTTPコネクターがhttp://localhost:8081/?lastname=Smith を受け取った場合、SQLクエリーは次のようになります。

select_emplyee_2.sql
SELECT * FROM employees WHERE last_name = Smith

データベースコネクターはデータベースサーバーにSQLクエリーの実行を指示し、クエリーの結果を取得し、その結果をJSONに変換するTransformメッセージプロセッサーに渡します。HTTPコネクターはリクエスト・レスポンス型に設定されているため、結果はHTTPクライアントに返されます。

セットアップ

Teradata/mule-jdbc-exampleリポジトリをクローンします。

git_clone
 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_insert.sql
 -- 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
 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リポジトリにインポートします。

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...] をクリックします。

画像2.png

○ ファイルシステム から Anypoint Studio プロジェクトを選択します。  

画像3.png

○ git リポジトリをクローンしたディレクトリを Project Root として使用します。その他の設定はデフォルトのままにしておきます。

実行

① 実行] メニューを使用して、Anypoint Studio でサンプル・アプリケーションを実行します。これでプロジェクトがビルドされ、実行されます。1 分ほどかかります。

② Web ブラウザに移動し、次のリクエストを送信します: http://localhost:8081/?lastname=Testowsky.

次のような JSON 応答が得られるはずです。

result_json
[
  {
    "JoinedDate": "2004-08-01T00:00:00",
    "DateOfBirth": "1980-01-05T00:00:00",
    "FirstName": "Test",
    "GlobalID": 101,
    "DepartmentCode": 1,
    "LastName": "Testowsky"
  }
]

その他の資料

・お使いのマシンでデータベースコネクタを設定する方法の詳細については、このドキュメントを参照してください。
・Access plain データベースコネクタの参考資料です。
DataSenseについて詳しくはこちら。

Teradata Vantageへのお問合せ

Teradata Vantage へのお問合せ

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?