본문 바로가기

안드로이드/팁

[AOS] Room으로 이미지 백업 기능 구현 후기

반응형

식물일기 앱은 사용자간 상호 작용이 없기 때문에 로컬 디비만 활용하여 운영하고 있는데 백업 기능을 간간히 요청해주셨었습니다.

별도 서버를 두거나 파베를 이용하여 구현하면 간단한 기능이지만 수익이 나지 않는 앱에 투자하기란 쉽지 않았기 때문에 

로컬 백업 기능을 먼저 시도해봤습니다.

 

식물일기 디비 현황

-  Room 사용 

-  이미지 사용시 앱 내부 저장소에 크롭된 이미지를 저장하고 그 경로를 디비에 String값으로 담는다 ( 식물 이미지, 일기 작성시 이미지 )

- 그 외엔 모두 텍스트 데이터 

 

백업 기능 요구사항

- 디바이스 변경시 데이터 옮길수 있을것 

- 앱을 지웠다 깔아도 데이터 옮길수 있을것 

 

진행 순서

- 디비 구조 마이그레이션

- 디비 파일로 만들기

- 파일된 디비 읽어들이기 

 

 

디비 구조 마이그레이션

디비에 이미지를 저장하는 구조가 아니면 마이그레이션 과정이 필요 없었지만 앱 내부 저장소에 저장되던 이미지는 앱을 삭제하는 경우 모두 날라가기 때문에 이미지 경로를 저장하는 String Type의 컬럼을 Byte Array 컬럼으로 변경하여 

디비가 업그레이드 되는 최초 1회에 String 이미지 경로로 Bitmap 을 만들어 Byte Array로 재 변환하여 저장하는 과정을 거쳤다. 

 

결과

디비를 파일로 변환하여 Google Drive에 저장하고 해당 파일을 읽어오는데까지 성공했지만 이미지를 ByteArray로 변환하여 저장하니 용량이 너무 커졌습니다. 

한장당 10메가 이상씩 증가를하니.. 앱 특성상 사진 데이터가 몇장 없는 유저를 제외하곤 백업 기능 사용시 많은 시간이 소요될것 같았기 때문에 실제 출시까진 거치지 않았습니다. 

 

내부 디비를 사용하여 이미지를 저장하시는 분들중 백업 기능을 구현하시고자 한다면 서버 비용을 감당하셔야 합니다. 

 

디비 <-> 파일 하는 코드는 별도로 포스팅 하겠습니다! 

반응형