DB 셋, 다른 일
이 셋이 경쟁자처럼 자주 거론되는데, 사실 다른 질문에 답하는 도구야.
| 속성 | SQLite | PostgreSQL | MySQL |
|---|---|---|---|
| 아키텍처 | In-process 라이브러리 | Client/server | Client/server |
| 배포 | 파일 한 개 | 데몬 + 설정 | 데몬 + 설정 |
| 동시 writer | 한 번에 한 명 (파일당) | 다수, MVCC | 다수, MVCC |
| 동시 reader | 무제한 (WAL) | 무제한 | 무제한 |
| Typing | Dynamic (또는 STRICT 3.37+) | Strict, rich | Strict |
| Replication | Add-on (Litestream/LiteFS/Turso) | Built-in streaming | Built-in (binlog) |
| JSON | JSON1 + JSONB (3.45+) | JSONB native | JSON native |
| Full-text search | FTS5 빌트인 | tsvector | FULLTEXT (InnoDB) |
| 인증 모델 | 파일시스템 | Roles + RLS | User accounts |
| Best fit | 앱 내 데이터 레이어 | Multi-tenant 시스템 | 웹앱 DB tier |
Principle: Feature 체크리스트가 아니라 배포 모양으로 골라. 데이터가 여러 머신에서 닿아야 하면 server 필요. 데이터가 코드 도는 자리에 살 수 있으면 SQLite 가 운영 관심사 한 층을 통째로 없애줘.
모던 SQLite 는 앱 레벨 워크로드 기준 Postgres 와의 feature gap 을 거의 닫았어 — JSON, FTS, window functions, CTE, generated columns, partial indexes, expression indexes, UPSERT, RETURNING 다 있음. 못 닫은 건 여러 머신의 다중 writer gap 이고, 그건 닫는 척도 안 해.