phpcassa libraray を使用して Cassandra 2.0.2 サーバーにクエリを実行しようとしています。
私は次のことを行います:
<?php
require('phpcassa/lib/autoload.php');
use phpcassa\ColumnFamily;
use phpcassa\ColumnSlice;
use phpcassa\Connection\ConnectionPool;
$pool = new ConnectionPool('Cronnection', array('MY_SERVER_IP:9160'));
$conversations = new ColumnFamily($pool, 'conversations');
var_dump( $conversations->get('2521b0f0-8e36-11e3-a489-8f038e859082') );
これを行うと、キャッチされていない「cassandra\NotFoundException」例外が発生します。
ソースを読んだ後、これは、列ファミリーの「会話」が ConnectionPool::describe_keyspace() メソッドによって作成された cloumn ファミリー配列にロードされていないためであることがわかりました。
次のコードを使用して「describe_keyspace」の結果を出力すると、user_profiles という列ファミリーの 1 つだけが列ファミリー配列に読み込まれていることがわかります。
<?php
require('phpcassa/lib/autoload.php');
use phpcassa\ColumnFamily;
use phpcassa\ColumnSlice;
use phpcassa\Connection\ConnectionPool;
$pool = new ConnectionPool('Cronnection', array('MY_SERVER_IP:9160'));
echo '<pre>';
var_dump($pool->describe_keyspace());
そのキースペースには 6 つの列ファミリーが定義されていますが、phpcassa は「user_profiles」のみをリストしています。「user_profiles」と他の CF の唯一の違いは、「user_profiles」が「WITH COMPACT STORAGE」プロパティを使用していることです。
これを解決する方法、またはなぜこれが起こっているのかについて何か考えはありますか?
ありがとう!
PS: cqlsh を介して CQL3 を使用して列ファミリーを作成しました。cassandra-cli を使用して「説明」を行うと、列ファミリーが表示されず、言及した「user_profiles」のみが表示されますが、これはどういうわけか関連していますか?