当記事はOSSのDB Tool DBeaverからIBM Cloudのデータ仮想化サービスWatson Query(SaaS版)に接続する方法について説明します。
外部のBIツールなどからWatson Queryには、Db2のJDBCドライバーが使用できればでアクセスすることができます。その際、useridではなくAPIKEYが必要です。
1. APIKEY, 接続情報の準備
1-1. APIKEYは以下の2つの方法、どちらかで準備してください。
-
IBM Cloud APIKEYの作成(取得)方法
- これはIBM CloudのIDに紐ついたAPIKEYで権限はそのIDと同じになります
-
Watson QueryのAPIKEYを含む資格情報の作成と接続情報の取得
- こちらはWatson Query用のAPIKEYでManagerかDataAccessかが選べます
1-2. 接続情報は以下のどちらかで取得してください。
A. データ仮想化の接続情報から取得
A-1. ナビゲーションメニューから「データ仮想化」を選択
A-2. データ仮想化画面のドロップダウンメニューから「接続の詳細」をクリック
A-3. 接続構成リソースから以下を取得します
B. 作成した「サービス資格情報」から取得
Watson QueryのAPIKEYを含む資格情報の作成と接続情報の取得で資格情報を作成した場合は、その情報から取得できます。
B-1.作成した資格情報の名前(鍵名)の横のvをクリックして表示し、以下の情報を取得します。
参考: Watson QueryのAPIKEYを含む資格情報の作成と接続情報の取得-6. APIKEYの表示
資格情報のLegacyの中の以下の情報を取得します:
- database -- データベース名
- hostname -- ホスト名
- port -- ポート番号
- securityMechanism
- username
(securityMechanismとusernameは参考までに・・・)
2. DBeaverを開き、接続を作成
2-1.上部メニューから「データベース」→「新しい接続」を開く
2-2. DB2 LUWのアイコンをクリックし、「次へ」をクリック
2-3. DB2 LUW接続設定を入力
接続名にわかりやすい名前を入れて(そのままでもOKですが、たくさん作成するとわからなくなるので)、「戻る」をクリック

次に 1. APIKEY, 接続情報の準備で取得したAPIKEY, 接続情報を入力します。
[一般]タブ
- Host: ホスト名
- Port: ポート番号
- Database: データベース名
- ユーザー名:
IBM_SUBSTTOKEN_APIKEY- サービス資格情報で取得したusernameです! ちなみにサービス資格情報を作成していなくても決め打ちです。
- ここがPoint!
- パスワード: 1. APIKEY, 接続情報の準備で取得したAPIKEY の値
[ドライバのプロパティ]タブ
左下の+印をクリック

プロパティ名にsecurityMechanismと入力、OKをクリック

securityMechanismをクリックして、15を入力
(この値は接続情報にあった値です)

再度+印をクリックし、プロパティ名にsslConnectionと入力、OKをクリック

sslConnectionをクリックして、trueを入力
(この値はデータ仮想化画面の接続情報にあった値です)

接続が確認できました! 「OK」をクリックしてダイアログを閉じます

3. DBeaverでデータを表示してみる
スキーマまでは見えるのですが、テーブルやビューは表示できません。

しかし、見たいスキーマの下のTablesをダブルクリック、ER図のタブをクリックすると、仮想化したテーブルが見えました!

さらにER図に表示されたテーブルをクリックするとテーブルのプロパティも見えるようになりました

4. まとめ
WatsonQueryはDb2ドライバーを使って、お好みのToolからもアクセス可能です。
今回はDBeaverから接続してみました。
DBeaverのDB2 LUW接続設定はユーザー名とパスワードが必須ですが、サービス資格情報のLegacyの値をを参考にユーザー名をIBM_SUBSTTOKEN_APIKEY、パスワードをAPIKEYにセットし、ドライバーのプロパティ(接続パラメータ)にsecurityMechanism=15が設定できれば設定可能でした。
sslConnection=trueはSSL接続という意味なので、SSL接続フラグのようなものがあるToolはそのフラグが代替になると思います。DBeaver はドライバーのプロパティで指定なので、sslConnection=trueを設定しています。
接続パラメータが特殊なので、JDBCストリングを指定できるToolであれば、接続情報にあるJDBCストリングをそのまま指定してもよいかもしれません。
以上です。










