2014-10-02 6 views
1

카산드라에서는 행이 매우 길어서 단위 시간 관련 데이터를 저장할 수 있습니다. 예를 들어, 한 행의 모양은 다음과 같습니다.카산드라의 긴 행에서 마지막 "행"을 얻는 방법

RowKey: "weather" 
name=2013-01-02:temperature, value=90, 
name=2013-01-02:humidity, value=23, 
name=2013-01-02:rain, value=false", 
name=2013-01-03:temperature, value=91, 
name=2013-01-03:humidity, value=24, 
name=2013-01-03:rain, value=false", 
name=2013-01-04:temperature, value=90, 
name=2013-01-04:humidity, value=23, 
name=2013-01-04:rain, value=false". 

9 일 기상 정보. 시간이이 행의 기본 키입니다. 따라서이 행의 순서는 시간을 기준으로합니다.

제 질문은이 행의 마지막/첫 번째 습도 값이 무엇입니까?와 같은 쿼리를 수행 할 수있는 방법이 있습니까? CQL에서는 Order By 문을 사용할 수 있지만이 행은 이미 시간순으로 정렬되어 있기 때문에 다른 정렬을 수행하는 대신 처음/마지막 것을 직접 가져 오는 방법이 있어야합니다. 아니면 카스 산드라가 Order By 문을 사용하여 이미 최적화 했습니까?

내가 생각할 수있는 또 다른 방법은 새로운 데이터가 삽입 될 때마다 항상 "last_time_stamp"라는이 행에 다른 열을 저장하는 것입니다. 그러나 새로운 날씨 데이터를 삽입 할 때마다 한 번 더 업데이트해야합니다. 복합 기본 키의 두 번째 구성 요소로 (충돌의 가능성이있는 경우 또는 timeuuid) 어떤 제안! :)

답변

0

에 대한

주셔서 감사합니다 실제 테이블을 더 보지 않고, 내가 타임 스탬프를 사용하는 것이 좋습니다. 이것을 사용하여 ORDER BY t DESC LIMIT 1을 선택하여 마지막 "행"을 얻을 수 있습니다.

"마지막 N"쿼리를 자연스럽게 정렬하도록 스키마의 클러스터링 순서를 변경할 수도 있습니다.

예시 및 링크 된 리소스는 this answer입니다.