SQL 을 말할 줄 아는 C 라이브러리
SQLite 는 작고, 빠르고, 자체 완결적이고, 신뢰성 높고, full-featured SQL DB 엔진을 구현한 C 라이브러리야. 형용사 하나하나가 다 의미가 있어.
- Serverless — 별도 서버 프로세스 없음. 라이브러리가 직접 디스크 파일을 읽고 써. 셋업 X, 관리 X, 데몬 X.
- Zero-configuration — 설치 단계 없음, config 파일 없음, 포트 없음, 유저 없음. 파일 열면 끝.
- Single-file — DB 전체 (테이블, index, trigger, view) 가 cross-platform 한 파일 하나에 들어가. 파일 복사하면 그게 백업이야.
- Transactional — 모든 statement 가 transaction 안에서 돌아. 쓰기 도중에 크래시 나도 DB 안 깨져. 완전한 ACID.
- Self-contained — OS 의존성 최소화. 컴파일하면 약 900 KB. 어지간한 JS 프레임워크 번들보다 작아.
이 속성 묶음이 SQLite 를 Postgres 나 MySQL 같은 client-server DB 와 결정적으로 다르게 만들어. 별도 서버 X, 네트워크 프로토콜 X, 포트 X. SQLite 는 네 앱 프로세스 안에서 돌아 — 앱의 메모리, file descriptor 를 같이 써.
Principle: SQLite 의 배포 단위는 파일이야. 백업 =
cp. 마이그레이션 = 파일 교체. 복제 = rsync. 멘탈 모델이 파일 시스템 연산으로 단순화돼 — 그 단순함 자체가 기능이야.