Realm vs Room
Android 내부 DB 사용 Realm Room
Android에서 내부 DB를 사용할 때 Realm과 Room을 이용해서 데이터를 내부 DB에 저장/삭제/수정을 할 수 있다.
Room
- SQLite를 편하게 사용할 수 있도록 Jetpack에서 제공하는 라이브러리
- 사용 방법이 어렵고 이용자의 실수를 많이 유발하는 SQLite를 쉽게 사용할 수 있게 해 주며 버그와 코드를 줄일 수 있다.
- SQLite보다 권장
- DAO를 만들어서 직접 쿼리를 날려 데이터를 읽어옴
- 쿼리를 알아야 사용하기 용이
- flow, RxJava와 함께 사용해서 비동기적으로 사용가능
- 스레드 세이프하다
- 용량이 작다
Realm
- 내부 저장소 사용을 하게 해주는 오픈소스라이브러리
- NoSQL 형태
- 결국 내부에는 테이블 형태로 저장
- 객체를 그대로 사용하기 때문에 ORM 계층이 필요 없음
- 쿼리를 몰라도 사용가능
- 애플리케이션의 크기가 늘어난다
- 추가 학습 필요
난 앱의 용량이 조금 커져도 상관없고, 좀 더 편하게 개발하고 빠르게 데이터를 읽고 쓰고 싶다 - Realm
앱의 크기를 줄이고, 쿼리를 할 줄 안다 - Room
이 정도로 정리할 수 있을듯하다
Realm 같은 경우 좀 더 편하게 개발은 가능하지만 Realm 자체 기능을 학습하는 비용이 들고, Room은 Room의 사용법과 쿼리를 학습해야 해서 현재 상황에 맞게 선택하는 능력이 필요할 듯하다.
참고
https://developer.android.com/training/data-storage/room
Room을 사용하여 로컬 데이터베이스에 데이터 저장 | Android 개발자 | Android Developers
Room 라이브러리를 사용하여 더 쉽게 데이터를 유지하는 방법 알아보기
developer.android.com
https://realm.io/realm-vs-sqlite/
Comparing SQLite (Room & Core Data) and Realm
Build better apps, faster.
realm.io