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

著者 [Adam Tworkiewicz](adam.tworkiewicz@teradata.com)
最終更新日 2022年1月6日

:::note warn
警告
本記事はTeradata Corporationによる[Getting Started](https://quickstarts.teradata.com/index.html#getting-access-to-vantage)に掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
:::

# 概要
このサンプルは、ミュールソフトのMySQLサンプルプロジェクトのクローンです。Teradataデータベースに問い合わせを行い、その結果をREST APIで公開する方法を示しています。

# 前提条件
・Mulesoft Anypoint Studioが必要です。30日間のトライアルは、[https://www.mulesoft.com/platform/studio](https://www.mulesoft.com/platform/studio) からダウンロードすることができます。
・Teradata Vantageインスタンスへのアクセス。


::: note info
Vantageの新しいインスタンスが必要な場合は、[Google Cloud](https://qiita.com/ykswi/items/10a382de5fa5a4a42c50)、[Azure](https://qiita.com/ykswi/items/2c30aa1f5413b16c838c)、[AWS](https://qiita.com/ykswi/items/fba559149ad568678d58)のクラウドにVantage Expressという無料版をインストールすることができます。また、[VMware](https://qiita.com/ykswi/items/ebe1d854c38db9bb0f51)、[VirtualBox](https://qiita.com/ykswi/items/ffadaa375add309f2075)、または[UTM](https://qiita.com/ykswi/items/94995954ae723185c2f7)を使用して、ローカルマシン上でVantage Expressを実行することもできます。
:::


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

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

![画像1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/ab25cfe5-d536-a523-19f5-aa9af3c17c3a.png)

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

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

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

```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インスタンスでサンプルデータベースを作成します。このデータベースにサンプルデータを入力します。

```sql: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](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/604423fc-ccd2-bf24-414d-7b1a4a93668b.png)

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

![画像3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/a8cd444e-0737-50a2-675f-246161be6f0f.png)

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

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

②	Web ブラウザに移動し、次のリクエストを送信します: [http://localhost:8081/?lastname=Testowsky](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"
  }
]
```

# その他の資料
・お使いのマシンでデータベースコネクタを設定する方法の詳細については、この[ドキュメント](http://www.mulesoft.org/documentation/display/current/Database+Connector)を参照してください。
・Access plain データベースコネクタの[参考資料](http://www.mulesoft.org/documentation/display/current/Database+Connector+Reference)です。
・[DataSense](http://www.mulesoft.org/documentation/display/current/DataSense)について詳しくはこちら。

#### Teradata Vantageへのお問合せ
[Teradata Vantage へのお問合せ](https://www.teradata.jp/About-Us/Contact)