clickhouse(클릭하우스)라는 오픈소스 OLAP DBMS가 있다. SQL 형식으로 수십억단위의 row를 빠르게 조회하고 가공할 수 있다.

clickhouse playground에서 쿼리를 날려볼 수 있는데, 데이터셋은 깃허브 이벤트들이다. (gh archive 참고)

 

SELECT * FROM github_events WHERE actor_login = 'sh-cho' ORDER BY file_time DESC

예를 들어 위 쿼리는 내 모든 깃허브 이벤트(repo 생성, watch 추가, push, pr, ...)를 조회하는 쿼리이다.

input 오른쪽 아래를 보면 소요 시간과 탐색한 레코드 수가 나오는데, 73억개 레코드(16.88GB)를 2.5초만에 갖고온 것을 볼 수 있다

 

SELECT
    toHour(toTimezone(created_at, 'Asia/Seoul')) AS hour, count(*)
FROM
    github_events
WHERE
    actor_login='sh-cho'
GROUP BY hour
ORDER BY hour

clickhouse는 toHour, toTimezone 등등 여러 내장함수가 있어 여러모로 편리하다.

시간별 이벤트 aggregation한 것이다. 나는 주로 저녁~자정 부근에 이벤트가 많다. 그도 그럴것이 주간에는 회사에 있기 때문.

 

참고 링크

- clickhouse ghe: https://ghe.clickhouse.tech/

- clickhouse: https://clickhouse.com/

- gh archive: https://www.gharchive.org/

반응형