2013-03-15 12 views
6

मैं पिछले कुछ दिनों में कैसंद्रा का उपयोग कर रहा हूं। मैं इसके लिए PHPCassa लाइब्रेरी का उपयोग कर रहा हूँ।कैसंद्रा (सीक्यूएल) 'कहां' काम नहीं कर रहा है '0' काम नहीं कर रहा है

जब मैं निम्नलिखित कोड का उपयोग करने की कोशिश कर रहा हूं, तो यह सही तरीके से काम नहीं कर रहा है।

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' का सही तरीके से उपयोग कैसे करें।

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

'उपयोगकर्ता पासवर्ड कुंजीपटल' का आउटपुट क्या है? – ethrbunny

+0

'आयु' और 'नाम' अनुक्रमित हैं? – ethrbunny

+0

नहीं, इसकी अनुक्रमित नहीं है। –

उत्तर

8

कैसेंड्रा में आप सिर्फ एक 'तालिका' क्वेरी नहीं कर सकते सामान्य रूप से । आपको प्रत्येक कॉलम के लिए द्वितीयक अनुक्रमणिका सेट अप करने की आवश्यकता है, जिसे आप क्वेरी करना चाहते हैं।

कहते हैं कि हम एक मेज है:

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

आप कुंजी पर सीधे क्वेरी कर सकते हैं:

SELECT * FROM User WHERE key='phpqa'; 

लेकिन दूसरी बाहर ले जाने के क्वेरी क्या आप स्तंभों पर एक माध्यमिक सूचकांक आवश्यकता होगी WHERE खंड में उपलब्ध होना चाहते हैं। जैसा कि ऊपर वर्णित

  1. Secondary indexes:

    क्या आप अपना रास्ता है कि आप की इच्छा में लचीला क्वेरी करने बनाने के लिए कर सकते हैं।

  2. समग्र कुंजी का उपयोग अपनी कुंजी के रूप में करें। यह एक अच्छा विचार है कि आपके पास केवल 2-3 कॉलम हैं जिन्हें आप क्वेरी करना चाहते हैं, लेकिन this article के माध्यम से पढ़ना है कि समग्र कुंजी का उपयोग कैसे करें और कब करें, और यहां phpcassa में इसे कार्यान्वित करने के तरीके में एक लिंक है।
+0

के बारे में नहीं, हाँ, मुझे समझ में आया, यहां 'phpqa' मेरे लिए मुख्य नाम है। –

+0

क्या हमें इसके लिए कुंजी को अनुक्रमणित करने की आवश्यकता है? –

+1

@ phpqa.in कहें कि आप WHERE क्लॉज में आयु कॉलम रखना चाहते हैं (जैसे उपयोगकर्ता से चुनें * उम्र = 12' आपको एजीई कॉलम को इंडेक्स करने की आवश्यकता है। अगर आप एजीई और NAME चाहते हैं तो आपको दोनों कॉलम इंडेक्स करना होगा कुंजी कॉलम हमेशा अनुक्रमित होता है। –

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

कैसंद्रा के बारे में पोस्ट नहीं है? MySQL नहीं। – ethrbunny

+0

हाँ इसके बारे में कैसंद्रा। MySQL –

4

माध्यमिक अनुक्रमित के रूप में जोड़े 'नाम' और 'युग':

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

तो फिर आप अपने select कथन (नों) का उपयोग करने के लिए सक्षम होना चाहिए।

और पढ़ें here

+0

धन्यवाद क्या हमें कुंजी के लिए अलग इंडेक्स जोड़ने की ज़रूरत है? –

+0

तो यह आसानी से सही होना चाहिए? उपयोगकर्ता से चुनें जहां कुंजी = 'phpqa'; लेकिन इसके भाग्यशाली नहीं है। –

+0

डेटा को देखे बिना जानना मुश्किल है। – ethrbunny

संबंधित मुद्दे