2012-06-28 5 views
3

내 열 패밀리에는 두 개의 복합 열이 필요합니다. 핵심 데이터 유형은 BytesType입니다.cassandra-cli로 두 개의 복합 열 작성

CREATE TABLE stats (
     gid   blob, 
     period  int, 
     tid   blob, 
     sum   int, 
     uniques  blob, 
     PRIMARY KEY(gid, period, tid) 
    ); 

는 내가하고 싶은 것은 열 가족하지만 카산드라 CLI로를 만드는 것입니다 : 여기

는 CQL을 사용하여 테이블의 정의입니다. 여기 내 탄이있다.

CompositeType(Int32Type, BytesType, AsciiType) 

그리고 것이다 정수 보유 :

제 복합체의 구조이다.

CompositeType(Int32Type, BytesType) 

과 의지 BytesType 보유 :

제 복합체의 구조이다.

create column family stats with comparator = 'CompositeType(Int32Type, BytesType, AsciiType)'; 

생성 열 패밀리 명령에서 두 번째 복합 열을 정의하는 방법을 모르겠습니다.

물론 CQL을 사용하여 만든 테이블에서 두 개의 복합 열이 생성된다고 가정합니다.

답변

3

카산드라의 컬럼 제품군에는 하나의 비교기 만있을 수 있습니다. 즉, 열 패밀리에 한 가지 유형의 복합 열만있을 수도 있습니다. 당신은 실제로 당신이 언급 최초의 복합 형 비교기를 사용하는 것이 사용 CQL 문에 의해 생성 된 테이블 :

CompositeType(Int32Type, BytesType, AsciiType) 

비교기 때문에 당신의 복합체의 끝에서 'AsciiType'구성 요소의 스키마를 모두 설명 할 수 있습니다. 열 이름의이 구성 요소에는 'sum'또는 'uniques'라는 리터럴 문자열이 포함될 것이며 열 값은 그에 따라 유형과 일치합니다.

JSON 스타일의 표기법을 사용하여 예 :

<bytes> : {        # a row key in your stats column family 
    (100, <bytes>, "sum") : 100,   # one column in your row 
    (100, <bytes>, "uniques") : <bytes>, 
    (200, <bytes>, "sum") : 200, 
    (200, <bytes>, "uniques") : <bytes> 
} 
<bytes> : {        # another row in the cf 
    ... 
}