728x90
반응형
Flutter에서 로컬 데이터베이스를 사용할 때 주로 사용하는 옵션들은 몇 가지가 있습니다. 각 데이터베이스는 저장해야 할 데이터의 종류와 규모에 따라 선택할 수 있습니다. 아래는 Flutter에서 주로 사용되는 로컬 DB 솔루션입니다.
1. SQLite (sqflite 패키지)
- 가장 많이 사용되는 로컬 DB 솔루션입니다. Flutter 애플리케이션에서 관계형 데이터베이스가 필요한 경우 많이 사용됩니다.
- sqflite 패키지는 SQLite의 Flutter용 바인딩이며, SQL 문을 사용해 데이터를 조회, 삽입, 수정, 삭제할 수 있습니다.
- 특징:
- 관계형 데이터베이스로, 테이블, 행, 열 등의 구조를 가진 데이터베이스.
- SQL 문을 사용해 복잡한 쿼리 작성 가능.
- 앱에서 구조화된 데이터를 다룰 때 적합.
- 사용 방법:
- sqflite 패키지를 pubspec.yaml에 추가하여 사용할 수 있습니다.
dependencies: sqflite: ^2.0.0+4 path: ^1.8.0 # DB 경로 설정에 필요- 기본적인 CRUD 작업을 지원합니다.
2. Hive
- 경량화된 NoSQL 데이터베이스로, 키-값 저장소 방식입니다.
- 특징:
- 빠른 속도: Hive는 매우 빠르고, 많은 양의 데이터를 처리하는 데 적합합니다.
- 스키마리스: 미리 스키마를 정의할 필요가 없으며, 유연하게 데이터를 저장할 수 있습니다.
- 복잡한 관계형 데이터보다는 간단한 구조화 데이터를 저장하는 데 적합합니다.
- 바이너리 데이터 처리 가능.
- 사용 방법:
- hive 패키지를 추가하고, 데이터베이스를 열어서 사용.
dependencies: hive: ^2.0.4 hive_flutter: ^1.1.0- Flutter에서 사용하기 위해서는 hive_flutter와 함께 hive_generator로 모델 클래스를 생성할 수 있습니다.
3. Moor (Drift)
- SQLite를 쉽게 사용할 수 있게 해주는 ORM 패키지입니다. SQL 문을 작성할 필요 없이 Dart 코드로 데이터베이스 작업을 할 수 있습니다.
- 특징:
- 관계형 데이터베이스인 SQLite를 사용하지만, 더 코드 중심적으로 데이터베이스 작업을 할 수 있습니다.
- ORM(Object-Relational Mapping) 방식으로, 객체 지향적인 방식으로 데이터베이스 작업을 할 수 있습니다.
- 자동 생성된 코드를 활용해 유지보수가 용이합니다.
- 사용 방법:
- drift 패키지를 추가하고, 데이터베이스 모델과 테이블을 정의할 수 있습니다.
dependencies:
drift: ^1.6.3
sqlite3_flutter_libs: ^0.5.6 # SQLite와 함께 사용
4. ObjectBox
- 고성능 NoSQL 데이터베이스로, ORM(Object-Relational Mapping)을 지원합니다.
- 특징:
- 매우 빠른 퍼포먼스.
- 관계형 데이터보다 객체 중심 데이터를 다룰 때 유용.
- 간편한 사용: 복잡한 설정 없이 쉽게 사용 가능.
- 사용 방법:
dependencies: objectbox: ^1.0.0- 데이터를 객체로 저장하고 쿼리할 수 있어, ORM으로 쉽게 사용할 수 있습니다.
5. Shared Preferences
- 작은 양의 데이터를 저장할 때 많이 사용되며, 보통 앱 설정이나 사용자 기본 정보 같은 데이터를 저장하는 데 적합합니다.
- 특징:
- key-value 형태로 간단하게 데이터 저장.
- 복잡한 데이터나 대량의 데이터를 저장하기엔 부적합.
- 앱의 설정이나 간단한 상태 저장에 많이 사용.
- 사용 방법:
dependencies:
shared_preferences: ^2.0.6
6. Realm
- 모바일에서 사용하기 위한 NoSQL 데이터베이스로, 매우 빠른 퍼포먼스와 객체 지향적인 접근 방식을 제공합니다.
- 특징:
- 실시간 데이터 동기화 기능이 제공됨.
- 스키마 기반 데이터베이스로, 데이터를 객체로 저장하고 불러오는 방식.
- 대량의 데이터를 빠르게 처리할 수 있으며, 모바일 환경에 최적화됨.
- 사용 방법:
- realm 패키지를 Flutter에 추가하여 사용 가능.
dependencies:
realm: ^1.0.0
각 데이터베이스 비교
- SQLite (sqflite): 관계형 데이터베이스가 필요할 때 적합, SQL 사용.
- Hive: 빠르고 가벼운 NoSQL, 키-값 저장 방식, 스키마리스.
- Moor (Drift): ORM 기반으로 SQLite를 쉽게 사용 가능.
- ObjectBox: 고성능 NoSQL DB, 객체 지향적 데이터 처리에 적합.
- Shared Preferences: 간단한 Key-Value 저장, 설정 같은 작은 데이터에 적합.
- Realm: 모바일 환경에 최적화된 고성능 NoSQL DB, 실시간 동기화 기능 제공.
추천
- 복잡한 구조의 데이터를 저장하고 관계형 데이터베이스가 필요하다면 SQLite(sqflite) 또는 Moor(Drift)를 사용하세요.
- 빠르고 가벼운 DB가 필요하고, 간단한 데이터 구조를 사용한다면 Hive나 ObjectBox를 추천합니다.
- 간단한 설정이나 작은 데이터 저장이 필요하다면 Shared Preferences가 적합합니다.
'Category > Flutter' 카테고리의 다른 글
| Flutter 라이프사이클 (1) | 2024.11.02 |
|---|---|
| [Flutter] StatelessWidget, StatefulWidget (0) | 2024.11.01 |
| Flutter 프로젝트에서 UI 코드 구조 시각화로 가독성 높이기 (0) | 2024.10.31 |
| Flutter UI 디자인을 위한 Flutter 위젯과 속성 알아보기 (1) | 2024.09.28 |
| Flutter UI 디자인 시 알아야 할 핵심 요소 정리 (1) | 2024.09.28 |