플러터를 개발할 때 많이 사용하는 NoSQL 로컬 데이터베이스인 하이브(Hive)는 빠르고 가벼워서 내부 데이터 저장에 아주 적합합니다. 하지만 한 기기에서 사용하던 하이브 데이터베이스를 다른 기기로 옮겨야 할 경우 어떻게 해야 할지 막막하실 수 있습니다. 이 글에서는 플러터 하이브로 구축된 내부 데이터베이스를 다른 기기로 옮기는 방법을 구체적으로 설명드리겠습니다.
- 플러터 하이브(Hive) 데이터베이스 개요
- 하이브 데이터베이스 백업과 복원 전략
- 다른 기기로 데이터 이동하는 3가지 방법
- Google Drive를 통한 클라우드 백업 활용법
- 로컬 파일 직접 복사 방식
- 동기화 및 실시간 데이터 공유 방안
- 플러터 하이브 데이터 이전 시 주의해야 할 점
플러터 하이브(Hive) 데이터베이스 개요
Hive는 플러터에서 널리 사용되는 경량 NoSQL 키-값 데이터베이스로, 간편한 초기화와 빠른 데이터 입출력이 큰 장점입니다. 로컬에 데이터를 파일 형태로 저장하며, 별도의 서버나 복잡한 설정 없이 오프라인 상태에서도 자유롭게 사용할 수 있습니다. 하이브는 내부적으로 Box라는 저장 단위를 통해 모든 데이터가 구조 없이 저장됩니다.
Hive 구축 시 기본 단계는 아래와 같습니다.
- 플러터 앱에서 Hive 초기화(Hive.initFlutter())
- Box 열기(Hive.openBox(‘boxName’))
- 데이터 CRUD 작업 (add, put, get, delete 등)
단, 하이브 데이터베이스는 기기마다 로컬에 파일로 분리 저장되므로, 다른 기기에서 동일한 데이터를 사용하려면 파일 이동 또는 백업-복원 절차가 꼭 필요합니다.
하이브 데이터베이스 백업과 복원 전략
플러터 하이브 내장 데이터베이스를 다른 기기로 옮기려면 기본적으로 백업(데이터 추출) 후 복원(데이터 입력)의 과정을 거쳐야 합니다. 하이브는 Box별로 파일이 생성되는데, 해당 파일을 복사하거나 클라우드에 저장하여 데이터를 전송합니다.
백업 과정
- 먼저, 해당 Box가 열려있는지 확인합니다. 하이브 API 메서드인
Hive.isBoxOpen()를 이용할 수 있습니다. - Box의 위치(Path)를 얻어내어 내부 파일 경로를 파악합니다.
- Box 파일을 읽어내거나 복사할 준비를 합니다.
복원 과정
- 복원하고자 하는 기기에서 하이브 Box를 연 뒤, 백업 파일을 덮어쓰거나 새로운 Box로 데이터를 업로드합니다.
- 파일 자체를 덮어쓰는 경우 데이터 무결성에 주의해야 하며, 일부 패키지로 복원 작업을 도울 수 있습니다.
다른 기기로 데이터 이동하는 3가지 방법
플러터 하이브 데이터베이스를 다른 기기로 옮기는 대표적인 방법은 다음과 같습니다.
1. 로컬 파일 직접 복사
- 하이브 Box 파일을 외부 저장소나 USB, SD카드 등으로 복사합니다.
- 목적지 기기에 파일을 전달하여 지정된 Box 경로에 덮어씁니다.
- 간단하지만, 직접 파일 접근 권한이 필요하며, 앱의 파일 경로에 따라 복사 대상 파일이 달라질 수 있습니다.
2. 클라우드 백업 및 복원 (예: Google Drive)
- Box 파일을 Google Drive, Dropbox 등 클라우드에 업로드합니다.
- 다른 기기에서 해당 클라우드 계정에 로그인 후 파일을 다운로드하여 복원합니다.
- Google Drive API를 연동해 백업/복원 기능을 앱 내에 구현할 수 있어 사용자 경험이 좋습니다.
3. 서버 동기화
- 별도 서버를 구축해 하이브 데이터를 주기적으로 업로드 및 다운로드합니다.
- 실시간 혹은 반실시간 동기화가 가능하며, 여러 기기에서 동일 데이터를 공유할 때 효과적입니다.
- 구현 난이도가 높고 서버 관리 비용이 발생할 수 있습니다.
Google Drive를 통한 클라우드 백업 활용법
Google Drive를 활용하면 별도의 서버 없이도 안전하게 하이브 데이터를 백업하고 다른 기기로 옮길 수 있습니다. 백업 절차 주요 흐름은 다음과 같습니다.
- 하이브 Box 파일 경로를 얻어 로컬에 저장된 파일을 읽어옵니다.
- Google 인증을 진행하여 드라이브 접근 권한을 확보합니다.
- 기존에 백업된 파일이 있으면 삭제하고, 최신 파일을 새로 업로드합니다.
- 다른 기기에서는 Google Drive에서 파일을 다운로드해 하이브 Box 파일 위치에 저장하여 자동 복원합니다.
이 방법은 특히 사용자가 여러 기기를 활용하는 경우, 귀중한 데이터 손실을 방지하면서 간편하게 데이터 이동을 지원합니다.
로컬 파일 직접 복사 방식
가장 직관적이고 빠른 방법은 하이브 데이터 파일을 직접 다른 기기로 넘기는 것입니다.
방법 개요
- 하이브 Box 파일은 앱 데이터 디렉토리(예: Android의 경우 앱 내부 저장소) 내에 저장됩니다.
- 파일 매니저 앱이나 ADB 명령을 통해 Box 파일(.hive 확장자)을 추출합니다.
- 파일을 새로운 기기로 옮기고, 동일한 앱 경로에 붙여넣기 합니다.
- 앱을 재실행하면 기존 데이터가 복원됩니다.
하지만 운영체제별 권한 문제와 앱 경로 변경 가능성 때문에 사용자에게는 다소 불편할 수 있습니다.
데이터 동기화 및 실시간 공유 방안
플러터 하이브 데이터베이스를 여러 기기에서 항상 동기화된 상태로 유지하려면 다음과 같은 방식을 고려할 수 있습니다.
- Firebase나 별도 서버에 데이터 변경 내용(데이터 변경 이벤트)을 전송하여 서버에서 중앙 관리
- 변경된 데이터는 하이브 Box 파일 또는 분할된 데이터 조각 형태로 업로드
- 각 기기가 주기적으로 서버와 동기화하여 최신 상태 유지
- 하이브 데이터베이스를 JSON 변환 후 서버 전송 및 업데이트하는 형태도 가능합니다.
실시간 동기화는 개발 및 서버 비용이 상대적으로 크지만, 최신 데이터 무결성과 사용자 경험 향상에서 장점이 큽니다.
플러터 하이브 데이터 이전 시 주의해야 할 점
- 앱 버전 및 Box 구조 호환성 확인: 하이브 Box의 데이터 구조가 다르면 복원 시 오류가 발생할 수 있으므로, 이전과 동일한 데이터 모델을 사용해야 합니다.
- Box 파일 접근 시점: 데이터가 변경되는 중간에 파일을 복사하면 손상 가능성이 있으니 꼭 Box가 닫혀 있거나 앱이 비활성화된 상태에서 백업하세요.
- 보안 처리: 개인/민감 데이터는 암호화 처리 후 백업하는 것이 좋습니다.
- 파일 경로 환경 차이: 플랫폼마다 파일 경로가 다르므로, 상대경로나 API를 활용해 파일 위치를 동적으로 처리해야 합니다.
참고 영상: 플러터 Hive 데이터베이스 활용법
“`