이전에는 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 등의 영역에서 이와 같은 작업을 수행하기위한 적절한 기술은 무엇입니까?
zohmg sugegstion에 감사드립니다. 그들의 웹 사이트에 따르면 : "핵심 아이디어는 집계를 사전 계산하여 읽기 효율적인 방식으로 저장하는 것입니다." 내 생각은 그 순간에 사용자의 필요에 따라 데이터 집합과 집계를 시작하는 것입니다. –
당신은 하나의 행을 가지고있는 차원의 고유 한 조합 각각을 위해 미리 집계하고 싶습니다. 실행 시간 집계는 큐브의 적절한 횡단면을 롤업하는 문제입니다. Zohmg는이를 수행하는 방법을 알려줄 수 있습니다. HyperTable 또는 HBase를 사용하여 고객을위한 실시간 대시 보드를 수행하는 광고 네트워크를 적어도 하나 이상 알고 있으므로 사용할 수 있습니다. – SquareCog
Zohmg는 이제 폐기됩니다. – rjha94