phpcassaで、PHPからCassandraを操作する。日記ノート本phpcassaで、PHPからCassandraを操作する。PHPTweetTweet「CQLを使って、CassandraをSQLライクに操作する。」に続いて、Cassandraをプログラムから操作してみます。Thriftという枠組みによっておこないます。各言語にはラッパーライブラリが用意されているので、そういったライブラリを利用すると、Thriftを意識しなくても簡単にCassandraの操作ができます。PHPクライアントライブラリphpcassaPHPには、いくつかのCassandraのクライアントライブラリがあります。調べてみたところ、よく使われていそうなのは、phpcassaでした。documentationこれも、ThriftによるCassandraの操作をラップしたライブラリです。ライブラリのソースコードは、GitHubで、MITライセンスとして公開されています。thobbs/phpcassaphpcassaをプロジェクトに導入する。プロジェクトに導入してみます。プロジェクトをGitで管理している場合は、サブモジュールとして導入するのが良いと思います。libs/phpcassaまたは、GitHubに公開されているリリースバージョンからzipファイルをダウンロードして、プロジェクトディレクトリに導入することもできます。thobbs/phpcassa続いて導入したファイルを読み込みます。読み込まなければならないのは、phpcassaのlibディレクトリ内のautoload.phpです。これを追加しておけば、あとの依存は自動で解決されます。phpcassa\Schema\StrategyClass;phpcassaのサンプルコードにならって、ネームスペースの解決も追加しておきます。導入ができたら、実際に接続するコードを記述します。ConenctionPoolクラスのコンストラクタの引数に、キースペースの名前と、接続先のホストを指定します。XのローカルのCassandraへ接続します。array('127.0.0.1'));接続したら、ColumnFamilyのオブジェクトも作成します。'first_table');ここまで実行したところでエラーが出てしまいました。200カラムファミリへの接続ができないというエラーですが、調べてみると、CQLのバージョンとカラムファミリの作り方に原因があるようです。storage句を追加して、カラムファミリを作り直します。storage;これでエラーが出ずに接続ができました。続いて、Cassandraにデータを保存してみます。ColumnFamilyクラスには、insertメソッドが定義されているので、これを利用します。'hage'));ここで第1引数がプライマリキーとなっています。ここまで実行したところで、CQLシェルでデータベースの状態を確認してみます。rows)確かに保存されています!データを削除する。今度は挿入したデータを削除してみます。削除には、removeメソッドを使用します。$first_table->remove('hoge');これも同様に第1引数がプライマリキーとなっています。CQLで試した時もプライマリキーの指定でしか削除ができませんでしたが、ここでもプライマリキーの指定以外での削除の方法はなさそうです。rows)hogeキーのデータが削除されました!データを更新する。データの更新もしてみます。'hogera'));データの更新も挿入と同様にinsertメソッドでおこないます。CassandraはKVSの一種なので、挿入と更新に区別がありません。更新もinsertメソッドでおこないます。CQLは、insertとupdateの両方が用意されていますが、あれはSQLに合わせて用意されているだけで、実体は同じものであるとのことです。rows)更新ができました!データを取得する。取得が最後になってしまいましたが、最後にさきほど更新したpiyoキーのデータを、phpcassaから取得してみます。使用するのは、getメソッドです。$first_table->get('piyo');引数には、例によって取得対象のプライマリキーを指定します。"hogera"}どうやら結果にプライマリキーは含まれないようです。まとめ今回は、phpcassaを使ってプログラムからCassandraを操作してみました。これで、Cassandraを起動して、PHPベースのWEBアプリケーションから利用する準備が整いました!(Javaのクライアントライブラリの使い方に続くかもしれません。CQLを使って、CassandraをSQLライクに操作する。ディレクトリ構造を一発で可視化するtreeコマンドを使ってみた。Articles最近キテいるっぽいPHPフレームワークLaravelのインストール&起動!2015年12月21日3年ぶりのPHP。最近のパッケージ管理ツールComposerに触れてみました。Sparkの操作を対話シェルで試してみる!2015年1月3日sstableloaderでCassandraにデータをバルクインポートする。Driverで、JavaからCassandraを操作する。CQLを使って、CassandraをSQLライクに操作する。Hectorで、JavaからCassandraを操作する。エンジニアリング半分で頑張っています。広告業界と無関係な僕がさっぱり理解できないアドテク用語を調べた。2014年3月30日WEBアクセス解析ツールMixpanelが簡単なのに凄い。