| 항목 | 로컬 DB (Drift / Hive / Isar) | 디스크 저장(JSON 등 파일) |
|---|---|---|
| 구조 | 테이블/컬렉션(구조적) | 파일 단위(비정형 가능) |
| 장점 | 검색/정렬/필터링 강함 | 포맷 자유, 레포트·로그에 적합 |
| 단점 | 스키마·마이그레이션 필요 | 검색·부분 업데이트 비효율적 |
| 사용 목적 | 자주 조회/수정되는 데이터 | 변경 적고 “기록을 남기는” 데이터 |
| 실제 사례 | 채팅, 앱 캐시, 사용자 정보 | 로그, JSON 백업, PDF |
| 저장 방식 | 특징 | 장점 | 단점 | 주요 사용처 |
|---|---|---|---|---|
| 메모리 상태(Cubit/Provider 등) | 앱 실행 중에만 유지 | 가장 빠른 접근, 구조 단순 | 앱 종료 시 소멸 | UI 임시 상태, 선택값 등 |
| SharedPreferences | Key–Value 설정 저장 | 간단한 사용성, 가벼운 플래그 저장에 적합 | 복잡 구조 저장 어려움, 암호화 없음 | 다크모드, 온보딩 여부, 간단 설정 |
| flutter_secure_storage | OS 보안 저장소 사용 | 암호화, 민감 정보 저장 적합 | 느린 I/O, 대량 저장 부적합 | 액세스 토큰, 인증 정보 |
| 파일 저장(dart:io) | JSON/텍스트/바이너리 파일 저장 | 자유도 높음, 로그/백업 저장 적합 | 직렬화 직접 처리, 동시성 고려 필요 | 로그, 레포트, 백업 데이터 |
| SQLite (sqflite) | 관계형 데이터베이스 | 복잡 쿼리/조인 가능, 검증된 안정성 | SQL 직접 작성, 마이그레이션 부담 | 오프라인 DB, 검색/정렬이 많은 데이터 |
| Drift | SQLite 기반 타입 안전 ORM | 타입 안전 쿼리, 구조적 DB 설계 용이 | 러닝커브, 코드 생성 필요 | 로컬 데이터 구조가 복잡한 앱, 오프라인 동기화 |
| Hive | 키–값 기반 NoSQL | 매우 빠른 속도, 모델 직렬화 지원 | 복잡 쿼리/조인 불가 | 캐시, 간단한 도메인 저장, 스냅샷 |
| Isar | 고성능 로컬 NoSQL DB | 빠른 성능, 인덱스/필터 지원 | 마이그레이션 학습 필요 | 대량 로컬 데이터, 검색/필터 기능 |