어디서나 내가 읽었을 때, 사람들은 Riak의 MapReduce를 전체 버킷에 사용해서는 안되며 목표를 달성하는 다른 방법이 있다고 말합니다. 그래도 어떻게 확신 할 수 없어. 또한 전체 버킷을 사용하는 것이 왜 느린 지 명확하지 않습니다. 버킷이 하나만있는 경우 전체 시스템에서 모든 항목을 검토해야합니다.Riak MapReduce : 필드별로 항목 그룹화 + 다른 필드 합계
판매 데이터를 나타내는 500K + 문서 목록이 있습니다. 이 데이터를 여러 가지 방식으로보아야합니다. 예를 들어, 매월 영업 수익은 얼마나 많은가? 각 제품은 얼마나 많은 수익을 올렸습니까? 주어진 달에 얼마나 많은 제품이 판매 되었습니까? 저는 MapReduce가 이러한 유형의 집계 문제를 해결하는 데 능숙하다고 생각했기 때문에 MapReduce가 이미 모든 키를 가지고 있다면 혼란 스럽습니다.
내 문서는 모두 'sales'라는 버킷에 있으며 다음 필드가있는 레코드입니다. {"id":1, "product_key": "cyber-pet-toy", "price": "10.00", "tax": "1.00", "created_at": 1365931758}
.
지난 4 년 동안 매월 각 제품의 총 수익 (기본적으로 전체 양동이)을보고해야하는 경우를 예로 들어 보겠습니다. Riak의 MapReduce를 사용하면 어떻게 효율적으로 수행 할 수 있습니까? 데이터에 ID 맵 작업을 사용하려고해도 MySQL이 처리하는 ~ 30 초 후에 시간 초과가 발생합니다.
Erlang (프로토콜 버퍼 클라이언트 사용)에서이 작업을 수행하고 있지만 설명을위한 언어는 충분합니다.
는 해당 SQL (MySQL은) 다음과 같습니다SELECT SUM(price) AS revenue,
FROM_UNIXTIME(created_at, '%Y-%m') AS month,
product_key
FROM sales
GROUP BY month, product_key
ORDER BY month ASC;
는 (지금은하지 않는 것이 중요합니다 주문).
좋아, 알겠지만, Riak은 실제로 많은 데이터를 처리하지 않습니다. 많은 예제를 통해 페이스 북 친구들의 그래프를 트래버스하고, 트윗을 많이 처리하는 등 믿을 수 있습니다.하지만 실제로 리크는 핵심 가치 스토어입니다. 실제로 MapReduce는 무의미합니다. 왜냐하면 실제로 수행하기 위해 클라이언트 쪽에서 할 수있는 적은 양의 데이터로 작업하기 때문입니다. 다른 MapReduce 데이터베이스를 비교해 보겠습니다. 일반적인 MapReduce 문제 일 수도 있습니다. – d11wtq