2011-01-11 3 views
3

저는 많은 아날로그 센서의 데이터 로그를 저장하기 위해 Redis를 사용하고 있습니다. 내 목표는 로그 시간 스탬프에 따라 데이터를 정렬하고 특정 datetime 범위에서 데이터를 추출하는 것입니다. 저의 원래 데이터 모델은 센서 이름을 키로 사용하고 각 타임 스탬프에 대한 해시와 해시 키에 첨부 된 값을 사용했습니다.Redis - 데이터 모델링 제안 제안

So. SensorA, SensorB 및 SensorC가있는 경우 Keys *를 수행하면 1. SensorA, 2. SensorB 및 3. SensorC가 반환됩니다. SensorB가 20110111172900으로 돌아 가면, 25라고합시다.

현재 모델링의 문제점은 타임 스탬프를 정렬 할 수 없다는 것입니다. 시도한 것이 모두 실패했기 때문에 생각합니다.

누군가가 데이터 범위 정렬 및 추출을 허용하거나 위의 데이터 모델에서이를 허용하는 적절한 정렬 인수를 제안 할 수있는 데이터 모델을 제안 할 수 있습니까?

+0

당신이 나에게 준 perpective와 함께 정렬 된 세트를 다시 보면, 그것들을 명백한 선택으로 만듭니다. 고마워요! –

답변

6

정렬 된 집합은이 경우 해시보다 적합 할 수 있습니다.

값은 타임 스탬프와 센서 값의 조합입니다. 점수는 타임 스탬프입니다. ZRANGEBYSCORE를 사용하여 값을 검색하십시오. 읽기와 쓰기 모두 O (1)에서 O (Log (N))로 이동하지만 범위 값을 반환 할 수 있습니다.

O (1) 삽입을 얻으려면 목록을 사용할 수도 있습니다. 특정 항목을 검색하는 데는 O (N)이되지만 가장 최근 항목을 가져 오는 것은 O (1)가됩니다.

+0

우리는 작은주의를 발견했다. 센서가 동일한 값 (멤버)을 두 번 이상 읽는다면 (이전의 점수 (타임 스탬프)는 덮어 쓰게됩니다). –

+1

그래서 실제 값보다는 조합을 저장합니다 - 예 zadd SensorA 20110111172900 20110111172900 : 25 –

+0

맞아요, 흥분 속에서 우리는이 세부 사항을 완전히 간과했습니다. 우리는 당신이 제안한대로 실행했고 그것은 매우 잘 작동합니다. 당신 덕분에. –