본문 바로가기
Kotlin

[TIL] Room DB와 Realm DB의 차이

by 명훈스토리 2023. 1. 31.
SMALL

공부한 것을 정리하는 용도로 작성한 Today I Learned입니다. 정확하지 않을 수 있으며 참고용으로 봐주시면 감사하겠습니다.

틀린 부분, 수정해야할 부분이 있으면 언제든 의견주시기 바랍니다. 

 

Room DB를 공부하기 전 Realm을 사용하여 데이터를 저장하고 사용했다. Realm은 다음과 같은 특징이 있다.

Realm 특징

- NoSQL이다.
- ORM(Object Relational Mapping)이 필요하지 않고 직관적인 객체 중심 데이터베이스이다.

- 모바일앱 간 DB 공유가 가능하다.
- SQL 사용하지 않고 코드로 작업할 수 있다.
- 메인 스레드에서 읽기/ 쓰기를 할 수 있다.  

    → 스레드별 객체 관리 필요하기에 다중 스레드에선 객체 관리가 어렵다.
- 객체를 직접 디스크에 유지한다.
- SQLite보다 작업 속도가 빠르다.
- 다양한 쿼리를 지원하지 않는다.

 

반면에, Room은 다음과 같은 특징이 있다.

 

Room 특징

- AAC(Android Architecture Components), 스마트폰 내장 DB에 데이터 저장을 위한 라이브러리이다.
- ORM(Object Relational Mapping) 라이브러리로 DB 데이터를 Java 또는 Kotlin 객체로 매핑해준다.
- SQLite를 내부적으로 사용하지만, DB를 구조적으로 분리하여 데이터 접근의 편의성을 높여주고 유지보수에 편리하다.
- LiveData, RxJava와 같은 Observation 형태를 지원하며 MVP, MVVM과 같은 아키텍쳐 패턴에 쉽게 활용할 수 있다.

 

Room을 사용하는 이유

 결론적으로 Room은 SQLite와 다르게 내부 DB를 좀더 간편하게 구현할 수 있다. 그 이유는 다음과 같다.

  • 컴파일 도중 SQL에 대한 유효성 검사 가능
  • Schema가 변경될 시 자동으로 업데이트 가능
  • Java 데이터 객체를 변경하기 위해 상용구 코드 없이 ORM 라이브러리를 통해 매핑 가능
  • LiveData와 RX Java를 위한 Observation 생성 및 동작 가능

Room 라이브러리는 엔티티(Entity), 데이터 접근 객체(DAO), 데이터베이스(DB)로 구성되어 있다.

LIST

'Kotlin' 카테고리의 다른 글

[Paging] Paging이란?  (0) 2023.02.03
[ViewModel] ViewModel이란?  (0) 2023.02.03
[LifeCycles] LifeCycles란?  (0) 2023.02.03
[Coroutine] Coroutine이란?  (0) 2023.02.02
[TIL] Room DB 사용법  (0) 2023.02.02

댓글