기타 Lobsters · 2026-09-20

새로고침해도 안 날아가는 브라우저 DB? DuckDB-Wasm OPFS 영구 저장 지원 소식

핵심 요약
  • DuckDB-Wasm이 브라우저 내 파일 시스템(OPFS)을 지원해 탭을 닫거나 새로고침해도 데이터가 영구 보존됩니다.
  • 기존 IndexedDB 직렬화 우회 방식 없이 일반 .duckdb 파일과 WAL, 체크포인트를 그대로 쓸 수 있습니다.
  • 버그가 있는 특정 npm 최신 빌드를 피해 1.32.0 또는 1.33.1-dev64.0 이상 버전을 사용해야 정상 작동합니다.
요약 DuckDB-Wasm이 브라우저의 전용 샌드박스 파일 시스템인 OPFS(Origin Private File System)를 지원하면서, 웹 브라우저 안에서도 데이터가 영구적으로 보존되는 정식 데이터베이스 환경을 구축할 수 있게 되었습니다. 2021년 DuckDB-Wasm이 처음 공개되었을 당시에는 브라우저 탭을 닫으면 WebAssembly 힙 메모리에 상주하던 모든 데이터가 사라지는 치명적인 한계가 있었습니다. 이를 해결하려면 데이터를 수동으로 Parquet 형식으로 직렬화한 뒤 IndexedDB에 저장하고 재접속 시 다시 불러와야 하는 번거로운 작업이 애플리케이션 단에서 필요했습니다. 그러나 2023년 3월 이후 최신 브라우저들이 무작위 읽기 및 쓰기가 가능한 OPFS를 정식 지원하기 시작하면서 브라우저 스토리지 환경에 큰 변화가 생겼습니다. 이번 기능 추가를 통해 개발자는 단순히 데이터베이스 경로에 'opfs://' 접두사를 지정하는 것만으로 브라우저를 새로고침하거나 종료해도 데이터가 유지되는 정규 .duckdb 파일을 다룰 수 있게 되었습니다. 트랜잭션 기록을 위한 WAL(Write-Ahead Log)과 체크포인트 기능이 기본 작동하며, 브라우저에 저장된 .duckdb 파일을 추출해 로컬 CLI나 파이썬 클라이언트에서 그대로 열어볼 수도 있습니다. 또한 원격 데이터셋을 HTTP 레인지 요청으로 한 번만 가져와 OPFS에 캐싱해두거나, 집계 결과를 OPFS 내 Parquet 파일로 저장해 네트워크 비용을 획기적으로 줄이는 것도 가능해졌습니다. 다만 개발진은 npm 최신 배포 버전 중 일부 빌드(1.33.1-dev57.0)에서 경로 파싱 버그로 인해 파일 생성 후 쓰기가 이뤄지지 않는 문제가 있으므로, 안정 버전인 1.32.0이나 패치가 적용된 최신 태그(1.33.1-dev64.0 이상)를 지정해 사용할 것을 권장하고 있습니다.
Sponsored · 광고