BlueMix 上で使えるデータストアでも触れましたが、この中には2つの DB2 サービスがあります。

1つは SQLDB というサービスで、これは標準的な DB2 と呼ばれている製品がベースになっている、と言われているものです。もう1つの BLUAcceleration というサービスは DB2 のアドバンス版がベースになっていると言われており、インメモリ最適化や列ストアによる高速な統計処理が可能になっているようです。

・・・と、こういった情報までは公開されています。ただ良くも悪くも情報がブラックボックス化されていて、以下の様な情報が公開されていません:
・使われている DB2 のバージョン(=開発時に用意する DB2 JDBC  ライブラリのバージョン)
・データベースの文字コード 

実は一般的にはこれらの情報は DB2 サーバーにコマンドライン接続してコマンドを発行することで確認することができます。ただ BlueMix 環境ではそれらがブラックボックスになっているので調べようがない、、と思っていました。

が、実際にこれら2つの DB2 サービスを作成して、それぞれ環境変数 VCAP_SERVICES を調べてみると、以下の様な内容を得ることができました(一部伏せ字にしてます):

SQLDB:
"SQLDB-1.0": [
 {
  "name": "SQLDB-iw",
  "label": "SQLDB-1.0",
  "plan": "SQLDB_OpenBeta",
  "credentials": {
   "hostname": "192.XXX.XXX.XXX",
   "host": "192.XXX.XXX.XXX",
   "port": 50000,
   "username": "uXXXXXX",
   "password": "XXXXXXXXXX",
   "db": "I_XXXXXX",
   "jdbcurl": "jdbc:db2://192.XXX.XXX.XXX:50000/I_XXXXXX",
   "uri": "db2://uXXXXXX:XXXXXXXXXX@192.XXX.XXX.XXX:50000/I_XXXXXX"
  }
 }
]

BLUAcceleration:
"BLUAcceleration-10.5.3 Rev. A Build 0.1": [
 {
  "name": "BLUAcceleration-es",
  "label": "BLUAcceleration-10.5.3 Rev. A Build 0.1",
  "plan": "Community_Beta",
  "credentials": {
   "hostname": "bluemix01.bluforcloud.com",
   "host": "bluemix01.bluforcloud.com",
   "port": 50000,
   "username": "bluXXXXX",
   "password": "XXXXXXXXXXXX",
   "db": "BLUDB",
   "jdbcurl": "jdbc:db2://bluemix01.bluforcloud.com:50000/BLUDB",
   "uri": "db2://bluXXXXX:XXXXXXXXXXXX@bluemix01.bluforcloud.com:50000/BLUDB"
  }
 }
]

SQLDB の方はホスト名(IPアドレス)が 192.XXX.XXX.XXX となっていました。これはいわゆるプライベート IP アドレス帯ではないのですが、おそらく BlueMix ネットワーク環境内の中に設置されたサーバーになっているようで、外部からは dns でも ping でも db2 クライアントからも直接接続することはできませんでした。BlueMix 上の MySQL なども同様なのですが、まあこのサービスは外部には直接公開されていない、と考えるべきでしょう。

一方、BLUAcceleration のサーバーはホスト名が bluemix01.bluforcloud.com という、どこかで見たような名前。。

・・・ bluforcloud.com って、あれだ、先日サービスがスタートした IBM 版の DBaaS サービスで使われているドメインですね。BlueMix の BLUAcceleration はここのサービス(Managed Service)を使っていたのか:
IBM BLU Acceleration for cloud


ということは、もしかして外部から参照できるかも・・・と思い、コマンドラインコンソールを使うため無償版の DB2 Express-C (10.5.1)をダウンロードしてインストールしました。で、まずはリモートのサーバーノードと DB をカタログ定義して、と:
$ db2
  :
  :
db2 => catalog tcpip node node1 remote bluemix01.bluforcloud.com server 50000
db2 => catalog database bludb as db1 at node node1


そして定義した db1 (=bluemix01.bluforcloud.com:50000 上の bludb データベース)に ID とパスワードを指定して接続を試みてみると・・・

2014042701

あっさり繋がってしまいました(笑)。合わせてこのサービスが 64bit 版 Linux 上に導入された DB2 10.5.3 であることも分かりました。JDBC ドライバはこの DB2 Express-C (10.5.1) にあるものをそのまま使えばよさそうです。

というわけで、続けてデータベース設定情報を確認、と・・・
2014042702


テリトリーコードは US 設定ですが、コードセットは UTF-8 ですね。安心して日本語が使えます。


#本音を言えばこういう情報は公開してほしい


っていうか、BlueMix 上で BLUAcceleration サービスだけ起動して、オンプレミスやクラウドに構築したウェブアプリサーバーからこの BLUAcceleration サービスに接続する、という使い方もできちゃいそうな感じだけど、いいんでしょうか? (^^; 個人的にはそれはそれで嬉しいかも(笑)。