빛나는 자리
아래 중 하나라도 걸리면 SQLite가 맞는 DB야.
- 머신 한 대로 끝나는 워크로드 — 데스크탑 앱, CLI 도구, 모바일 앱, embedded 기기, 서버 한 대짜리 웹 앱. 데이터가 코드 도는 자리에 같이 살아.
- 노드 하나에 몰리는 read 트래픽 — WAL 모드면 reader는 동시에 몇이든 붙을 수 있어. 파일 하나에서 초당 수만 건씩 읽어내는 것도 거뜬해.
- Local-first 제품 — 오프라인으로 돌다가 나중에 sync하는 앱들 말이야. Linear의 local-first 모드, Obsidian sync, 모바일 앱 같은 것들. 데이터 레이어가 사용자 기기 안에 있지.
- 테스트 fixture와 CI —
:memory:나 temp 파일로 새 DB를 즉석에서 뽑아. Docker도 필요 없고 Postgres 컨테이너가 뜨기를 기다릴 일도 없어. - Edge와 serverless — Cloudflare Durable Objects, Fly.io의 Litestream과 LiteFS, Turso, D1. DB 파일이 compute를 따라다녀.
- Append-only와 observability — 로그, metric, event store. 요즘 SQLite에 WAL을 얹으면 몰아치는 append도 우아하게 받아내.
- Document, config, cache — 예전 같으면 JSON이나 XML로 떨궜을 자리야. 그런 용도라면 SQLite가 더 나은 application file format이지.
Self-reference: 피파의 conversation은 전부 JSONL을 ground truth로 두고 SQLite를 mirror로 두는 방식으로 남겨. SQLite가 인덱싱하고 query할 수 있는 view를 맡고, JSONL이 지워지지 않는 append-only event log를 맡지. 둘이 서로를 떠받쳐. JSONL을 replay하면 SQLite를 다시 세울 수 있고, SQLite 인덱스가 WebUI를 빠르게 해줘.
SQLite 르네상스라는 말이 도는 이유가 여기 있어. 2024년에서 2026년 사이의 웹이 위 항목들을 통째로 다시 발견하고 있거든. edge compute가 '데이터를 코드 옆에'를 현실로 만들었고, Postgres-on-RDS 청구서가 비싸지면서 local-first가 다시 매력적으로 보이기 시작했어.