2014-12-10 5 views
3

우리는 지난 1 시간 동안 웹 사이트 분석을 저장하기 위해 "소형"메모리 전용 Aerospike 서버를 사용하고 있습니다. 지난 1 시간 동안의 데이터 크기는 약 10GB입니다. (단일 모든 집계 Aerospike 노드에서 수행되는 문서에 따르면Aerospike 집계 부분 크기

stream : aggregate(map(), complex_aggregate_function) : reduce(simple_reduce_function) 

:

우리는 별도의 서버 Aerospike에 (자바 기반 클라이언트), (LUA)에이 같은 일부 집계 쿼리를 실행하려고 노드), 클라이언트를 줄이십시오.

aggregate() 함수는 작은 데이터 배치 (예 : 10-16 레코드) 만 처리합니다. 그런 다음 집계 결과가 reduce()에 의해 처리되도록 클라이언트에 전송됩니다.

reduce() 작업은 클라이언트에서 실행되므로 서버가 최소한 1/16 크기의 데이터를 클라이언트에 보내야 함을 의미합니다. 나는. 데이터에 대해 수백 메가 바이트입니다. 성능에 대해 이야기하십시오.

레코드 스트림 집계의 "버퍼 크기"또는 "큐 크기"또는 "크기"를 변경할 수 있습니까? 나는. reduce() 함수를 각 노드 당 한 번만 호출하도록 Aerospike를 "조정"할 수 있습니까?

답변

1

이 문제에는 쿼리 일괄 처리 크기와 쿼리 버퍼 크기라는 두 가지 측면이 있습니다.

쿼리 일괄 처리 크기는 쿼리에서 단일 일괄 처리로 반환 할 레코드 수를 결정합니다. 쿼리가 1000 개의 레코드를 제공하고 쿼리 일괄 처리 크기가 1000 인 경우 모든 결과가 단일 응답으로 반환됩니다. 쿼리 일괄 처리 크기가 100이면 전체 결과 집합을 반환하기 위해 10 일괄 처리가 필요합니다.

자세한 내용은 http://www.aerospike.com/docs/operations/manage/queries/을 참조하십시오.

마찬가지로 query-buf 크기를 늘려 버퍼 크기를 늘릴 수 있습니다. 버퍼 크기가 높을수록 배치 수가 더 낮아집니다.

관련 문제