스크립트
00:00:00수년간 데이터가 스프레드시트의 용량을 넘어서는 순간, 조언은 항상 똑같았습니다.
00:00:05클라우드 데이터 웨어하우스인 Snowflake나 BigQuery를 쓰라는 것이었죠.
00:00:09하지만 노트북에서 완전히 돌아가는 아주 작은 무료 데이터베이스가 있습니다.
00:00:13모두가 클라우드만 바라보는 동안, 이 녀석은 조용히 성장했죠.
00:00:16이제는 실제 암호화, Git 스타일의 업서트, 그리고 최초의 장기 지원 릴리스까지 갖췄습니다.
00:00:22이것이 바로 DuckDB입니다. 2026년 현재 어떤 위치에 있는지 정확히 보여드리고,
00:00:26사람들이 흔히 오해하는 결정적인 한 가지에 대해서도 말씀드리겠습니다.
00:00:35자, DuckDB란 무엇일까요?
00:00:36쉽게 말해 분석을 위한 SQLite라고 생각하면 됩니다.
00:00:40SQLite는 다들 아시죠?
00:00:41서버 없이 파일 하나로 앱 내부에 임베드되는 데이터베이스입니다.
00:00:45DuckDB도 같은 개념이지만, 트랜잭션 처리가 아니라
00:00:50데이터 분석을 위해 만들어졌습니다.
00:00:52수백만 개의 행을 아주 빠르게 스캔하고 집계하도록 설계되었죠.
00:00:56가장 큰 장점 중 하나는 Parquet, CSV, JSON 파일을 직접 읽을 수 있다는 점입니다.
00:01:02데이터를 먼저 불러오거나 임포트하는 과정이 필요 없습니다.
00:01:05그냥 파일에 SQL을 날리면 됩니다.
00:01:08어떤 느낌인지 보여드릴게요.
00:01:09워크플로우를 빠르게 해주는 코딩 툴에 관심이 있다면 구독해 주세요.
00:01:13새로운 영상이 계속 올라옵니다.
00:01:15자, 터미널에서 DuckDB를 입력하면 즉시 SQL 프롬프트가 뜹니다.
00:01:20이제 보세요.
00:01:21인터넷상의 URL에 있는 Parquet 파일에서 데이터를 선택하겠습니다.
00:01:27파일을 다운로드하지도 않았고,
00:01:28설정을 하거나 서버를 띄우지도 않았습니다.
00:01:30DuckDB가 원격 파일에 접근해서 스트리밍하고, 단 한 줄로 바로 SQL 쿼리를 실행한 거죠.
00:01:36이 5초짜리 과정이 사람들이 이 툴을 사랑하는 이유입니다.
00:01:40하지만 사람들이 오해하는 부분이 있습니다.
00:01:43현재 두 가지 릴리스가 공존하고 있는데, 인터넷에서는 자꾸 혼용해서 말하더군요.
00:01:48다들 열광하는 대단한 기능들, 예를 들어 데이터베이스 전체의 AES-256 암호화,
00:01:54Git 스타일의 업서트를 위한 merge-into 명령어, 그리고 Apache Iceberg 테이블 작성 기능은,
00:01:591.5 버전에는 없습니다.
00:02:02이 기능들은 모두 작년 9월, DuckDB 최초의 장기 지원(LTS) 릴리스였던 1.4 버전에 포함되었습니다.
00:02:08그게 핵심이죠.
00:02:09그리고 지난 3월에 나온 1.5 버전에서는 개선된 기능들을 받았습니다.
00:02:14색상과 페이저가 포함된 더 좋은 CLI, 복잡하고 비정형화된 데이터를 위한 새로운 variant 타입,
00:02:20그리고 핵심 기능으로 내장된 지오메트리(기하학) 지원이죠.
00:02:24간단한 쿼리만 보여드리기보다, 1.4 기능에 1.5 업데이트가 더해진 DuckDB의 실사용 느낌을
00:02:30제대로 보여드리겠습니다.
00:02:34아까 봤던 Parquet 쿼리는 그대로 두고요.
00:02:38이게 1.5의 신기능인 variant 타입입니다.
00:02:43테이블을 하나 만들고 정수, 문자열, 배열, 객체 등 다양한 타입을 같은 컬럼에 넣습니다.
00:02:50스키마도 필요 없고,
00:02:51JSON 파싱도 필요 없이 그냥 작동합니다.
00:02:54일반 JSON보다 압축률과 쿼리 성능이 훨씬 뛰어난 타입화된 바이너리 데이터를 저장하죠.
00:02:59이게 새로운 variant 기능입니다.
00:03:02다음은 DuckDB로 할 수 있는 작업의 지평을 넓힌 기능, merge into입니다.
00:03:08이건 1.4 버전 기능입니다.
00:03:09혼동하지 마세요.
00:03:10깔끔한 SQL 문 하나로 끝납니다.
00:03:12앱 로직은 필요 없죠.
00:03:13예전 같으면 Spark나 복잡한 Python 코드가 필요했을 작업입니다.
00:03:17암호화 기능도 빼놓을 수 없죠.
00:03:21지금 정상적으로 쿼리가 되지만, 키 없이 새로운 세션에서 파일을 열려고 하면
00:03:27당연히 오류가 발생합니다.
00:03:30페이지 단위의 AES-256 암호화이며, 사용자가 키를 가져와야 합니다.
00:03:33DuckDB가 키를 저장하거나 관리하지 않습니다.
00:03:36Iceberg 쓰기나 지오메트리 지원에 대해서는 말할 것도 없고요. 많은 분들이
00:03:41지오메트리 대신 spatial을 사용하실 수도 있겠네요.
00:03:43이래서 1.4가 중요한 업데이트인 겁니다.
00:03:45단순 쿼리 엔진에서 단일 머신에서 실질적인 데이터를 믿고 맡길 수 있는 툴로 거듭났으니까요.
00:03:50말이죠.
00:03:51안전한 파일, 안정적인 업서트, 그리고 현대적인 레이크하우스 포맷 지원까지.
00:03:551.5 버전은 개선된 CLI와 새로운 variant 타입으로 사용자 경험을 훨씬 더 좋게 만들었습니다.
00:04:00좋아요, 그럼 기존에 사용하던 툴들과는 뭐가 다를까요?
00:04:04SQLite를 예로 들어보죠.
00:04:05파일 하나, 서버 없는 느낌은 비슷합니다.
00:04:08하지만 SQLite는 트랜잭션용 행 기반 저장소입니다.
00:04:12반면 DuckDB는 분석을 위한 컬럼 기반 저장소죠.
00:04:15Pandas와 비교하면 어떨까요?
00:04:17DuckDB는 실제 SQL 최적화와 멀티 스레드 조인 기능을 제공합니다.
00:04:21그래서 큰 데이터를 그룹화할 때는 보통 조금 더 빠릅니다.
00:04:24Snowflake나 BigQuery는 팀 전체가 사용하는 페타바이트급 데이터용 클라우드 웨어하우스이고요.
00:04:30데이터 양이 방대하죠.
00:04:32DuckDB는 개인 컴퓨터에서 무료로 실행되는 단일 프로세스 툴입니다.
00:04:35하지만 가장 큰 불만사항으로 항상 메모리 문제가 언급되죠.
00:04:4010억 개의 행을 DuckDB에 던지면 메모리 부족으로 다운될 수 있습니다.
00:04:45프로덕션 환경에서 쓰기에는 조금 불안정할 수도 있습니다.
00:04:49두 번째는 트랜잭션용 데이터베이스가 아니라는 점입니다.
00:04:53단일 쓰기 모드입니다.
00:04:54한 번에 하나의 프로세스만 기록할 수 있죠.
00:04:57그러니 앱의 백엔드나 세션 저장소로 쓰시면 안 됩니다.
00:05:01그건 Postgres의 몫이거나, 소규모 MVP라면 SQLite가 적당하죠.
00:05:05암호화 기능 역시 훌륭하고 철저하지만, 키는 직접 관리해야 합니다.
00:05:10DuckDB는 키를 저장하지 않습니다.
00:05:12키를 교체해주지도 않죠.
00:05:14어떤 것도 모니터링하지 않습니다.
00:05:15키를 잃어버리면,
00:05:16데이터는 영영 사라집니다.
00:05:17Iceberg 쓰기 기능은 아직 꽤 새로운 확장 기능이기도 하고요.
00:05:22하지만 분석 업무, Parquet나 CSV 데이터를 처리하고, ELT 변환을 하거나,
00:05:28노트북에서 데이터를 탐색하는 등, 몇 MB에서 단일 머신 규모의 데이터를 다룬다면
00:05:33DuckDB는 최고의 툴 중 하나입니다.
00:05:35MIT 라이선스의 완전 무료이며 유료 결제벽도 없죠.
00:05:39만약 앱을 위한 트랜잭션 백엔드가 필요하거나, 매일 수십억 개의 행을 처리하는데
00:05:44메모리를 직접 튜닝하고 싶지 않다면, 이 툴은 적합하지 않으니 다른 것을 찾으시면 됩니다.
00:05:50상황에 맞는 올바른 데이터베이스를 고르는 게 중요하죠.
00:05:52이런 코딩 팁과 정보가 도움이 되었다면 BetterStack 채널을 구독해 주세요.
00:05:56다음 영상에서 뵙겠습니다.