2013-08-29 12 views
8

मैं किसी तालिका में द्वितीयक अनुक्रमणिका या कॉलम कुंजी द्वारा हटाने की कोशिश कर रहा हूं। मैं प्रदर्शन से चिंतित नहीं हूं क्योंकि यह एक असामान्य क्वेरी होगी। यकीन नहीं है कि यह संभव है? उदा .:कैसंड्रा माध्यमिक सूचकांक द्वारा हटाएं या फ़िल्टरिंग की अनुमति देकर

CREATE TABLE user_range (
    id int, 
    name text, 
    end int, 
    start int, 
    PRIMARY KEY (id, name) 
) 

cqlsh> का चयन करें * dat.user_range से जहां आईडी = 774,516,966;

id  | name  | end | start 
-----------+-----------+-----+------- 
774516966 | 0 - 499 | 499 |  0 
774516966 | 500 - 999 | 999 | 500 

मैं कर सकते हैं:

cqlsh> select * from dat.user_range where name='1000 - 1999' allow filtering; 

id   | name  | end | start 
-------------+-------------+------+------- 
-285617516 | 1000 - 1999 | 1999 | 1000 
-175835205 | 1000 - 1999 | 1999 | 1000 
-1314399347 | 1000 - 1999 | 1999 | 1000 
-1618174196 | 1000 - 1999 | 1999 | 1000 
Blah blah… 

लेकिन मैं नहीं हटा सकते हैं:

cqlsh> delete from dat.user_range where name='1000 - 1999' allow filtering; 
Bad Request: line 1:52 missing EOF at 'allow' 
cqlsh> delete from dat.user_range where name='1000 - 1999'; 
Bad Request: Missing mandatory PRIMARY KEY part id 

यहां तक ​​कि अगर मैं एक सूचकांक बनाने के लिए:

cqlsh> create index on dat.user_range (start); 
cqlsh> delete from dat.user_range where start=1000; 
Bad Request: Non PRIMARY KEY start found in where clause 

इसे हटाने के लिए संभव है प्राथमिक कुंजी को जानने के बिना?

उत्तर

14

नहीं है, एक माध्यमिक सूचकांक का उपयोग करके हटाने समर्थित नहीं है: CASSANDRA-5527

7

जब आप अपने माध्यमिक सूचकांक आपको लगता है कि इंडेक्स से सभी पंक्तियां भी चुन सकते हैं। जब आपकी पंक्तियां होती हैं तो आप प्राथमिक कुंजी जानते हैं और फिर पंक्तियों को हटा सकते हैं।

2

मैं यहां कैसंड्रा कॉलम परिवार से पंक्तियों को हटाने के लिए एक समाधान की तलाश में आया था। मैंने एक आईएनएसईआरटी कर लिया और टीटीएल (रहने का समय) निर्धारित किया ताकि मुझे इसे हटाने के बारे में चिंता न करें।

इसे बाहर रखकर, किसी की मदद कर सकता है।

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