2014-11-18 3 views
2

스 리프트 api를 cql3으로 업그레이드 중입니다. 내 데이터는 다음과 같이 SuperColumns를 포함합니다 :CQL3을 사용하여 수퍼 컬럼 만들기

- User         //column family 
    - Division/name      //my row key 
    -DivHead        //SuperColumn 
     - name        //Columns 
     - address       //Columns 

나는 테이블로 변경 될 모든 열 패밀리를 이해합니다. 기본 키가 바로 키가됩니다. 나머지는 기둥입니다.

그러나 내 데이터에는 수퍼 컬럼이 있습니다. CQL3을 사용하여 수퍼 컬럼을 어떻게 만들 수 있습니까? TABLE 사용자 ( rowkey의 VARCHAR, 분할 텍스트 head_name 텍스트 어드레스 텍스트 PRIMARY KEY (rowkey 분단) )

OR

CREATE TABLE 사용자를 생성

+0

cql3은 supercolumn 패밀리 생성을 지원하지 않고 대신 복합 열 사용을 권장합니다. 이 링크를 확인하십시오 http://www.datastax.com/documentation/cql/3.1/cql/cql_intro_c.html – mbaxi

+0

이전 버전과의 호환성을 제공합니다. – mbaxi

+0

당신은 복합 파티션 키를 사용해야 할 필요가 있습니까? (; 내 예를 들어,이 권리가 row_keyname의 VARCHAR, div_name 텍스트, 이름 텍스트, 주소 텍스트, PRIMARY KEY ((row_keyname, div_name), 이름, 주소)?) 표 사용자를 생성; – user123

답변

0

( rowkey의 VARCHAR , 나누기 텍스트, head_name 텍스트, head_address 텍스트, PRIMARY KEY ((키, 부분)) )

첫 번째 예에서는 각 행 키가 동일한 파티션에 할당됩니다. 각 행키에는 논리 행 세트가 각 분할마다 하나씩 있습니다. 이 행에는 head_name과 head_address의 두 열이 있습니다. 당신은 rowkey를 기반으로 질의하고 모든 divisions을 얻을 수 있습니다 (sorted!). 또는 분할 범위 또는 단일 분할로 행 키를 쿼리하고 분할 헤드 및 주소로 분할의 하위 집합을 가져올 수 있습니다.

두 번째 예는 각 행키와 나누기 조합에 대해 하나의 파티션을 갖습니다. 이러한 각 파티션은 하나의 논리 행이됩니다. 각 복합 키에 대한 단일 행에는 head_name과 head_address의 두 열이 있습니다. 쿼리를 만들려면 행키와 나누기 둘 다를 제공해야합니다.

편집 : 잘못된 문법을 지워 둡니다.

+0

나는 실제 답변에서 이것을 언급하고 싶지 않았지만 언급하는 것이 좋을 것이라고 생각했다 : 1) CQL은 대소 문자가 혼합 된 경우를 잘 처리하지 못한다. 모든 테이블과 열 이름을 소문자로 버려야한다. 변화를 감당할 여유가있다. 2) 저는 여러분이 rowkey와 division의 일대일 상관 관계가 없다고 가정합니다. 그렇지 않으면 왜 부서 이름을 기본 키로 사용하지 않는가? – mildewey