TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 35 READS

브라우저에서 도는 완전한 분석 DB: ClickHouse를 WebAssembly로 컴파일한 chDB

서버 없이 브라우저에서 대용량 데이터를 분석한다면

데이터 분석용 데이터베이스 하면 보통 서버에 무겁게 깔아놓고 쓰는 걸 떠올리잖아요. 그런데 이번에 나온 chDB는 그 발상을 통째로 뒤집습니다. 클릭하우스(ClickHouse)라는 강력한 분석용 데이터베이스 엔진을 통째로 WebAssembly로 컴파일해서, 브라우저 안에서 그대로 돌아가게 만든 거예요. 서버도 설치도 필요 없이 웹페이지 하나 열면 그 자리에서 수백만 행짜리 데이터를 SQL로 쿼리할 수 있는 거죠.

먼저 용어부터 풀고 갈게요

이해하려면 세 가지 개념만 알면 돼요.

첫째, OLAP이라는 게 있어요. 우리가 흔히 쓰는 DB(MySQL 같은)는 '주문 하나 넣기, 회원 정보 수정하기'처럼 한 건씩 빠르게 처리하는 데 최적화돼 있어요. 이걸 OLTP라고 하죠. 반면 OLAP은 '지난 3년치 매출을 지역별·월별로 다 합산해줘' 같은, 엄청난 양을 한꺼번에 훑어서 집계하는 데 특화돼 있어요. 클릭하우스가 바로 이 OLAP의 대표 주자예요.

둘째, 클릭하우스가 빠른 비결은 컬럼 기반 저장(columnar storage)이에요. 보통 DB는 데이터를 '행' 단위로 붙여서 저장하는데, 클릭하우스는 '열' 단위로 모아서 저장해요. 매출 합계를 낼 때 매출 열만 쭉 읽으면 되니까, 필요 없는 데이터를 안 건드려서 훨씬 빠르거든요.

셋째, WebAssembly(줄여서 WASM)예요. 이게 뭐냐면, C++이나 러스트 같은 언어로 짠 프로그램을 브라우저가 이해할 수 있는 저수준 바이트코드로 바꿔주는 기술이에요. 자바스크립트보다 훨씬 빠르고, 거의 네이티브 앱 속도에 가깝게 브라우저 안에서 돌아가요. 클릭하우스는 원래 C++로 짜인 무거운 엔진인데, 이걸 WASM으로 컴파일했다는 게 이 프로젝트의 핵심 기술이에요.

그래서 뭐가 좋은데요?

가장 큰 장점은 데이터가 내 브라우저 밖으로 안 나간다는 거예요. 서버에 안 보내고 내 기기 안에서 다 계산하니까, 민감한 데이터를 다룰 때 프라이버시 측면에서 유리하죠. 그리고 서버 비용이 안 들어요. 사용자가 100명이든 10만 명이든 계산은 각자 브라우저가 하니까 서버 부담이 0에 수렴해요. 대시보드나 데이터 탐색 도구를 만들 때 이건 엄청난 이점이에요.

사실 강력한 경쟁자가 있어요: DuckDB-WASM

이 아이디어가 완전히 새로운 건 아니에요. 이미 DuckDB라는 분석용 DB도 똑같이 WASM으로 컴파일돼서 널리 쓰이고 있거든요. DuckDB-WASM은 이미 여러 데이터 시각화 도구나 노트북 서비스에 들어가 있어요. 이런 흐름을 'in-browser analytics(브라우저 내 분석)'라고 부르는데, 무거운 분석을 클라우드가 아니라 사용자 기기로 밀어내는 게 최근 데이터 엔지니어링의 뚜렷한 트렌드예요.

둘의 차이라면, DuckDB는 처음부터 가볍고 임베드하기 좋게 설계된 반면, 클릭하우스는 원래 초대형 트래픽을 감당하는 무거운 엔진이라 SQL 방언이나 성능 특성이 좀 달라요. 이미 클릭하우스를 서버에서 쓰고 있는 팀이라면, 같은 문법과 함수를 브라우저에서도 그대로 쓸 수 있다는 게 chDB만의 매력이죠.

한국 개발자에게

당장 떠오르는 건 사내 데이터 대시보드예요. 지금까지는 분석 쿼리 하나 날릴 때마다 서버를 거쳐야 했는데, 데이터를 파케이(Parquet) 파일 같은 걸로 미리 내려받아 두면 브라우저에서 바로 필터링·집계가 가능해져요. 반응 속도도 빠르고 서버 비용도 줄죠. SaaS를 만드는 스타트업이라면 '고객 데이터를 우리 서버에 저장하지 않는다'는 걸 세일즈 포인트로 삼을 수도 있고요.

다만 한계도 분명해요. 브라우저 메모리 안에서 도는 거라 진짜 수십 GB짜리 빅데이터는 무리고, 처음에 WASM 파일을 내려받는 용량도 신경 써야 해요. '중간 규모 데이터를 클라이언트에서 빠르게 탐색'하는 용도로 보면 딱 맞아요.

마무리

무거운 계산을 클라우드가 아니라 사용자 브라우저로 옮기는 흐름, 이게 chDB가 보여주는 방향이에요. 여러분 프로젝트에서 서버가 지고 있는 계산 부담 중에, 사실은 클라이언트로 넘겨도 되는 게 있진 않나요? 어떤 작업을 브라우저로 내려보낼 수 있을지 한번 따져보면 재밌을 것 같아요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://wasm.chdb.io/
SHARE
처리 중...