2013-03-15 22 views
6

Son birkaç gündür Cassandra kullanıyorum. Bunun için PHPCassa kütüphanesi kullanıyorum.Cassandra (CQL) deyimiyle 'nerede' çalışmıyor deyimi

Aşağıdaki kodu kullanmaya çalıştığımda, düzgün çalışmıyor. Hiçbir şey dönen

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); 

Onun, ben de aşağıdaki sorgular

$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); 

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

doğru cevap verilmiş Its

çalıştı tüm satırları görüntülenen zaman. Lütfen bana 'WHERE' yi nasıl kullanacağımı bildiriniz.

KEYSPACE Detayları

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 
+0

'DESCRIBE USER KEYSPACE' ürününün çıktısı nedir? – ethrbunny

+0

'Yaş' ve 'isim' endeksli mi? – ethrbunny

+0

Hayır, Dizine eklenmiş değil. –

cevap

8

sadece bir 'tablo' sorgulamak sen cant . Sorgulamak isteyebileceğiniz her sütun için ikincil dizinler oluşturmanız gerekir.

SELECT * FROM User WHERE key='phpqa'; 

Ama sorguları sütun üzerinde ikincil bir indeks gerekiyordu NEREDE diğer yürütmek için:

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

Sen tuş üzerinde doğrudan sorgulayabilir:

biz bir tablo var ki WHERE yan tümcesinde kullanılabilir olmasını istiyorum.

Eğer sizin arzu şekilde esnek sorgulama yapmak için ne yapabilirim:

  1. Secondary indexes yukarıda açıklandığı gibi.
  2. Bileşik sütunları anahtarınız olarak kullanın. Sorgulamak istediğiniz sadece 2-3 sütununuz varsa iyi bir fikirdir, ancak birleşik anahtarların nasıl ve ne zaman kullanılacağını detaylandıran this article aracılığıyla okunabilir ve burada phpcassa içinde nasıl uygulanacağı hakkında bir bağlantı vardır. İkincil endeksler olarak
+0

evet anladım, burada 'phpqa' benim için anahtar adıdır. –

+0

Bunun için KEY'yi dizine eklememiz gerekiyor mu? –

+1

@ phpqa.in WHERE yan tümcesinde Yaş sütununa sahip olmak istediğinizi belirtin (SELECT * FROM kullanıcısı WHERE yaş = 12 olarak) AGE sütununu dizine eklemeniz gerekir. AGE ve NAME istiyorsanız, her iki sütunu da dizine eklemeniz gerekir Anahtar sütunu her zaman dizinlenmiş –

-3

bir sütun adı olarak ayrılmış bir kelime kullanıyor: zamanki gibi cassandra olarak

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) 
+2

Cassandra hakkındaki yazı değil mi? MySQL değil. – ethrbunny

+0

evet Cassandra hakkında. Mysql hakkında değil –

4

Ekleme 'adı' ve 'yaş':

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

Sonra select deyimi (ler) kullanmak gerekir.

Devamını oku here.

+0

KEY? –

+0

için ayrı bir indeks eklememiz gerekiyor, bu yüzden düzgün bir şekilde sağa mı? SELECT * FROM User WHERE tuşu = 'phpqa'; ama falcı değil. –

+0

Verileri görmeden bilmek zor. – ethrbunny

İlgili konular