LUVIT♥ EPL과 유튜브 데이터로 배우는 DuckDB | 이기준
DuckDB를 활용한 SQL 기반 데이터 분석 입문서다. SQL 기초부터 고급 활용, 파이썬 연동, 데이터 시각화와 대시보드 제작까지 단계적으로 학습할 수 있다. EPL 데이터, 유튜브 트렌드, 「케이팝 데몬
www.aladin.co.kr
현대적인 분석을 위한 실용적이고 독창적인 DuckDB 확장 기능 모음 — 레이크하우스 읽기/쓰기, 클라우드 파일, 상호 운용성, 그리고 꼭 챙겨둘 만한 몇 가지 추가 기능까지.
DuckDB에 대해 재미있는 점이 무엇인지 아십니까?
모두가 DuckDB를 마치 “그냥 빠른 로컬 데이터베이스”인 것처럼 이야기합니다.
물론 그렇습니다. 하지만 DuckDB가 실제 업무 워크플로에서 계속 등장하는 이유는 더 단순합니다. 바로 확장 기능(extension)들이 DuckDB를 작고 날카로운 도구 상자로 바꿔주기 때문입니다.
어느 순간에는 로컬 Parquet 파일을 조회하고 있습니다. 그런데 다음 순간에는 PostgreSQL을 스캔하고, 객체 스토리지에 있는 Iceberg 메타데이터를 읽고, 보고서를 Excel로 내보내고, 공간(geospatial) 조인을 수행하고 있습니다. 클러스터를 구축할 필요도 없고, 누군가에게 새로운 데이터 웨어하우스 프로젝트를 요청할 필요도 없습니다.
솔직히 말해봅시다. 모든 확장 기능이 필요한 것은 아닙니다.
매주 실제 업무에서 사용하는 확장 기능들이 필요할 뿐입니다.
여기 제가 실제로 함께 배포하고 싶은 2026년 추천 패키지를 소개합니다.
당신의 “파워팩(power-pack)” 철학
DuckDB 확장 기능은 다음 세 가지 역할 중 하나를 수행할 때 가장 빛을 발합니다.
- 데이터가 있는 곳에 연결하기(S3/Azure, PostgreSQL/SQLite/MySQL, 카탈로그)
- 다루기 까다로운 형식을 해석하기(JSON, Excel, Avro)
- 도메인별 초능력 추가하기(공간 분석, 전문 검색, 벡터 검색)
그 외의 것들은 모두 선택적인 양념에 가깝습니다.
또한, 단순하게 유지하는 것이 중요합니다. 핵심(core)에 포함되어 있거나, 널리 사용되며, 다양한 환경에서 안정적으로 동작하는 확장 기능을 우선적으로 선택하십시오. DuckDB는 core 및 community 저장소에 대해 INSTALL과 LOAD 명령을 제공하므로 이를 매우 쉽게 사용할 수 있습니다.
100번은 붙여 넣게 될 설정
한 번 설치하고, 필요할 때 로드하기
-- Core extensions (공식 저장소)
INSTALL httpfs; LOAD httpfs;
INSTALL aws; LOAD aws;
INSTALL azure; LOAD azure;
INSTALL iceberg; LOAD iceberg;
INSTALL delta; LOAD delta;
INSTALL postgres; LOAD postgres;
INSTALL sqlite; LOAD sqlite;
INSTALL mysql; LOAD mysql;
INSTALL json; LOAD json;
INSTALL excel; LOAD excel;
INSTALL spatial; LOAD spatial;
INSTALL fts; LOAD fts;
INSTALL vss; LOAD vss;
INSTALL icu; LOAD icu;
한 가지 좋은 습관은 모든 세션에서 무작정 모든 확장 기능을 로드하지 않는 것입니다. 워크플로에 맞춰 필요한 것만 로드하십시오.
나중에 “왜 이 바이너리를 이 플랫폼에서는 사용할 수 없는 거지?”와 같은 문제를 디버깅하게 될 때, 미래의 당신이 현재의 당신에게 감사할 것입니다.
2026년에 반드시 설치해야 할 확장 기능
1) httpfs (입문용 마약)
실제 환경에서 DuckDB를 사용한다면 원격 파일을 읽게 됩니다.
이것은 있으면 좋은 기능이 아닙니다. 그냥 화요일에 하는 일입니다.
httpfs는 HTTP(S) 읽기와 S3 스타일 객체 스토리지의 읽기·쓰기·글로빙(globbing)을 위한 파일 시스템 계층을 제공합니다.
이것으로 가능한 것들
- 스테이징 과정 없이 s3://…/*.parquet 파일 읽기
- 별도의 인프라 없이 작은 규모의 “데이터 레이크” 워크플로 구축
-- 원격 Parquet 파일 직접 읽기
SELECT *
FROM 'https://example.com/data/events.parquet'
LIMIT 100;
-- S3 스타일 경로 사용
-- (인증 정보는 SQL 외부에서 관리)
SELECT count(*)
FROM 's3://my-bucket/logs/2026/01/*.parquet';
네이티브 SDK 기능이나 더 깔끔한 인증 방식을 사용하고 싶다면 aws 또는 azure 확장 기능과 함께 사용하는 것이 좋습니다.
2) 레이크하우스 워크플로를 위한 Iceberg (iceberg)
예전의 Iceberg는 “읽기 전용이고 약간 다루기 까다로운” 기술이었습니다.
이제는 그렇지 않습니다.
Iceberg 확장 기능은 객체 스토리지를 위해 httpfs 및 azure와 함께 사용할 수 있으며, Iceberg 메타데이터로부터 테이블을 스캔할 수 있습니다.
또한 2025년 후반에 DuckDB의 Iceberg 지원은 실제 쓰기 기능(INSERT/UPDATE/DELETE)까지 확장되었습니다. 이는 "로컬 분석"이 할 수 있는 일의 범위를 크게 바꾸어 놓았습니다.
INSTALL iceberg; LOAD iceberg;
INSTALL httpfs; LOAD httpfs;
SELECT count(*)
FROM iceberg_scan('s3://bucket/table/metadata/v1.metadata.json');
또 하나 알아둘 만한 점은 Iceberg 지원이 DuckDB-Wasm에도 등장하고 있다는 것입니다. 이는 브라우저 네이티브 분석과 데모 환경에서 매우 흥미로운 가능성을 열어주고 있습니다.
3) 거버넌스 중심 환경을 위한 Delta (delta) + Unity Catalog (unity_catalog)
Delta는 여전히 곳곳에서 사용되고 있으며, 특히 기존 환경을 전면적으로 재구축하지 않고도 레이크하우스 포맷을 도입하려는 조직에서 널리 활용되고 있습니다.
DuckDB의 delta 확장 기능은 Delta 테이블에 대한 네이티브 읽기 기능을 제공하며, 핵심(Core) 확장 기능으로 취급됩니다.
또한 Databricks 중심의 생태계를 운영하고 있다면, unity_catalog 확장 기능이 존재하며, 이를 통해 해당 거버넌스 계층을 DuckDB의 Delta 지원과 연결할 수 있습니다.
INSTALL delta; LOAD delta;
-- 예시 (환경에 따라 경로는 달라질 수 있음)
SELECT *
FROM delta_scan('s3://my-bucket/delta/events/')
WHERE event_date >= DATE '2026-01-01';
제가 DuckDB에서 Iceberg 대신 Delta를 선택하는 경우는 다음과 같습니다.
이미 데이터 레이크가 Delta 형식으로 구축되어 있고, 데이터를 복사하지 않은 채 빠른 애드혹(ad-hoc) 분석만 수행하면 되는 경우입니다.
CSV 내보내기를 멈추게 만드는 상호운용성 3종 세트
4) PostgreSQL / SQLite / MySQL 스캐너 (postgres, sqlite, mysql)
이것이야말로 조용한 킬러 기능입니다.
ETL을 먼저 구축하지 않고도 OLTP 데이터베이스를 데이터 소스로 직접 사용할 수 있습니다.
DuckDB는 MySQL, PostgreSQL, SQLite를 위한 스캐너 방식의 확장 기능을 제공하며, 사용할 수 있는 경우에는 일반적으로 이러한 스캐너를 활용하는 것이 더 바람직합니다.
PostgreSQL 예제:
INSTALL postgres; LOAD postgres;
SELECT *
FROM postgres_scan(
'host=localhost port=5432 dbname=mydb user=myuser password=mypass',
'public',
'orders'
)
WHERE created_at >= now() - INTERVAL 7 DAYS;
이 기능이 중요한 이유는 운영 데이터베이스의 테이블을 대상으로 데이터 복제 프로젝트를 진행하지 않고도 OLAP 스타일의 집계 분석을 수행할 수 있기 때문입니다.
즉, "한 시간 안에 답을 찾아야 한다"는 상황에 매우 적합합니다.
SQLite 예제:
INSTALL sqlite; LOAD sqlite;
ATTACH 'app.db' (TYPE sqlite);
USE app;
SELECT user_id, count(*)
FROM events
GROUP BY 1
ORDER BY 2 DESC;
몇 기가바이트 규모의 SQLite 파일을 분석하기 위해 Pandas로 CSV를 내보내는 작업을 아직도 하고 있다면, 이 확장 기능은 작업 방식을 완전히 바꿔놓을 수 있습니다.
지저분한 데이터를 위한 확장 기능 모음
5) 반정형 데이터가 가득한 현실을 위한 json
JSON은 사라지지 않을 것입니다.
그리고 2026년의 시스템들은 "이벤트 블롭(event blob)"을 매우 좋아합니다.
DuckDB의 JSON 지원은 배포 환경에 따라 내장 기능 또는 핵심(Core) 확장 기능으로 제공되며, 실제로 매우 자주 사용하게 되는 기능 중 하나입니다.
다음과 같은 작업에 활용할 수 있습니다.
- 웹훅(Webhook) 페이로드 파싱
- 줄 단위 JSON(Newline-delimited JSON) 읽기
- 조인을 위해 타입이 지정된 필드 추출
6) 마지막 단계(그리고 첫 단계)를 위한 excel
엔지니어들은 자신에게 Excel이 필요 없다고 말합니다.
그러다가 이해관계자가 Slack에 .xlsx 파일 하나를 올리는 순간 생각이 달라집니다.
DuckDB의 excel 확장 기능은 .xlsx 파일의 읽기와 쓰기를 지원합니다. (.xls는 지원하지 않습니다.)
INSTALL excel; LOAD excel;
SELECT *
FROM read_xlsx('weekly_report.xlsx', sheet='January');
COPY (
SELECT region, sum(revenue) revenue
FROM sales
GROUP BY 1
)
TO 'summary.xlsx' (FORMAT xlsx);
Excel은 여전히 비즈니스 세계의 공용 언어입니다.
DuckDB를 사용하면 CSV로 내보내고, 다시 Excel에서 열고, 피벗 테이블을 만들고, 다시 저장하는 과정을 반복할 필요 없이 SQL에서 직접 .xlsx 파일을 읽고 생성할 수 있습니다.
실제로 활용하게 될 도메인별 초능력
7) 장난감 데모가 아닌 진짜 지도를 위한 spatial
데이터에 좌표, 폴리곤, 경로 또는 행정 경계 정보가 포함되어 있다면 spatial 확장 기능은 DuckDB를 강력한 공간 분석 작업대로 바꿔줍니다.
또한 DuckDB의 "로컬 분석" 철학과도 잘 어울립니다.
빠르고, 반복적인 분석이 가능하며, 서버를 운영하는 번거로움도 없습니다.
8) 데이터 안을 검색해야 할 때를 위한 fts
전문 검색(Full-Text Search)은 애플리케이션만을 위한 기능이 아닙니다.
다음과 같은 작업에서 매우 강력한 성능을 발휘합니다.
- 로그 분석 및 문제 분류
- 고객 지원 티켓 검색
- 자유 형식 텍스트 속에서 이상한 제품 문제 찾기
9) 별도의 서비스를 원하지 않을 때를 위한 벡터 검색 vss
DuckDB 내부에서 벡터 유사도 검색을 수행하는 것은 "소규모 모델 운영(Small Model Ops)"에 가까운 접근 방식입니다.
로컬 임베딩을 생성하고, 최근접 이웃(Nearest Neighbor) 검색을 수행하며, 빠르게 실험과 평가를 반복할 수 있습니다.
DuckDB는 vss를 핵심(Core) 확장 기능 옵션 중 하나로 제공하고 있습니다.
아키텍처 흐름: 이 확장 기능 모음이 2026년 워크플로에 어떻게 들어맞는가
데이터 소스
(S3/Azure, Iceberg/Delta,
PostgreSQL/SQLite/MySQL,
JSON/Excel 파일)
|
v
+--------------------+
| DuckDB + Extensions|
| httpfs/aws/azure |
| iceberg/delta/uc |
| scanners + json |
| excel/spatial/fts |
| vss/icu |
+---------+----------+
|
v
출력: Parquet / Excel / 대시보드
또는
"지금 당장 질문에 답하기"
이것이 바로 확장 기능 생태계가 중요한 이유입니다.
당신은 데이터 웨어하우스를 구축하는 것이 아닙니다.
빠른 의사결정 루프(fast decision loop)를 구축하는 것입니다.
과소평가된 선택: 커뮤니티 확장 기능 (30개가 아니라 1~3개만)
DuckDB의 커뮤니티 확장 기능 생태계는 실제로 존재하며 계속 성장하고 있습니다.
하지만 npm을 다루듯 접근해야 합니다.
무분별하게 설치하는 것이 아니라 신중하게 선별해야 합니다.
제가 추천하는 "정말 필요할 때만" 사용하는 목록은 다음과 같습니다.
- 분석 및 집계를 위한 H3 인덱싱(지리 공간 헥사곤 그리드)
- 데이터 정제 및 중복 제거를 위한 고속 퍼지 매칭(Fuzzy Matching)
- 레거시 데이터가 등장했을 때 SAS, Stata, SPSS 파일을 읽기 위한 ReadStat
핵심은 매우 단순합니다.
어떤 확장 기능이 매주 사용하는 워크플로에 포함되지 않는다면, 굳이 유지할 필요가 없습니다.
결론: 2026년 DuckDB 도구 상자는 작고 날카로워야 한다
모든 것을 설치하면, 결국 모든 것을 유지보수해야 합니다.
그러지 마십시오.
실제로 가치가 있는 파워팩은 다음과 같습니다.
클라우드 + 레이크하우스
- httpfs
- aws / azure
- iceberg
- delta
- unity_catalog
상호운용성
- postgres
- sqlite
- mysql
지저분한 입력 데이터 처리
- json
- excel
도메인별 초능력
- spatial
- fts
- vss
- icu
<출처: https://medium.com/@Praxen/duckdb-extensions-youll-actually-use-in-2026-bd0ea86a359f>
'EPL과 유튜브 데이터로 배우는 DuckDB' 카테고리의 다른 글
| DuckDB의 더 친숙한 SQL - Part 2 (0) | 2026.06.05 |
|---|---|
| DuckDB의 더 친숙한 SQL - Part 1 (0) | 2026.06.04 |
| DuckDB 속도 비밀: 2026년을 위한 10가지 팁 (0) | 2026.05.31 |
| Python 분석을 강화하는 DuckDB 활용 팁 10가지 (0) | 2026.05.31 |
| DuckDB가 판을 바꾼다: 다중 쓰기가 가능한 프로토콜, Quack 만나보기 (0) | 2026.05.30 |
댓글