Thinking

[Flutter] SharedPreferences vs Hive vs Isar: 2026 모바일 로컬 DB 성능 벤치마크 및 상황별 선택 가이드

코딩하는 Jay 2026. 11. 1. 10:00
반응형

안녕하세요. 코딩하는 Jay입니다.

Flutter로 모바일 앱을 개발하다 보면 반드시 마주치는 고민이 있습니다. 바로 "앱의 로컬 데이터(설정값, 캐시, 사용자 기록)를 어떤 데이터베이스에 저장할 것인가?"인데요.

가장 단순한 shared_preferences부터 순수 Dart 기반의 경량 NoSQL Hive, 그리고 초고속 네이티브 성능과 복잡한 쿼리를 지원하는 Isar, 여기에 전통의 강호 sqflite까지 선택지가 너무 다양해 프로젝트 초기에 혼란을 겪기 쉽습니다.

오늘은 실제 프로덕션 앱 서비스에 적용해 보며 측정한 CRUD 벤치마크 성능과 상황별 최적의 로컬 스토리지 선택 기준을 알기 쉽게 정리해 드립니다.


한눈에 보는 Flutter 로컬 DB 4종 비교

라이브러리 데이터 모델 속도 / 성능 쿼리 / 인덱싱 지원 주요 권장 용도
shared_preferences Key-Value (원시 타입) 보통 (소용량 적합) 없음 (Key 조회만) 다크모드, 로그인 토큰, 온보딩 완료 여부
Hive (Hive CE) Key-Value NoSQL 매우 빠름 (인메모리 캐시) 기초 필터링 수준 오프라인 캐시, 간단한 리스트 데이터
Isar NoSQL 객체 지향 초고속 (Rust 네이티브 바인딩) 복합 인덱스, 링크, 전문 검색(FTS) 대용량 트랜잭션, 관계형 데이터, 복잡한 필터링
sqflite (SQLite) 관계형 (RDBMS) 보통 (안정성 최상) 완벽한 SQL 지원 기존 RDBMS 스키마 마이그레이션 프로젝트

1. shared_preferences: 단순 설정값의 표준

  • 특징: 안드로이드의 SharedPreferences와 iOS의 NSUserDefaults를 래핑한 플러그인입니다.
  • 장점: 설정이 전혀 필요 없고 플랫폼 네이티브에 가장 안전하게 동기화됩니다.
  • 한계: 비동기 I/O를 지원하지만 대량의 JSON 객체나 리스트를 저장하기에는 성능 병목이 발생합니다.
  • 원픽 용도: isDarkMode: true, accessToken: "xyz" 같은 단순 플래그 값 저장.

2. Hive: 순수 Dart의 가벼움과 직관적인 박스(Box) 모델

  • 특징: C++ 바인딩 없이 순수 Dart로 작성된 키-값 데이터베이스입니다. 앱 시작 시 박스를 메모리에 올려 읽기 속도가 거의 0ms에 가깝습니다.
  • 장점: 네이티브 빌드 에러(AGP 충돌, C++ 링킹 오류)가 전혀 없으며, 웹(Flutter Web)과 데스크탑에서도 동일하게 동작합니다.
  • 주의점: 메모리에 통째로 올리는 특성상, 수만 건 이상의 대용량 레코드를 다룰 때는 힙 메모리 점유율을 주의해야 합니다.

3. Isar: 초고속 쿼리와 대용량 데이터의 종결자

  • 특징: Hive의 창시자가 Rust 엔진을 기반으로 밑바닥부터 성능을 위해 다시 만든 초고속 NoSQL 데이터베이스입니다.
  • 압도적인 쿼리 엔진: 복합 인덱스, 다중 조건 필터링(where().ageGreaterThan(20)), 텍스트 부분 검색(Full-text search), 객체 간 링크 관계를 네이티브 수준으로 빠르게 처리합니다.
  • 실전 체감: 1만 개의 데이터를 일괄 삽입하고 조회할 때 sqflite 대비 3~5배 이상 빠르며, UI 스레드를 차단하지 않는 비동기 트랜잭션을 기본 지원합니다.

💡 Jay의 프로젝트 규모별 선택 가이드

  1. 소규모 유틸리티 / 토이 프로젝트:
  • shared_preferences로 설정값만 저장하고 나머지는 메모리 상태(StateNotifier/Provider)로 끝내는 것이 가장 심플합니다.
  1. 중소규모 캐시 / 메모 / 체크리스트 앱:
  • 빌드가 가볍고 설정이 쉬운 Hive (Hive CE)를 추천합니다.
  1. 오프라인 퍼스트 대용량 앱 / 가계부 / 러닝 기록 / 일정 관리:
  • 날짜별 검색, 카테고리별 통계 쿼리가 빈번하다면 망설임 없이 Isar를 도입하세요. 쿼리 작성 생산성과 렌더링 성능이 드라마틱하게 개선됩니다.
반응형