2011年2月現在、Goにはデータベースとやりとりするためのバインディングが無い。Goパッケージのダッシュボードには色んな人が作ったパッケージがあるけど、どれも有志が作ったもので例えばMySQLが公式にGoをサポートしてくれるわけではない。なので、Goを使ってDBとやりとりして何かしようと思うとちょっと面倒だったりする。
そんな状況で、公式なGoバインディングが登場するまでのつなぎとしてGo + SWIGという選択肢がある。今回はそのGo + SWIGからCassandraを呼ぶことで、GoからのDB利用を試すことにする。
SWIGとは
SWIGはPythonとかの言語からC/C++のライブラリが呼べるようにするツールだと思ってもらえればいい。SWIG v2.02から(正確にはr12398から)はGoからC/C++のライブラリを呼べるようになったので、C/C++でデータベースとやりとりするラッパーを作って、それをGoから呼ぶようにすれば半分公式サポートされてるような状態にできる。これだったら、どこの誰がメンテしてるかわからない野良パッケージに頼るよりは安心して使える。
Cassandraとは
Cassandraは最近はやりのNoSQL系データベース、らしい。良く知らないけどmemcachedとかのkey/value系データベースみたいな。Read/Writeが高速にできて、APIもわりとシンプルなのでこれを今回使うことにする。
Thriftとは
Cassandraはちょっと凝った?ことをやっていて、データベース本体とインタフェースするためのライブラリが別に存在する。それがThriftというライブラリで、CassandraはいまのところThrift経由でアクセスするのが正攻法らしい。多分これはCassandraのエンジン部分とインタフェース部分を分離したかったからだろうけど、とにかくユーザーはCassandraを使おうと思ったらThriftを経由することになる。
Thrift自体は単体でも使用できて、サーバーサイドとクライアントサイドが通信するための色々なことを肩代わりしてくれる便利ライブラリらしい(適当)。
準備
では前置きがすんだところで実際の準備へ入る。
SWIGのインストール
- svnのリポジトリから最新を持ってくる。公式にリリースされてるSWIG v2.01は最新のGoとの連携が壊れてるので、最新のGo(release.2011-02-01)と連携するならsvnからの最新、最低でもr12398以上が必要。
- SWIGをビルド、インストールする。実行も確認する。
$ svn co https://swig.svn.sourceforge.net/svnroot/swig/trunk swig
$ cd swig $ ./autogen.sh $ ./configure --with-go=/home/masato/lib/google-go/bin/8g $ make && sudo make install $ swig Must specify an input file. Use -help for available options.
Cassandraのインストール
- Cassandra公式ウェブサイトへ行って最新のバイナリ(現在0.7.0)をダウンロードして、自分のhome以下に展開。なんならシンボリックリンクでも作ってバージョンを隠蔽する。
- .bashrcに記述するなりしてcassandraのバイナリヘパスを通す。
- cassandraを実行するのに必要なディレクトリを作成して、パーミッションを正しく設定する
- cassandraを起動する。特に例外が発生することなくそのまま実行されてれば成功。
$ cd ~/lib $ tar xzf apache-cassandra-0.7.0-bin.tar.gz $ ln -s apache-cassandra-0.7.0/ cassandra
export PATH=$PATH:~/lib/cassandra/bin
$ sudo mkdir -p /var/log/cassandra $ sudo mkdir -p /var/lib/cassandra $ sudo chown -R `whoami` /var/log/cassandra/ $ sudo chown -R `whoami` /var/lib/cassandra/
$ cassandra -f INFO 10:18:16,041 Heap size: 2087124992/2102198272 INFO 10:18:16,045 JNA not found. Native methods will be disabled. ...
Thriftのインストール
- Thrift公式ウェブサイトへ行って最新のソース(現在0.6.0)をダウンロード、解凍する。
- ビルド、インストールする。単純にビルドしようとすると色々要求されたので、今回はいくつかのオプションをオフにしてビルドした。人によっては他にもpythonやらを無効にするのもあり。
- 実行を確認。
$ tar xzvf thrift-0.6.0.tar.gz
$ ./configure --without-java --without-java_extension --without-php --without-php_extension --with-cpp $ make && sudo make install
$ thrift Usage: thrift [options] file ...
(続く)
0 件のコメント:
コメントを投稿