2013-05-08 2 views
0

다음 기능을 구현하려고합니다. 나는 물건을 보관하고있는 양동이가 있습니다. 객체 필드 중 하나가 타임 스탬프입니다. 이제 타임 스탬프가 (20130605 08:00:00에서 20130605 08:05:00까지) 과 같은 간격 사이에있는 객체를 검색하고 싶습니다. 8.00에서 8.05까지 모든 객체를 가져와야한다는 의미입니다.시간 간격을 기준으로 쿼리를 수행하는 방법

지도 축소 또는 보조 색인을 사용하여 구현할 수 있습니까?

내가 생각하고있는 또 다른 접근법은 버킷 자체가 20130605 : 0800 : 0805처럼 생성되어이 버킷 아래에 객체를 저장한다는 것입니다. 이제 조건부 시간 간격 쿼리를 구현하고 싶지 않습니다. 제발 방법을 제안하십시오.

+0

바쇼는 riak-users 메일 링리스트 (http : /lists.basho.com/mailman/listinfo/riak-users_lists.basho.com)에서 사용 관련 질문 및 문제를 확인하십시오. 당신의 질문을 거기에 게시하는 것은 가치가있을 수있을뿐만 아니라 꽤 활동적 일 수도 있습니다. –

답변

3

저장하는 데이터 유형에 따라 몇 가지 옵션이 있습니다. 정확하게 지적하자면, 2 차 인덱스는 정확히 일치하는 쿼리와 범위 쿼리를 모두 지원하기 때문에이 방법에 접근하는 한 가지 방법입니다. 예 : 예제에 요약 된대로 시간 소인을 포함하는 2 진 인덱스 (경우에 따라서는 정수 인덱스)를 작성한 후이 인덱스의 범위 u 리를 기초로 페치하십시오.

데이터가 허용하는 경우 여러 레코드를 하나의 레코드에 저장하고이 레코드에 특정 시간 간격을 나타내는 키를 제공 할 수도 있습니다. 이렇게하면 키를 사용하여 특정 기간의 레코드를 검색 할 수 있습니다. 이는 매우 효율적이며 잘 확장됩니다. 필자는 아마도이 방법을 비슷한 시나리오 인 here에 대해 설명했습니다.

삽입 된 데이터의 양과 빈도를 기준으로 단일 레코드의 적용 기간을 결정하면 레코드 크기가 너무 커지지 않습니다 (몇 MB). 예 : 하나의 레코드에서 1 분 동안 모든 데이터를 수집하고 'YYYYMMDDHHMI'형식의 키를 지정하십시오. 20130605 08:00에서 20130605 08:05까지의 모든 데이터를 찾고 있다면 레코드 201306050800, 201306050801, 201306050802, 201306050803, 201306050803, 201306050804를 직접 가져올 것입니다.

관련 문제