로컬 데이터베이스(파일 DB) 총정리

한눈에 보기
서버 없이 하나의 파일(혹은 소수의 파일)에 데이터를 저장·조회할 수 있는 엔진들을 “로컬 데이터베이스” 또는 “임베디드 DB”라 부른다. 설치가 간단하고, 배포·백업이 쉬워 모바일·데스크톱·IoT·클라이언트-사이드 웹 앱에 널리 쓰인다.

1. 왜 로컬 DB인가?

장점설명
무설치별도 서버 프로세스가 필요 없다. 실행 파일 옆에 DB 파일만 두면 끝.
경량수 백 KB ~ 수 MB 수준의 러닝타임으로도 동작.
트랜잭션 지원ACID 보장하는 엔진 다수.
쉬운 배포·백업DB = 단일 파일 → 복사·동기화·버전관리까지 간단.
보안 옵션파일 단위 암호화·암호 보호 기능 내장.

2. 분류 & 대표 엔진

유형대표 DB특징
관계형(Relational)SQLite, DuckDB, H2, Firebird Embedded, SQL Server CompactSQL 지원, 스키마 명확, 트랜잭션 강력.
키–값(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, PouchDBWeb 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 단일파일 NoSQLLiteDB
브라우저 오프라인IndexedDB + PouchDB Sync

5. 성능·안정성 체크리스트

  1. 동시성 모델: 파일 잠금(전역·페이지·WAL) vs MVCC.
  2. Write-Ahead Logging: 활성화 시 트랜잭션 충돌 최소화.
  3. 압축·암호화: 페이지 압축, AES-256 지원 여부.
  4. 백업 전략: 핫백업(복사), 스냅샷, 점진적 백업 지원.
  5. 커뮤니티 & 유지보수: 최근 커밋 빈도, 버전 릴리스 주기.

6. 실전 Tips

  • VACUUM / Compact: 주기적 공간 회수로 파일 단위 파편화 방지.
  • WAL 모드(Write-Ahead Log): 쓰기 많을 때 성능 향상.
  • 암호화 플러그인: SQLite - SEE, SQLCipher, LiteDB internal.
  • 테스트: 같은 환경에서 CRUD·동시 쓰기 벤치마크 후 채택.

7. 참고 링크