ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Query CSV, Excel, Parquet, and Arrow files in the Browser with DuckDB-Wasm + Next.js ๐Ÿฆ†โœจ
Dev.toDev.to
Frontend

DuckDB-Wasm ๊ธฐ๋ฐ˜ Client-side SQL ์—”์ง„์œผ๋กœ ๋ฐ์ดํ„ฐ ํ”„๋ผ์ด๋ฒ„์‹œ ๋ฐ ์ง€์—ฐ ์‹œ๊ฐ„ ํ•ด๊ฒฐ

Query CSV, Excel, Parquet, and Arrow files in the Browser with DuckDB-Wasm + Next.js ๐Ÿฆ†โœจ

Kumaravelu Saraboji Mahalingam2026๋…„ 5์›” 15์ผ4๋ถ„intermediate

Context

๊ธฐ์กด ์›น ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋„๊ตฌ๋Š” ํŒŒ์ผ ์—…๋กœ๋“œ ํ›„ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์„ค๊ณ„๋จ. ์ด ๋ฐฉ์‹์€ ๋ฐ์ดํ„ฐ ์ „์†ก์— ๋”ฐ๋ฅธ ๋„คํŠธ์›Œํฌ Latency ๋ฐœ์ƒ๊ณผ ์›๋ณธ ๋ฐ์ดํ„ฐ ์œ ์ถœ์ด๋ผ๋Š” Privacy ๋ฆฌ์Šคํฌ๋ฅผ ๋‚ดํฌํ•จ.

Technical Solution

  • DuckDB-Wasm ๋„์ž…์„ ํ†ตํ•œ SQL ์—”์ง„์˜ ๋ธŒ๋ผ์šฐ์ € ๋‚ด ๋กœ์ปฌ ์‹คํ–‰ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • WebAssembly ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์˜์กด์„ฑ ์—†๋Š” ๋ถ„์„์šฉ SQL ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ๊ตฌ์กฐ ์„ค๊ณ„
  • CSV์˜ ์ž๋™ ๊ฐ์ง€ ๋“ฑ๋ก ๋ฐ Excel์˜ ๋ธŒ๋ผ์šฐ์ € ๋‚ด ์ „์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•œ ํฌ๋งท๋ณ„ ๋งž์ถคํ˜• Ingestion ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ
  • Next.js SPA ๊ตฌ์กฐ์— ํŒŒ์ผ ์—…๋กœ๋“œ๋ถ€ํ„ฐ ์ฟผ๋ฆฌ ์‹คํ–‰, ๊ฒฐ๊ณผ ๋ Œ๋”๋ง๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์„ Client-side์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„
  • ๋ฐ์ดํ„ฐ ์›๋ณธ์„ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜์ง€ ์•Š๋Š” Local-first ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ฑ ๊ฐ•ํ™”

- ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์…‹์˜ ๋‹จ์ˆœ ์กฐํšŒ์šฉ ๋„๊ตฌ ์„ค๊ณ„ ์‹œ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค ์ ˆ๊ฐ์„ ์œ„ํ•ด WebAssembly ๊ธฐ๋ฐ˜ ์—”์ง„ ๊ฒ€ํ†  - ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ๋ฐ์ดํ„ฐ ์œ ์ถœ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ Client-side Processing ํŒจํ„ด ์ ์šฉ - ํŒŒ์ผ ํฌ๋งท๋ณ„(CSV, Parquet, Excel ๋“ฑ) ์„œ๋กœ ๋‹ค๋ฅธ ์ „์ฒ˜๋ฆฌ ์ „๋žต์„ UI ์ƒ๋‹จ์—์„œ ์ถ”์ƒํ™”ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ผ์›ํ™”

์›๋ฌธ ์ฝ๊ธฐ