6

私はここ数日カサンドラを使用しています。そのためにPHPCassaライブラリを使用しています。

次のコードを使おうとすると、正しく動作しません。

 require_once('phpcassa/connection.php');
 require_once "phpcassa/columnfamily.php";

 // Create new ConnectionPool like you normally would
 $pool = new ConnectionPool("newtest");

 // Retrieve a raw connection from the ConnectionPool
 $raw = $pool->get();

 $rows = $raw->client->execute_cql_query("SELECT * FROM User WHERE KEY='phpqa'", cassandra_Compression::NONE);

 echo "<pre>";
 print_r($rows);
 echo "<pre>";

// Return the connection to the pool so it may be used by other callers. Otherwise,
// the connection will be unavailable for use.
$pool->return_connection($raw);
unset($raw);

何も返さないので、次のクエリも試しました

$rows = $raw->client->execute_cql_query("SELECT * FROM User WHERE age='32'", cassandra_Compression::NONE);
$rows = $raw->client->execute_cql_query("SELECT * FROM User WHERE name='jack'", cassandra_Compression::NONE);

しかし、私が試したとき

 $rows = $raw->client->execute_cql_query("SELECT * FROM User", cassandra_Compression::NONE);

正解すると、すべての行が表示されます。「WHERE」の正しい使い方を教えてください。

キースペースの詳細

Strategy Class:     org.apache.cassandra.locator.SimpleStrategy
Strategy Options:   None
Replication Factor: 1

Ring

   Start Token: 6064078270600954295
   End Token: 6064078270600954295
   Endpoints: 127.0.0.1
4

3 に答える 3

8

cassandraでは、通常のように「テーブル」をクエリすることはできません。クエリする可能性のあるすべての列にセカンダリインデックスを設定する必要があります。

テーブルがあるとしましょう:

 key      | User |   Age 
----------+----------------
 phpqa    | Jack |   20    

キーを直接クエリできます。

SELECT * FROM User WHERE key='phpqa';

ただし、他のWHEREクエリを実行するには、WHERE句で使用できるようにする列にセカンダリインデックスが必要です。

クエリを希望どおりに柔軟にするために何ができますか。

  1. 上記のセカンダリインデックス。
  2. キーとして複合列を使用します。クエリする列が2〜3列しかない場合は、この記事を読んで、複合キーをいつどのように使用するかを詳しく説明します。phpcassaに実装する方法のリンクを次に示します。
于 2013-03-15T11:54:02.283 に答える
4

'name'と'age'をセカンダリインデックスとして追加します。

CREATE INDEX name_key on User( name );  
CREATE INDEX age_key on User( age );

selectそうすれば、ステートメントを使用できるようになります。

詳細はこちらをご覧ください

于 2013-03-15T12:04:28.523 に答える
-3

列名として予約語を使用しています。

http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

$raw->client->execute_cql_query("SELECT * FROM User WHERE KEY='phpqa'", 
cassandra_Compression::NONE)
于 2013-03-15T11:00:31.627 に答える