2014-10-16 3 views
2

난 그냥 내가 하나의 유형이있을 때 어떻게 작동하는지 이해 카산드라 측정

http://planetcassandra.org/getting-started-with-time-series-data-modeling/

CREATE TABLE temperature (
weatherstation_id text, 
event_time timestamp, 
temperature text, 
PRIMARY KEY (weatherstation_id,event_time) 
); 
에서 튜토리얼 다음있어 일부 시계열 데이터를 저장 카산드라를 사용하여 시작하고있어 여러 유형의 시계열에 대한 측정 -이 경우의 온도. 그러나 우리가 압력 측정도한다면? 이 경우 테이블의 구조는 무엇입니까? 온도와 압력을 저장하는 타임 스탬프 분할 열입니까, 아니면 두 열이 생성됩니까? 두 개의 열이있는 경우 예를 들어 영향을받은 쿼리의 연결 성능이 어떻습니까?

답변

1

카산드라에서 가장 효율적인 쿼리는 단일 파티션을 공격 한 다음 열 키를 사용하여 쿼리합니다. 기본 키의 첫 번째 키는 파티션 키이고 모든 후속 키는 열 키입니다. 열 키의 순서가 중요합니다. 왼쪽에서 오른쪽으로 열 키를 지정할 수 있습니다. 파티션 키 또는 첫 번째 열 키 또는 파티션 키 + 첫 번째 열 키 + 두 번째 열 키만 지정할 수 있지만 파티션 키 + 두 번째 열 키는 지정할 수 없습니다 (두 번째 열 키가 아닌 것은 제외). 색인, 그러나 나는 그것을 지금 떠날 것이다). 따라서 카스 산드라의 스키마는 쿼리 요구 사항에 의해 크게 좌우됩니다. 당신은 당신이 항상 유형별로 조회 할 수 있습니다 알고있는 경우 (온도 측정 또는 압력 판독, 또는 다른 측정 값 또는 유형의 조합으로), 다음 스키마 작업 할 수 있습니다

CREATE TABLE readings (weatherstation_id text, 
event_type text, 
event_time timestamp, 
reading_value text, 
PRIMARY KEY (weatherstation_id, event_type, event_time) 
); 

을 당신은 할 수

SELECT * FROM readings where weatherstation_id = '12' and event_type='temperature'.... 

이렇게하면 읽기 당 한 행이 생성됩니다.

또 다른 옵션은 행당 여러 개의 판독 값을 갖는 것입니다. 이 경우 스키마는 다음과 같이 보일 수 있습니다.

CREATE TABLE readings (weatherstation_id text, 
event_time timestamp, 
readings map<string, string>, 
PRIMARY KEY (weatherstation_id, event_time) 
); 

그러면 한 행의 타임 스탬프에 대한 모든 판독 값을 얻을 수 있습니다. 즉, 특정 키 유형에 필터를 적용 할 수는 없지만 (예 : 행에 대한 모든 수치를 얻을 수 있음),지도 키에 색인을 추가하여 필터링 할 수는 있습니다. 자세한 내용은 http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/create_index_r.html?scroll=reference_ds_eqm_nmd_xj__CreatIdxCollKey을 확인하십시오. 키에 대한 색인은 Cassandra 2.1의 새로운 기능입니다.

희망이 있습니다.