IBM Bluemix からも提供されている IBM の DBaaS サービスである dashDB に Node.js からアクセスする方法を紹介します。実際には dashDB だけでなく、DB2 のサービスやオンプレミスデータベースへも同様に応用できますが、今回は Bluemix 上の DB2/dashDB 関連サービスを例に紹介します:
dashDB は行指向/列指向型のテーブルをどちらも作成することができるリレーショナル・データベースのサービスですが、そのデータベースシステムとしての実体は IBM DB2 です。というわけで、このライブラリを使ってアクセスします:
https://www.npmjs.com/package/ibm_db
まず以下のコマンドを実行して ibm_db をインストールします(このコマンドだけで DB2 ODBC Driver ごとインストールされます):
そして以下のようなコードを用意して dashDB にアクセスします:
(settings.js)
(sample.js)
settings.js の中身はユーザー名やパスワードといった dashDB に接続するためのサービス資格情報です。IBM Bluemix の画面から取得できる値を使って、実際の値で書き換えて使ってください:
アプリケーションの実体は sample.js です。今回の例ではシンプルに接続して、サンプルデータとして GEO_CUSTOMER テーブルから OBJECTID と NAME の値を 10 件だけ取得する、という SQL (青字部分)を実行しました。また settings.js で定義した情報を取り出して接続文字列(赤字部分)を生成しています。
node コマンドで sample.js を実行して、以下のような結果が表示されれば成功です:
dashDB は行指向/列指向型のテーブルをどちらも作成することができるリレーショナル・データベースのサービスですが、そのデータベースシステムとしての実体は IBM DB2 です。というわけで、このライブラリを使ってアクセスします:
https://www.npmjs.com/package/ibm_db
まず以下のコマンドを実行して ibm_db をインストールします(このコマンドだけで DB2 ODBC Driver ごとインストールされます):
$ npm install ibm_db
そして以下のようなコードを用意して dashDB にアクセスします:
(settings.js)
exports.db_host = 'dashdb-entry-yp-XXXXXXXX.services.dal.bluemix.net'; exports.db_port = 50000; exports.db_name = 'BLUDB'; exports.db_username = 'dashNNNN'; exports.db_password = 'PASSWORD';
(sample.js)
var ibm_db = require( 'ibm_db' ); var settings = require( './settings' ); var db_str = "DATABASE=" + settings.db_name + ";HOSTNAME=" + settings.db_host + ";UID=" + settings.db_username + ";PWD=" + settings.db_password + ";PORT=" + settings.db_port + ";PROTOCOL=TCPIP"; var sql = "select OBJECTID, NAME from SAMPLES.GEO_CUSTOMER limit 10"; ibm_db.open( db_str, function( err, conn ){ if( err ) return console.log( err ); conn.query( sql, function( err, data ){ if( err ) console.log( err ); else console.log( data ); conn.close( function(){ console.log( 'done.' ); }); }); });
settings.js の中身はユーザー名やパスワードといった dashDB に接続するためのサービス資格情報です。IBM Bluemix の画面から取得できる値を使って、実際の値で書き換えて使ってください:
アプリケーションの実体は sample.js です。今回の例ではシンプルに接続して、サンプルデータとして GEO_CUSTOMER テーブルから OBJECTID と NAME の値を 10 件だけ取得する、という SQL (青字部分)を実行しました。また settings.js で定義した情報を取り出して接続文字列(赤字部分)を生成しています。
node コマンドで sample.js を実行して、以下のような結果が表示されれば成功です:
$ node sample.js [ { OBJECTID: 1322, NAME: 'Kami Labarbera' }, { OBJECTID: 1323, NAME: 'Johnathon Tunney' }, : { OBJECTID: 1587, NAME: 'Althea Alcazar' } ] done.