0

데이터의 속성이 연도와 연도로 설정되어 있습니다. 저는 속성 ('내용', '연도', '빈도')을 사용하여 CF '단어'에 넣고 싶습니다. CF는 다음 작업을 지원해야합니다. 열업데이트 가능한 쿼리를 사용하여 Cassandra 정렬

  • 주파수 특성을 업데이트 할 수 있습니다 (예 : - UPDATE 단어가 SET "와 같은 쿼리를 실행할 수있는 주파수 = 2 내용 = 'ABC'AND 년 = 1990 WHERE), 절은 내용과 올해
  • 을 포함해야하는 위치
  • 같은 선택 쿼리 지원해야한다 "단어에서 선택 내용을 어디 주파수 DESC의 LIMIT 10 년 = 2010 ORDER;"결과는 주파수

로 주문 요구 사항의이 종류가 할 수있는 (절은이 년) 수 Cassandra를 사용하여 수행 할 수 있습니까? 여기서 사용해야하는 CF 구조 및 색인 생성이란 무엇입니까? CF 작성 및 색인 작성에 사용해야하는 조회는 무엇입니까?

답변

2

ORDER BY를 사용하려면 빈 도수는 PRIMARY KEY (http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/select_r.html?scroll=reference_ds_d35_v2q_xj__using-compound-primary-keys-and-sorting-results)의 두 번째 열이어야합니다. 빈도를 키로 사용하면 키 값 업데이트가 금지됩니다. "파티션 키를 구성하는 모든 열을 포함하여 WHERE 절에서 업데이트 할 행을 지정합니다. IN 관계는 파티션 키의 마지막 열만 지원됩니다. UPDATE SET 작업이 기본 키 필드에 유효하지 않습니다. " (http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/update_r.html)

 
create table words (
content text, 
year int, 
frequency int, 
PRIMARY KEY (year, frequency)); 

insert into words (content, year, frequency) VALUES ('lorem ipsum dolor sit amet', 2014, 10); 
insert into words (content, year, frequency) VALUES ('Sed ut perspiciatis unde', 2010, 3); 
insert into words (content, year, frequency) VALUES ('Excepteur sint occaecat', 2010, 4); 
select content, frequency from words where year = 2010 ORDER BY frequency desc limit 2; 

content     | frequency 
--------------------------+----------- 
    Excepteur sint occaecat |   4 
Sed ut perspiciatis unde |   3 

(2 rows) 
0

다음의 표 구조를 솔루션으로 사용했습니다.

클러스터링 열의 값을 변경할 수 없으므로 UPDATE 문이 작동하지 않습니다. 그러나 대신 DELETE와 INSERT를 사용할 수 있습니다. 우리는 이전의 빈도 (삭제를 수행하기 위해)를 미리 알지 못하기 때문에, 연도 -> 빈도를 매핑하는 다른 테이블을 유지해야합니다.

관련 문제