2014-12-04 6 views
9

내 표는 내가 모든 클러스터링 인덱스를 지정하지없이 USER_ID = 'XXX'모든행을업데이 트를 원하는이
파티션 키만 사용하여 cassandra에서 행을 업데이트하는 방법은 무엇입니까?

create table Notes(
    user_id varchar, 
    real_time timestamp, 
    insertion_time timeuuid, 
    read boolean PRIMARY KEY (user_id,real_time,insertion_time) 
); 

create index read_index on Notes (read); 

것 같습니다.

UPDATE Notes SET read = true where user_id = 'xxx'; // Says Error 

오류 :.? 메시지 = "필수 PRIMARY KEY 부분 real_time에게 누락

나는 보조 인덱스를 만드는 시도했다, 그러나 그것의 기본 키에 허용되지 않습니다 내가이 문제를 해결하려면 어떻게

난 내가 할 수 있어야 select * from Notes where user_id = 'xxx'를 수행 할 수 있으려면 기본 키 원인이있는 것으로 USER_ID 선택했다.

답변

8

이 수도 있지만 RDBMS와 SQL을 사용하여 가능하면 Cassandra에서 cql을 사용할 수 없습니다. UPDATE 명령에 DataStax 문서에서 :

Each update statement requires a precise set of primary keys to be specified using a WHERE clause. You need to specify all keys in a table having compound and clustering columns.

당신은 아마 이러한 유형의 업데이트를 수행 할 수 파이썬에서 빠른 뭔가 (또는 다른 드라이버 중 하나)를 작성해야합니다.

+2

위의 대답은 정확하지만 기본 키의 마지막 열 (예 : 작성자 질문의 'insertion_time')에 IN 절을 사용할 수 있습니다. 유스 케이스에 따라 이것은 필요한 CQL 문의 양을 줄이는 데 유용합니다. – user909481