はじめに
昨年、私たちは Node.jsに関するブログをリリースしました。 そのブログを読んだ方は、ソースから大量のビルドが必要であることに気付かれたと思います。コンパイルには何の問題もありませんが、開発には一定の時間を要します。この時間を短くするために、GridDBチームがGridDB Node.jsクライアントをnode package managerにリリースしました。このGridDBパッケージは次の場所にあります:GridDB_Node
この説明をビデオでご覧になりたい場合は、こちらをご覧ください。
インストール
GridDB c_client(Nodejsパッケージを使用するための前提条件)は次の場所にあります :https://github.com/griddb/c_client 。 Node.jsパッケージと同様に、c_clientのインストールも簡素化されたものがあります。 ソースからコンパイルする代わりに、RPMを利用することで簡単にインストールすることができます(リリースページはこちらにあります)。 最新のRPMをwgetして開始します。
$ wget \
https://github.com/griddb/c_client/releases/download/v4.2.0/griddb_c_client-4.2.0-1.linux.x86_64.rpm
次に、rpmをインストールします。
$ sudo rpm -ivh griddb_c_client-4.2.0-1.linux.x86_64.rpm
これでc_clientが/usr/ディレクトリにインストールされ、準備が整いました。
Node Package ManagerによりNodejsクライアントを簡単にインストールすることができるようになりました。Node Package Managerを使わずにインストールする場合は、新しいディレクトリとnpm initを作成します。 これにより、プロジェクトの基礎の枠組みができ、node_modulesディレクトリが作成されます。 完了したら、次に進みます。
$ npm i griddb_node
これで、GridDB Node.jsクライアントがインストールされ、使用できる状態になりました。
注意点として、クライアントにはNode.jsバージョン10が必要です。別のプロジェクトで別のバージョンのNode.jsを使用している場合や最新の何かを使用している場合、nvmを使用することをお勧めします。 Node Version Managerは、bashスクリプトで、Node.jsのバージョン管理に役立ちます。 たとえば、今、バージョン10が必要なので、次のように入力します。
$ nvm install 10.16
次に、
$ nvm use 10.16
次のコマンドにて正しくインストールされたことを確認してください。
$ node -v
v10.16.0
これで完了です。
これで、GridDBでJavaScriptを使用する準備がほぼ整いました。 最後のステップは、LD_LIBRARYにc_clientインストールパスを指定することです。
$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/griddb_c_client-4.2-0/lib/
これで、GridDBクラスターでJavaScriptを実行できるようになりました。
使用法
クライアントを使用するには、griddbライブラリをプログラムにインポートします。
const griddb = require('griddb_node');
const fs = require('fs');
実際のクラスターを定義するには、次のようにします。
const factory = griddb.StoreFactory.getInstance();
const store = factory.getStore({
"host": '239.0.0.1',
"port": 31999,
"clusterName": "defaultCluster",
"username": "admin",
"password": "admin"
});
コンテナの作成とスキーマの定義も簡単に行うことができます(コレクションコンテナ)。
const colConInfo = new griddb.ContainerInfo({
'name': "Person",
'columnInfoList': [
["name", griddb.Type.STRING],
["age", griddb.Type.INTEGER],
],
'type': griddb.ContainerType.COLLECTION, 'rowKey': true
});
Time Series コンテナ:
var timeConInfo = new griddb.ContainerInfo({
'name': "HeartRate",
'columnInfoList': [
["timestamp", griddb.Type.TIMESTAMP],
["heartRate", griddb.Type.INTEGER],
["activity", griddb.Type.STRING]
],
'type': griddb.ContainerType.TIME_SERIES, 'rowKey': true
});
そして、実際にコンテナにデータを入力(とクエリ)するには、次のようにします。
let time_series;
store.putContainer(timeConInfo, false)
.then(ts => {
time_series = ts;
return ts.put([new Date(), 60, 'resting']);
})
.then(() => {
query = time_series.query("select * where timestamp > TIMESTAMPADD(HOUR, NOW(), -6)");
return query.fetch();
})
.then(rowset => {
while (rowset.hasNext()) {
var row = rowset.next();
console.log("Time =", row[0], "Heart Rate =", row[1].toString(), "Activity =", row[2]);
}
})
.catch(err => {
if (err.constructor.name == "GSException") {
for (var i = 0; i < err.getErrorStackSize(); i++) {
console.log("[", i, "]");
console.log(err.getErrorCode(i));
console.log(err.getMessage(i));
}
} else {
console.log(err);
}
});
おわりに
Node.jsの起動および実行にかかるプロセスが簡略化されたことで、Node.jsを利用するプロジェクトが今後増えていくことを期待しています。 使用法の章で使用したソースコードの全体をご覧になりたい場合は、こちらからソースファイルをダウンロードしてください。[Download not found]
ブログの内容について疑問や質問がある場合は Q&A サイトである Stack Overflow に質問を投稿しましょう。 GridDB 開発者やエンジニアから速やかな回答が得られるようにするためにも "griddb" タグをつけることをお忘れなく。 https://stackoverflow.com/questions/ask?tags=griddb

[…] GridDBサーバーをまだ設定していない場合は、クイックスタートに従って設定してください。Node.js用にGridDBを設定する場合は、こちらのブログを使用して設定することができます。NYC Open Dataのウェブサイトで、NYCタクシーのデータの詳細をダウンロードして見ることができます。 […]