SQLite는 응용 프로그램에 내장해 사용하는 SQL 데이터베이스 엔진이다. 별도의 데이터베이스 서버를 운영하는 방식과 달리 프로그램이 라이브러리를 통해 로컬 데이터에 접근한다. 기기와 응용 프로그램의 독립적인 저장 공간을 구성하는 데 적합한 특성을 가진다.
분야 | 내장형 관계형 데이터베이스 |
|---|
파일과 응용 프로그램
노트 앱이나 데스크톱 도구가 사용자의 자료를 구조화해 저장할 때 테이블과 인덱스를 활용할 수 있다. 파일을 직접 다룬다는 운영상의 단순함과 SQL의 질의 기능을 함께 제공하지만, 외부에서 파일에 접근할 권한은 운영체제와 응용 프로그램이 관리해야 한다.
동시성과 WAL
WAL 모드에서는 변경을 별도 로그에 기록하고 체크포인트를 통해 데이터베이스에 반영한다. 읽기와 쓰기가 함께 진행될 수 있지만 하나의 데이터베이스 파일에 대한 작성자는 한 번에 하나이다. WAL이 다수의 작성자를 동시에 허용하는 기능이라고 이해하면 안 된다.
WAL은 공유 메모리를 사용하므로 일반적인 네트워크 파일 시스템에서 여러 호스트가 하나의 파일을 공유하는 방식에 적용되지 않는다. 또한 주 데이터 파일만 따로 복사하면 활성 WAL의 변경을 빠뜨릴 수 있으므로 일관된 백업 경로를 사용한다.
사용 판단 예시
개인 일정 앱처럼 기기 안의 데이터를 저장하는 경우 내장형 구조가 자연스럽다. 반면 여러 서버가 공통 데이터를 고도로 병렬 갱신해야 한다면 클라이언트·서버형 DB가 더 알맞을 수 있다. 사이트 방문자 수 하나보다 쓰기 빈도와 트랜잭션 시간이 중요한 판단 자료다.
다른 엔진과의 차이
SQLite는 MySQL이나 PostgreSQL의 축소판으로만 볼 대상이 아니다. 로컬 저장과 낮은 관리 부담이라는 설계 목표가 다르다. 같은 SQL을 사용해도 자료형 처리·동시성·확장 기능의 차이를 검토해야 한다.
참고 자료
관련 기술 비교
데이터베이스 | |
|---|---|
관계형 | MySQL · PostgreSQL · MariaDB · SQLite |
NoSQL | |
스토리지 엔진 | |