C.W.K.
Stream
Lesson 09 of 10 · published

Scale 에서 SQLite 운영 — 진짜 패턴

~12 min · scale, operations, production

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

반복 등장 패턴

SQLite-at-scale 가 '거대한 한 DB' 거의 X; 거의 항상 '많은 SQLite DB'. 반복 패턴:

  • Per-tenant DB — 고객/유저마다 자기 파일. 백업, 마이그레이션, 삭제까지 per-tenant 연산. Tenant 수로 horizontal scale.
  • Litestream 통한 read replica — writer 1, 읽기 전용 N replica. Pull 기반, eventually consistent.
  • Hot/cold split — 현재 데이터 작은 SQLite, archived 데이터 별도 파일에 ATTACH 필요할 때.
  • Edge replica — Turso/D1 가 같은 logical DB 를 여러 region 에 push; read 로컬, write 가 primary 로 route.
  • 유저 id hash sharding — per-tenant 패턴 안 맞지만 SQLite 배포 단순함 원하는 제품.
Self-reference: 피파가 가장 단순 케이스 — 유저 1 (아빠), DB 1. 위 패턴 아직 적용 안 됨. 피파가 다른 아빠한테 서비스하면 — local-first 디자인이라 각 instance 가 자기 DB 가질 거고, 그 자체가 per-tenant 패턴.

Code

Hot/cold split 용 ATTACH·sql
ATTACH DATABASE '/path/to/archive.db' AS archive;

-- 양쪽 across query
SELECT id, body FROM messages
UNION ALL
SELECT id, body FROM archive.messages;

-- 옛 row 를 archive 로 이동
INSERT INTO archive.messages SELECT * FROM messages
WHERE created_at < datetime('now', '-1 year');

DELETE FROM messages WHERE created_at < datetime('now', '-1 year');

DETACH DATABASE archive;

External links

Exercise

거대 shared Postgres 쓰는 본인이 작업한 제품 하나 골라. Per-tenant SQLite DB 어떻게 보일지 스케치: boundary 어디 (per-customer? per-org? per-user?), 뭐가 어려워지나 (cross-tenant analytics?), 뭐가 쉬워지나 (삭제, 백업, 마이그레이션). 트레이드오프 net positive 인지 결정.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.