400일차 - Android Room Data Export(Backup) / Import(Recovery) (2)

2022. 2. 8. 23:50·아카이브/일기
반응형

https://developer.android.com/training/data-storage/room/migrating-db-versions?hl=ko 

 

Room 데이터베이스 이전  |  Android 개발자  |  Android Developers

Room 라이브러리를 사용하여 데이터베이스를 안전하게 이전하는 방법 알아보기

developer.android.com

안드로이드 룸을 사용하면서 데이터를 백업하고 복구하는 기능이 필요해서 시행착오를 거치고 방법을 찾았다. Android Room에서 데이터를 백업하고 복구하는 방법이 변경되었고, 이는 2.2.0 버전부터 적용이 된다. 나는 2.4.0 버전을 사용 중이라서 변경된 백업, 복구 방법을 사용했다.

 

 

우선 MIGRATION_1_2 변수를 보면, database.execSQL() 메서드를 사용하는 것을 볼 수 있다. 마이그레이션 하면서 데이터를 어떻게 적용시킬것인가? 에 대한 쿼리문 작성이다. 나는 기존에 있는 데이터는 전부 날리고 새롭게 복구하는 데이터를 넣는 방식을 채택했다. 장고처럼 자연스럽게 기존에 있는 데이터와 병합하기에는 단순한 쿼리문으로는 어렵기 때문에 시간대비 코스트를 생각해서 쿼리문을 작성했다.

 

Room은 기본적으로 메인쓰레드에 관여하지 않는다. 다만, allowMainThreadQueries 메서드를 사용하면 해당 인스텐스는 메인쓰레드에 관여할 수 있게 된다. 기본 가이드에서는 allowMainThreadQueries 사용을 권장하지 않는다.

 

중요한건 addMigrations() 메서드이다. 이 메서드를 통해 데이터를 복구할 수 있다.

 

dbSave와 dbUpdate 메서드를 보면, 왜 저렇게 나뉘었는지에 대해서 의문점이 들 수 있다. 나도 직접 해보고나서 알았는데, 데이터를 백업할 때, 파일을 내보내야하는데 이 때, db파일은 db, db-shm, db-wal 이 3가지로 분할되어있다. 이 3가지 파일을 db 파일 1개로 병합해서 내보내기 위해서는 룸을 한번 내렸다가 다시 올려야한다.

그리고나서, 복구를 진행할때는 기본의 Room을 내리고 새로운 인스텐스로 다시 올려야한다.

 

 

 


오늘을 기점으로 400일의 여정이 끝이났다.

계속해서 글을 작성할지, 아니면 휴식기를 가질지 고민이 많았는데, 다가오는 10월 29일에 결혼을 하게되면서 물리적인 시간이 너무 부족해졌다. 이참에 휴식기를 가지고 여유가 생길 때마다 블로그 글을 작성하려고 한다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'아카이브 > 일기' 카테고리의 다른 글

Android Custom Template Plugin 개발 (2)  (0) 2022.03.16
Android Custom Template Plugin 개발 (1)  (0) 2022.03.16
LG UPLUS Project - ZPLAN 마케팅 시작  (0) 2022.03.07
LG UPLUS - 프로젝트를 1차 납품했다.  (0) 2022.02.16
399일차 - Android Room Data Export(Backup) / Import(Recovery) (1)  (0) 2022.02.07
398일차 - Android Send Email & Send Multiple Email  (0) 2022.02.06
397일차 - 깔끔한 코드 작성을 위한 Contains 작성법  (0) 2022.02.05
396일차 - 자주 사용하는 Room DB Query 기본 프레임  (0) 2022.02.04
'아카이브/일기' 카테고리의 다른 글
  • LG UPLUS Project - ZPLAN 마케팅 시작
  • LG UPLUS - 프로젝트를 1차 납품했다.
  • 399일차 - Android Room Data Export(Backup) / Import(Recovery) (1)
  • 398일차 - Android Send Email & Send Multiple Email
권퓨터
권퓨터
만드는 걸 좋아하는 개발자의 기록. 코드든 글이든, 일단 만들어 봅니다.
  • 권퓨터
    권퓨터: Kwonputer
    권퓨터
  • 티스토리 홈 관리자
  • 전체
    오늘
    어제
    • 분류 전체보기 (559)
      • 개발 (56)
        • 프로젝트 (5)
        • 모바일 (44)
        • 프론트엔드 (0)
        • 백엔드 (2)
        • 인프라 (0)
        • AI · 머신러닝 (4)
      • IT · 테크 (10)
        • 기술 트렌드 (3)
        • 도구 · 생산성 (1)
        • 제품 리뷰 · 추천 (0)
        • 마케팅 · 수익화 (6)
      • 자기계발 (7)
        • 공부법 · 언어 (0)
        • 취업 · 커리어 (7)
      • 아카이브 (486)
        • 일기 (480)
        • 취미 (6)
  • 블로그 메뉴

    • 홈
  • 링크

    • 블로그 이전
  • 공지사항

    • 서브 블로그 => https://kwonputer.com/
  • 인기 글

  • 태그

    서버리스 아키텍처
    콘텐츠자동화
    파이썬
    ai 게임 개발
    Prompt Engineering
    상태관리
    injectable
    OpenAI GPT
    dynamodb
    TypeScript
    https://github.com/kwongeneral/kortfolio.git
    FACEBOOK광고
    클린 아키텍처
    블로그수익화
    https://www.kwonputer.shop/
    AI블로그
    flutter 면접 질문
    AWS CDK
    next.js
    다국어 블로그
    aws lambda
    riverpod
    flutter
    python 기초
    Clean Architecture
    python
    내러티브 게임
    flutter 개발자
    Single Table Design
    kotlin
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
권퓨터
400일차 - Android Room Data Export(Backup) / Import(Recovery) (2)
상단으로

티스토리툴바