로컬 데이터베이스(파일 DB) 총정리
한눈에 보기
서버 없이 하나의 파일(혹은 소수의 파일)에 데이터를 저장·조회할 수 있는 엔진들을 “로컬 데이터베이스” 또는 “임베디드 DB”라 부른다. 설치가 간단하고, 배포·백업이 쉬워 모바일·데스크톱·IoT·클라이언트-사이드 웹 앱에 널리 쓰인다.
1. 왜 로컬 DB인가?
장점 | 설명 |
---|
무설치 | 별도 서버 프로세스가 필요 없다. 실행 파일 옆에 DB 파일만 두면 끝. |
경량 | 수 백 KB ~ 수 MB 수준의 러닝타임으로도 동작. |
트랜잭션 지원 | ACID 보장하는 엔진 다수. |
쉬운 배포·백업 | DB = 단일 파일 → 복사·동기화·버전관리까지 간단. |
보안 옵션 | 파일 단위 암호화·암호 보호 기능 내장. |
2. 분류 & 대표 엔진
유형 | 대표 DB | 특징 |
---|
관계형(Relational) | SQLite, DuckDB, H2, Firebird Embedded, SQL Server Compact | SQL 지원, 스키마 명확, 트랜잭션 강력. |
키–값(Key-Value) | LevelDB, RocksDB, LMDB | 단순 키 조회 속도 최우선, LSM-Tree 또는 B+Tree 구조. |
문서(Document) | LiteDB (.NET), Realm, TinyDB (Python) | JSON/BSON 형태로 저장, 스키마 유연. |
타임시리즈(Time-Series) | TDengine Standalone, QuestDB Embedded | 시간 기반 압축·쿼리 최적화, 센서·로그 데이터에 적합. |
컬럼 기반(Analytics) | DuckDB, ClickHouse Local | 컬럼 저장 + 벡터화 실행 → 로컬 OLAP. |
브라우저 내장 | IndexedDB, PouchDB | Web API 기반, 오프라인 웹 앱. |
3. 주요 엔진 살펴보기
3-1. SQLite
- 언어 바인딩: C/C++ core, 거의 모든 언어에서 지원
- 특징: 풀(Full)-SQL 92 지원, WAL(Write-Ahead Log) 모드, 확장 모듈(FTS, JSON1)
- 장점: 신뢰성·성숙도 최고, 단일 ①파일.
- 제약: 동시 다중 쓰기 성능 한계(로그 기반으로 완화).
3-2. DuckDB
- 포지션: “로컬용 미니 OLAP”
- 특징: 컬럼 저장, 벡터화 실행 엔진, Parquet/CSV 직접 읽기·쓰기, Python/R 연동 탁월.
- 사용 예: 데스크톱 데이터 분석 툴, Jupyter 노트북.
3-3. LevelDB / RocksDB
- 구조: LSM-Tree 기반 키–값 스토어
- LevelDB = Google, RocksDB = Meta(페이스북)에서 포크 후 고성능화
- 장점: SSD 최적 IO, 높은 쓰루풋, column family·압축·블룸 필터.
3-4. Realm
- 대상: 모바일(iOS/Android), Kotlin Multiplatform, .NET MAUI
- 특징: 객체 지향 API, 동적 스키마 마이그레이션, 실시간 Sync 옵션(MongoDB Atlas).
3-5. LiteDB (.NET)
- 형식: 단일 .litedb 파일에 BSON 컬렉션 저장
- 장점: Entity‐like LINQ 쿼리, 암호화, 트랜잭션, 무설치.
- 사용 예: WPF/WinForms 로컬 캐시, 게임 세이브 데이터.
4. 선택 가이드
요구 사항 | 추천 후보 |
---|
SQL & 범용 앱 | SQLite, H2 (Java), SQL CE |
대용량 분석 | DuckDB, ClickHouse Local |
키–값 캐시 | RocksDB, LMDB |
모바일 OOP 모델 | Realm, ObjectBox |
.NET 단일파일 NoSQL | LiteDB |
브라우저 오프라인 | IndexedDB + PouchDB Sync |
5. 성능·안정성 체크리스트
- 동시성 모델: 파일 잠금(전역·페이지·WAL) vs MVCC.
- Write-Ahead Logging: 활성화 시 트랜잭션 충돌 최소화.
- 압축·암호화: 페이지 압축, AES-256 지원 여부.
- 백업 전략: 핫백업(복사), 스냅샷, 점진적 백업 지원.
- 커뮤니티 & 유지보수: 최근 커밋 빈도, 버전 릴리스 주기.
6. 실전 Tips
- VACUUM / Compact: 주기적 공간 회수로 파일 단위 파편화 방지.
- WAL 모드(Write-Ahead Log): 쓰기 많을 때 성능 향상.
- 암호화 플러그인: SQLite - SEE, SQLCipher, LiteDB internal.
- 테스트: 같은 환경에서 CRUD·동시 쓰기 벤치마크 후 채택.
7. 참고 링크