2014-09-10 3 views
1

복합 열 키 개념을 이해하려고합니다. & 복합 행 키는 가져올 수 없지만 가져올 수 없습니다. 나는 그것이 값의 범위를 얻기 위해 사용되었지만 타임 스탬프 컬럼을이 목적을위한 클러스터 키로 사용할 수는 없을 것이라고 생각한다. 무엇이 유스 케이스, 장점, 단점입니까 & 구현. CQL 3.복합 열 키 및 복합 행 키

복합 열 키를 사용하여 설명해주십시오 : http://i.stack.imgur.com/qLboK.png

복합 행 키 :

답변

3

http://i.stack.imgur.com/xA6Hz.png은 아마 당신은 어떻게 카산드라를 저장하는 화합물 기본 키를 의미 두 용어를 혼동. 복합 키가 작동하는 방법과 Cassandra 2.0 및 CQL3으로 물리적으로 쉽게 저장되는 방법에 대해 설명하겠습니다.

카산드라는 동일한 물리적 키를 가진 모든 논리 행을 단일 실제 와이드 행으로 저장합니다. 파티션 키는 (partition_key, clustering_key)로 나뉩니다.

  • 파티션 키 : 카산드라의 행을 식별합니다. 동일한 partition_key를 가진 모든 레지스터는 동일한 머신으로 이동하여 함께 저장됩니다. partition_key를 합성 할 수 있습니다.
  • clustering_key : 동일한 partition_key를 사용하여 데이터를 정렬 된 상태로 유지합니다. 여러 클러스터링 키를 쉼표로 구분하여 설정할 수 있습니다.

당신이 정의와 테이블 구매가 상상 :

CREATE TABLE purchase(
    user text, 
    item text, 
    time timestamp, 
    PRIMARY KEY ((user, item), time) 
); 

그리고이 데이터를

john car 09/01/14... 
john car 09/05/13... 
john house 09/07/11... 
penny laptop 09/08/08... 
penny laptop 09/03/11... 
rachel tv 09/01/09... 

Cassandar 저장할 데이터

john || car || 09/05/13 - 09/01/14 
john || house || 09/07/11 
penny || laptop || 09/08/08 - 09/03/11 
rachel || tv || 09/01/09 

검색하려는 경우 존이 당신을 산 자동차는 두 개의 레지스터 함께 저장되고 시간순으로 정렬됩니다.

쿼리의 경우 항상 파티션 키 필드 (=)를 설정해야하며 클러스터링 키의 비교 순서를 (< 또는>)로 지정할 수 있습니다.

예 :

  • 선택 * 구매의 경우 사용자 = '페니'와 항목 = '노트북'. 2 레지스터를 반환합니다.
  • select * from purchase 여기서 user = 'john'및 item = 'car'여기서 01/01/14 날짜. 1 레지스터를 반환합니다.

희망이 있습니다.

+0

확실히 그것은 내 지식을 기본 키를 저장하는 방법을 추가하지만 데이터가 위의 그림 링크를 형식으로 저장되는 위의 그림 링크를 묻는 해요 열 이름/키 (복합 열 이름/키)에서와 같이 : http://www.ebaytechblog.com/wp-content/uploads/2012/07/optionbest.png –

+1

그 링크, 그냥 특정 쿼리에 대한 모델링의 한 가지 방법을 보여줍니다. – gasparms

+0

도와주세요, 어떻게 ddmmyyhh | eventtype은 http://i.stack.imgur.com/xA6Hz.png의 행 키로 사용됩니까? –