2014-03-28 1 views
1

다른 채널의 시계열 데이터를 저장하고 검색하기 위해 카산드라 DB 성능을 평가하려고합니다.카산드라 : 범위 시계열 데이터의 타임 스탬프에 대한 쿼리

데이터는 각 샘플에 대한 밀리 초 단위의 시간 소인과 함께 파일 형식으로 8 샘플/초의 최대 기록 속도로 기록됩니다. 주어진 시간 동안 녹화하는 채널 수는 다를 수 있습니다.

표 uhhdata ( ch_idx의 INT, 날짜 타임 스탬프, DT 타임 스탬프, 발 플로트를 작성, PRIMARY KEY ((ch_idx, 날짜 : 다음 링크를 Getting Started with Time Series Data Modeling에서 영감을

, 나는 다음 표를 만들어 사용), dt) );

여기서 파티션 키는 채널 번호 (ch_idx int)와 날짜가 아닌 시간 소인 세부 사항을 저장하는 날짜 시간 소인으로 구성되며 dt는 두 번째 미만의 해상도를 갖는 레코드의 시간 소인입니다.

두 가지 문제점이 있습니다. 1 -이 테이블에 2,500,000 개의 레코드를 쓰고 쿼리를 실행 한 후 select * from UHHdata limit 10,000,000; 다음 시간 초과 오류가 발생했습니다.

요청이 rpc_timeout에서 완료되지 않았습니다.

C++ 드라이버는이 레코드 수에 대해이 숫자에 대해 단순히 NULL을 반환합니다. boost :: shared_ptr result = future.get(). result;

if (! result) std :: cout < < "결과가 없습니다. \ n";

100,000에 대해이를 수행하면 22 초 후에 반환됩니다. 이렇게 큰 쿼리에 대한 모든 레코드를 검색하려면 어떻게해야합니까? 나는 게시물을 보았습니다. cassandra get all records in time range 그러나, 일부 레코드가 아닌 모든 레코드를 얻으려면 어떻게해야합니까?

2의 경우는 다음과 같이 반환 된 쿼리 간격에 의해 지정된 간격을 확인하지 않습니다 DT timstamp에 대한 범위 쿼리를 수행과 관계없이 하부 및 상부 제한 시간입니다 :

으로는 관찰 할 수 의 쿼리는 상한 제한보다 큰 레코드를 반환합니다. '2014-04-04 01:00:10':

cqlsh : uhhkeyspace2> select * UHHData에서 ch_idx = 1 AND date = '2012-04-04 01:00 : 00 'AND dt <'2014-04-04 01:00:10 'LIMIT 20;

ch_idx | 날짜 | dt | 금액

-------- + ------------------------------------ - + -------------------------------------- + -----

1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:00GMT Daylight Time | -5 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:01GMT Daylight Time | 44 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:02GMT Daylight Time | 83 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:03GMT Daylight Time | 99 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:04GMT Daylight Time | 89 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:05GMT Daylight Time | 55 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:06GMT Daylight Time | 5 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:07GMT Daylight Time | -44 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:08GMT Daylight Time | -83 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:09GMT Daylight Time | -99 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:10GMT Daylight Time | -89 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:11GMT Daylight Time | -55 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:12GMT Daylight Time | -5 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:13GMT Daylight Time | 44 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:14GMT Daylight Time | 83 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:15GMT Daylight Time | 99 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:16GMT Daylight Time | 89 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:17GMT Daylight Time | 55 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:18GMT Daylight Time | 5 
    1 | 2012-04-04 01:00:00GMT Daylight Time | 2012-04-04 01:00:19GMT Daylight Time | -44 

(20 rows)

왜 타임 스탬프 제한 조건이 적용되지 않습니까? 어떻게 해결할 수 있습니까?

덕분에, 아민

답변

1

나는 어떤 문제를 볼 수 없습니다. dt 열의 모든 타임 스탬프는 2012-04-04이고 상태는 dt < '2014-04-04 01:00:10'입니다. 2012 년은 2014 년 이전이므로 모든 것이 정확합니다.

관련 문제