php - La sentencia de selección de Cassandra(CQL) con ''where'' no funciona
phpcassa (3)
Estoy usando Cassandra en los últimos días. Estoy usando la biblioteca PHPCassa para eso.
Cuando intento utilizar el siguiente código, no funciona correctamente.
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);
No devuelve nada, también he intentado seguir consultas
$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);
Pero cuando lo intenté
$rows = $raw->client->execute_cql_query("SELECT * FROM User", cassandra_Compression::NONE);
Da la respuesta correcta, muestra todas las filas. Por favor, avísenme, cómo usar ''DONDE'' correctamente.
Detalles de Keyspace
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
Agregue ''nombre'' y ''edad'' como índices secundarios:
CREATE INDEX name_key on User( name );
CREATE INDEX age_key on User( age );
Entonces deberías poder usar tu (s) declaración (es) select
(s).
Lea más aquí .
En Casandra no puedes consultar una "tabla" como lo harías normalmente. Debe configurar índices secundarios para cada columna que desee consultar.
Digamos que tenemos una mesa:
key | User | Age
----------+----------------
phpqa | Jack | 20
Puede consultar directamente en la clave:
SELECT * FROM User WHERE key=''phpqa'';
Pero para llevar a cabo otras consultas WHERE, necesitaría un índice secundario en las columnas que desea que estén disponibles en la cláusula WHERE.
¿Qué puede hacer para que su consulta sea flexible de la manera que desee?
- Índices secundarios como se describe arriba.
- Use columnas compuestas como su clave. Es una buena idea si solo tiene 2-3 columnas que desea consultar, pero lea este artículo que detalla cómo y cuándo usar las claves compuestas, y aquí hay un enlace sobre cómo implementarlo en phpcassa .
está usando una palabra reservada como nombre de columna:
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)