watsonx.dataとDb2の連携 - Db2はどう見える？

## はじめに
今回は watsonx.dataとDb2連携について、主にwatsonx.data のWeb Consoleから Db2がどのようにみえるのかをご紹介します。ここでは　Db2 Warehouseを例に使用しています。

watsonx.data は オープン・データレイクハウス・アーキテクチャーで　お持ちのデータベースを統合して使用することができます。
Db2のデータベースも watsonx.data に登録し Prestoエンジンを使用してデータを参照することが可能です。　

### 参考文献 - watsonx.dataにDb2を登録する方法
watsonx.dataとDb2連携の構成方法については　次をご参照ください。
- watsonx.data 1.1.x [Adding a database-catalog pair](https://www.ibm.com/docs/en/watsonxdata/1.1.x?topic=components-adding-database-catalog-pair)

<!-- 2024/5/23 非表示 "watsonx.dataの使用方法、外部ソースへ..."　が見えなくなってしまったため
- [IBM watsonx.data サイト](https://www.ibm.com/jp-ja/products/watsonx-data)　には、デモ"watsonx.dataの使用方法、外部ソースへの接続方法、複数のソースからのデータ照会方法などを説明しています。" が準備されています。　(2024/4/16 現在)
2024/5/23 非表示　終了 -->

## 環境
ここで使用している環境を述べます。
- OCP 4.14.17
- CP4D 4.8.4
    - Db2 Warehouse 11.5.8.0-cn8
    - watsonx.data 1.1.3
今回は Db2 Warehouseを使用していますが Db2でもほぼ同じです。

## ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/c43ffc7c-a827-8674-9caf-9db8c8bb1095.png) インフラストラクチャー・マネージャーで詳細を見る
まずは watsonx.data のWeb Consoleのインフラストラクチャー・マネージャーからDb2関連の登録状況をみてみましょう。
左のメニューの![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/c43ffc7c-a827-8674-9caf-9db8c8bb1095.png)をクリックすると　インフラストラクチャー・マネージャーの画面に入れます。
"参考文献 - watsonx.dataにDb2を登録する方法"に掲載した手順でDb2を登録を登録します。

ここで使用する環境のインフラストラクチャー・マネージャーの表示です。
3段構成になっていて、上段右の"エンジン"presto-01,中段の"カタログ"右のほうに2つのDb2からそれぞれ下段2つのデータベースDb2がつながっているのがわかります。（オレンジで囲っている部分）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/1a19d8d8-0e86-6e38-d6fa-989a20ad2d44.png "インフラストラクチャー・マネージャー1")

エンジンとDb2に焦点を当ててみてみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/2616a2a4-e123-d188-ff83-6903319de482.png "インフラストラクチャー・マネージャー2")

上から順にみていきます。
### エンジン
エンジンには Prestoを使用しています。
Presto は、分散 SQL 照会エンジンであり、さまざまなデータ・ソースに配置された膨大なデータ・セットを照会して、大規模なデータ問題を解決する機能を備えています。
"エンジン presto-01"をクリックすると詳細を見ることができます。
使用しているPrestoのバージョンや構成が表示されています。
外部ホストに記述されているのは Presto ConsoleへのURLです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/40fd4106-ddec-8fbb-a2a9-1c861c6d610b.png "インフラストラクチャー・マネージャー - エンジン詳細")


### カタログ 
Prestoでカタログは、スキーマ(Schema)を含みコネクターを経由してデータ・ソースを参照します。
ここではDb2 コネクターを経由して Db2 データベースへの接続を提供しています。
"カタログ db2wh1"をクリックすると詳細を見ることができます。タイプがIBM Db2となっていて Db2 Connectorを使用しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/3b649996-638f-5f82-4be0-132a217a9595.png "インフラストラクチャー・マネージャー - カタログ詳細")

"データ・オブジェクト"タブをみてみましょう。　アクセス可能なオブジェクトがリストされています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/8537618b-053f-edc5-d928-f206a7481852.png "インフラストラクチャー・マネージャー - カタログ詳細 - データ・オブジェクト")


<!-- 2024/04/17 非表示　このほかの画面でもでるため　記述しない
 "アクセス制御"タブを開いてみましょう。　ここでもアクセス権限を追加したり削除したりすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/bbf0e353-f583-dba4-68b3-328800cef185.png "インフラストラクチャー・マネージャー - カタログ詳細 - アクセス制御")
2024/04/17 非表示終了 -->

### データベース
データベースへの接続構成が保管されています。
"データベース db2wh1" をクリックすると詳細を見ることができます。　
今回は同じOCPクラスターに存在するDb2 Warehouseへノードポート(ホスト名　worker-1 ノードポート:32098)を使って接続しています。　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/77c8475b-4b75-ca23-349a-8bf7da00bcc6.png "インフラストラクチャー・マネージャー - データベース詳細")

## ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/bd051714-ea4f-0067-e30f-609957aba2b6.png) データ・マネージャー
### データ・オブジェクト
データ・マネージャーでは左側にwatson.dataでアクセス可能なオブジェクトがドリルダウンして表示できます。
データ・マネージャーではまずカタログ一覧が表示されます。 (↓ 1.カタログ)
カタログの中のdb2wh1を開いてみると　スキーマのリストが表示されます。Db2経験者の方でしたらなじみのスキーマもリストされていますよね。(↓ 2.スキーマ)
スキーマの一つを開いてみます。　ここでは Db2のサンプルデータベースのような表がリストされています。一つの表を選んでトリコロンをクリックすると実行可能なアクションが表示されます。ドロップが実行できますね。(↓ 3.表)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/e0cc4d0d-c56a-ebce-31c7-a17f7ba846a4.png "データ・マネージャー - データ・オブジェクト")



### Db2の表を参照してみましょう
"DEPARTMENT"表を開いてみます。すると "表スキーマ"タブが表示されて列に関する情報が表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/9861eb78-4120-ba6f-e071-05aa1d41540f.png "データ・マネージャー - 表スキーマ")

"データ・サンプル"タブでは表に保管されたデータのサンプルが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/8c3a3169-538f-c27c-6fa1-0ba1e9f66587.png "データ・マネージャー - データ・サンプル")

"DDL"タブでは "CREATE TABLE"文が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/313b953f-c577-e3d1-6ca0-a304cdab96e1.png "データ・マネージャー - DDL")



## ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/532c204d-8a80-1311-6b4a-07d68d49570f.png) 照会ワークスペース
照会ワークスペースでは　SQLを実行することができます。

"DEPARTMENT"表に対してSELECTを実行してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/01e95b26-2cf9-41cb-b5d3-4344d2b6374e.png "照会ワークスペース")


右側はエディターになっているので自由に編集可能です。
簡単なテンプレートも準備されていて、表名の右の`</>`をクリックするとリストされます。

- "パスの生成"を選択すると 表へのフル・パス <カタログ名>.<スキーマ名>.<表名>　例えば "db2wh1"."DB2SAMPL_EN"."DEPARTMENT"がワークシートに追加されます。
- "SELECTの生成"や"ALTERの生成" "DROPの生成"ではオブジェクトに対応したSQLが生成されます。

"SELECTの生成"をクリックして SELECT 文を生成した後 "presto-01で実行"をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/3e55f44d-bf44-f290-e314-10584d085231.png "照会ワークスペース - SELECT")

Db2 Warehouseに保管されているデータがwatsonx.dataで参照できました。

### Explain
PrestoでのExplainも簡易表示できます。

``` SQL
SELECT ALL
  EP.PROJNO, EP.ACTNO, AC.ACTDESC, EP.EMPNO,EM.FIRSTNME,
  EM.MIDINIT, EM.LASTNAME, EP.EMPTIME, EP.EMSTDATE,  EP.EMENDATE,'2'
FROM "db2wh1"."DB2SAMPL_EN"."EMPPROJACT" EP, "db2wh1"."DB2SAMPL_EN"."ACT" AC, "db2wh1"."DB2SAMPL_EN"."EMP" EM
WHERE EP.ACTNO = AC.ACTNO AND EP.EMPNO = EM.EMPNO  ;
```
上のSQLを紹介ワークスペースに貼り付けて　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/52600ffa-2817-f4cc-e06e-dbdc6d82e675.png)

"Explain"をクリックします。　
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/26e88047-f2be-a8f4-efd6-5c4afdccbab6.png)

小さいので　ズーム
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/d22e80cb-197f-3c99-3919-692146332e39.png)


<!-- 
照会ワークスペースのExplainはあまりにも情報がすくない prestoのConsoleを紹介したほうがよいだろうか？
**Presto Consoleについて添付するのであれば次のような感じ　しかし使い方までは書けない　
-->
(参考)Presto Consoleでは 多くの情報を参照することができます。　上のSQLのLive Plan
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/aa8b204b-bee9-3821-0e2d-4a381f7a1f7b.png)
こちらも小さいので　ズーム
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855502/02737eae-8f59-f29d-0573-0d73a55c02d8.png)



## まとめ　
今回は watsonx.dataとDb2連携した時　主にwatsonx.data のWeb Consoleから Db2 WarehouseやDb2がどのようにみえるのかをご紹介しました。