cassandraに挑戦 その12 C++でクライアントを作ってみる
cassandraはthrift経由でデータ操作できるので、
せっかくだから、いろいろな言語でクライアントを作ってみるでござる
手順は以下のとおり。
これでコードがジェネレートされたので、
これを元にクライアントコードを準備。
、、、の前に、ldconfigで/usr/local/libにpathを通しておく。
すでに通っていたら必要無し。
これでOK
クライアントコードは、こちらのsimple_client.cpp
このコードを、gen-cpp以下にコピーして、
以下のコマンドでビルド可能
ビルド完了!
データは、以下のものが入っている。
コードを実行してみる。
というわけで、データ取得できました。
あとはAPI仕様をみていけば簡単にデータを扱えそうです。
せっかくだから、いろいろな言語でクライアントを作ってみるでござる
手順は以下のとおり。
satoshi@debian:~/cassandra/0.6.0$ pwd
/home/satoshi/cassandra/0.6.0
satoshi@debian:~/cassandra/0.6.0$ which thrift
/usr/local/bin/thrift
satoshi@debian:~/cassandra/0.6.0$ /usr/local/bin/thrift --gen cpp interface/cassandra.thrift
satoshi@debian:~/cassandra/0.6.0$ ll gen-cpp
合計 388
-rw-r--r-- 1 satoshi satoshi 226714 2010-03-21 13:06 Cassandra.cpp
-rw-r--r-- 1 satoshi satoshi 77574 2010-03-21 13:06 Cassandra.h
-rw-r--r-- 1 satoshi satoshi 5739 2010-03-21 13:06 Cassandra_server.skeleton.cpp
-rw-r--r-- 1 satoshi satoshi 333 2010-03-21 13:06 cassandra_constants.cpp
-rw-r--r-- 1 satoshi satoshi 424 2010-03-21 13:06 cassandra_constants.h
-rw-r--r-- 1 satoshi satoshi 42822 2010-03-21 13:06 cassandra_types.cpp
-rw-r--r-- 1 satoshi satoshi 19483 2010-03-21 13:06 cassandra_types.h
これでコードがジェネレートされたので、
これを元にクライアントコードを準備。
、、、の前に、ldconfigで/usr/local/libにpathを通しておく。
すでに通っていたら必要無し。
$ cat /etc/ld.so.conf.d/additional_path.conf
/usr/local/lib
$ sudo /sbin/ldconfig
これでOK
クライアントコードは、こちらのsimple_client.cpp
このコードを、gen-cpp以下にコピーして、
以下のコマンドでビルド可能
$ g++ -o simple_client -Wall -g -I../gen-cpp/. \
-I/usr/local/include/thrift -L/usr/local/lib \
-lstdc++ -lthrift simple_client.cpp \
../gen-cpp/cassandra_constants.cpp
../gen-cpp/cassandra_types.cpp
../gen-cpp/Cassandra.cpp
$
ビルド完了!
データは、以下のものが入っている。
cassandra> get Keyspace1.Standard1['book1']
=> (column=7469746c65, value=dragon ball, timestamp=1267713708356)
=> (column=7072696365, value=500yen, timestamp=1267713720682)
Returned 2 results.
コードを実行してみる。
$ ./simple_client
Column name retrieved is: title
Value in column retrieved is: dragon ball
$
というわけで、データ取得できました。
あとはAPI仕様をみていけば簡単にデータを扱えそうです。