cassandraに挑戦 その12 C++でクライアントを作ってみる

cassandraはthrift経由でデータ操作できるので、
せっかくだから、いろいろな言語でクライアントを作ってみるでござる

手順は以下のとおり。
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仕様をみていけば簡単にデータを扱えそうです。