2009-09-14 11 views
25

이전에는 MySQL에서 실행되는 OLAP 큐브를 사용하여 WebAnalytics를 작성했습니다. OLAP 큐브는 내가 사용했던 방식으로 각 행이 기본적으로 측정 값 및 집계 된 측정 값 인 단순히 큰 테이블입니다 (이 값보다 조금 더 똑똑하게 저장되었습니다). 각 측정에는 차원 (즉, 페이지 관리자, 사용자 에이전트, IP 등) 및 값 집합 (예 : 페이지 뷰 수, 방문자 수 등)이 있습니다. 이 같은 테이블에서 실행BigTable에서 OLAP을 수행 할 수 있습니까?

쿼리는 일반적 형태 (메타-SQL)의 위치 :

SELECT SUM(hits), SUM(bytes), 
FROM MyCube 
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot' 
GROUP BY hour 

그래서 당신이 언급 한 필터를 선택한 날짜의 각 시간 합계를 얻을. 이러한 큐브는 일반적으로 전체 테이블 스캔 (여러 가지 이유)을 의미하므로이 작업을 수행 할 수있는 크기 (MiB 단위)에 대한 실질적인 제한을 의미합니다.

저는 현재 하둡 등의 기능을 배우고 있습니다.

위의 쿼리를 BigTable의 mapreduce로 실행하면 충분히 쉽게 보입니다. 키를 '시간'으로 지정하고지도에서 필터링 한 다음 값을 합산하여 줄입니다.

BigTable 종류의 시스템에서 위와 같이 (또는 최소한 동일한 출력으로) '실시간'(즉, 사용자 인터페이스를 통해 사용자가 최대한 빨리 답변을 얻을 수 있음)의 쿼리를 실행할 수 있습니까? 방법?

그렇지 않으면; BigTable/Hadoop/HBase/Hive 등의 영역에서 이와 같은 작업을 수행하기위한 적절한 기술은 무엇입니까?

답변

9

일종의 (종류)입니다.

LastFm의 집계/요약 엔진 : http://github.com/zohmg/zohmg

Google 검색은 구글 코드 프로젝트 "mroll"를 설정되어 있지만 연락처 정보 (NO 코드, 아무것도)을 제외하고 아무것도하지 않습니다. 그래도 그 사람에게 손을 내밀어 무슨 일이 일어나고 있는지 볼 수 있습니다. http://code.google.com/p/mroll/

+1

zohmg sugegstion에 감사드립니다. 그들의 웹 사이트에 따르면 : "핵심 아이디어는 집계를 사전 계산하여 읽기 효율적인 방식으로 저장하는 것입니다." 내 생각은 그 순간에 사용자의 필요에 따라 데이터 집합과 집계를 시작하는 것입니다. –

+0

당신은 하나의 행을 가지고있는 차원의 고유 한 조합 각각을 위해 미리 집계하고 싶습니다. 실행 시간 집계는 큐브의 적절한 횡단면을 롤업하는 문제입니다. Zohmg는이를 수행하는 방법을 알려줄 수 있습니다. HyperTable 또는 HBase를 사용하여 고객을위한 실시간 대시 보드를 수행하는 광고 네트워크를 적어도 하나 이상 알고 있으므로 사용할 수 있습니다. – SquareCog

+3

Zohmg는 이제 폐기됩니다. – rjha94

4

내 대답은 HBase와 관련,하지만 빅 테이블에 동일하게 적용된다.

Urban Airship 오픈 소스 datacube, 나는 당신이 원하는 것과 가깝다고 생각합니다. 여기서 presentation을 참조하십시오.

Adobe는 HBase에서 "저 대기 시간 OLAP"을 수행하는 방법에 대한 프레젠테이션 (herehere)도 있습니다.

3

테이블 스캔 방식을 찾고 계시다면 Google BigQuery를 고려해 보셨습니까? BigQuery는 대화 형 응답을 제공하는 뒷면에서 자동 확장을 수행합니다. Jordan Tigani는 2012 내부 Google I/O 이벤트의 일부 세션에 대해 설명합니다.

http://www.youtube.com/watch?v=QI8623HlYd4

는 맵리 듀스 아니지만 그것은 당신이 설명한 것처럼 스캔 고속 테이블에 맞도록한다.

+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. –