流れとして、たぶん、node.js内で、Cassandraにアクセスするんだろうなあ~と思った、そこのあなた。
そうです。今日は、それをやります。
それをやりますが、ここ
Is there a Thrift or Cassandra client for Node.js/JavaScript
http://stackoverflow.com/questions/2947470/is-there-a-thrift-or-cassandra-client-for-node-js-javascript
をみると、2とおりのやり方があるらしい。
1つは、
node-thrift
https://github.com/wadey/node-thrift
を使う方法。
もうひとつは、
Rackspaceが出しているAPI
cassandra-node
http://code.google.com/a/apache-extras.org/p/cassandra-node/
をつかうというもの。おお、Rackspace・・ということで、後者のほうで行きます。
■ダウンロード&インストール
さっきの、
cassandra-node
http://code.google.com/a/apache-extras.org/p/cassandra-node/
をみると、npmでインストールしなさいと書いてある。
は~い!というので、node.jsのフォルダにいって、
npm install cassandra-client
と打ってみた。
いっぱいいろんなのも出て、警告も出たけど、なんかインストールできたみたい。
■ソースコード作成
さっきのサイトにソースコードのサンプルが書いてあるんだけど、
そのとおりやると、ぜんぜんうまく行かなかった。
結局、こんなかんじになった。
¥は、全角でかいてあるけど、本来は半角なので、置換してください
(まあ、しなくても、変な感じになるだけで、動くけどね(^^;)
上記のサイトと変えたのは、
1.var Connectionのrequireを、cassandra-client/node-cassandra-clientと、
cassandra-clientを指定したこと。置き場の問題?
2.con.connectが終わってから、その中の関数で、con.executeを呼んだ。
いや、こうしないとだめでしょ。とってこない前に動いてしまう。
3.SQLと結果表示
中身を出してみました。
■動かし方
1.まず、cassandraを起動します。
いつものとおり、コマンドプロンプトから、cassandra.batを起動するわけです。
2.node.jsを起動します。
コマンドプロンプトから「node 上記に書いたファイル」で起動するわけです。
The "sys" module is now called "util". It should have a similar interface.
って表示されるけど、ま、気にしないことにしよう
3.ブラウザで、アクセス。
http://127.0.0.1:8124/
をブラウザで見る。
2で起動した、コマンドプロンプトに
node-cassandra-client.driver: connecting localhost:9160 {}
とでる。そしてブラウザは
なかんじで、アクセスできる。
そうです。今日は、それをやります。
それをやりますが、ここ
Is there a Thrift or Cassandra client for Node.js/JavaScript
http://stackoverflow.com/questions/2947470/is-there-a-thrift-or-cassandra-client-for-node-js-javascript
をみると、2とおりのやり方があるらしい。
1つは、
node-thrift
https://github.com/wadey/node-thrift
を使う方法。
もうひとつは、
Rackspaceが出しているAPI
cassandra-node
http://code.google.com/a/apache-extras.org/p/cassandra-node/
をつかうというもの。おお、Rackspace・・ということで、後者のほうで行きます。
■ダウンロード&インストール
さっきの、
cassandra-node
http://code.google.com/a/apache-extras.org/p/cassandra-node/
をみると、npmでインストールしなさいと書いてある。
は~い!というので、node.jsのフォルダにいって、
npm install cassandra-client
と打ってみた。
いっぱいいろんなのも出て、警告も出たけど、なんかインストールできたみたい。
■ソースコード作成
さっきのサイトにソースコードのサンプルが書いてあるんだけど、
そのとおりやると、ぜんぜんうまく行かなかった。
結局、こんなかんじになった。
var http = require('http'); var Connection = require('cassandra-client/node-cassandra-client').Connection; var server = http.createServer( function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); var con = new Connection({host:'localhost', port:9160,keyspace:'Keyspace1'}); con.connect(function(err) { if (err) { response.write("err1:"+err); response.end(); } else { con.execute('SELECT * FROM Users ', [ ], function (err, rows) { if (err) { response.write("err2:"+err); } else { response.write(rows[0].cols[0].name+":"); response.write(rows[0].cols[0].value+"¥n"); response.write(rows[0].cols[1].name+":"); response.write(rows[0].cols[1].value+"¥n"); } response.end(); }); } }); } ).listen(8124); |
¥は、全角でかいてあるけど、本来は半角なので、置換してください
(まあ、しなくても、変な感じになるだけで、動くけどね(^^;)
上記のサイトと変えたのは、
1.var Connectionのrequireを、cassandra-client/node-cassandra-clientと、
cassandra-clientを指定したこと。置き場の問題?
2.con.connectが終わってから、その中の関数で、con.executeを呼んだ。
いや、こうしないとだめでしょ。とってこない前に動いてしまう。
3.SQLと結果表示
中身を出してみました。
■動かし方
1.まず、cassandraを起動します。
いつものとおり、コマンドプロンプトから、cassandra.batを起動するわけです。
2.node.jsを起動します。
コマンドプロンプトから「node 上記に書いたファイル」で起動するわけです。
The "sys" module is now called "util". It should have a similar interface.
って表示されるけど、ま、気にしないことにしよう
3.ブラウザで、アクセス。
http://127.0.0.1:8124/
をブラウザで見る。
2で起動した、コマンドプロンプトに
node-cassandra-client.driver: connecting localhost:9160 {}
とでる。そしてブラウザは
なかんじで、アクセスできる。