안녕하세요.
이번 포스팅은 모바일에서 많이 사용하는 로컬DB의 하나인 Realm에 대하여 알아보겠습니다.
Realm(렘)이란 오픈소스 데이터베이스 관리시스템(DBMS)으로 특히, 모바일 환경을 주요 타깃으로 삼은 데이터베이스입니다.
기존 안드로이드에서 사용하던 SQLite와 iOS에서 사용하는 Core Data를 대체하는 모바일 데이터 베이스 입니다.
그래서 SQLite나 다른 SQL 데이터베이스와 관련이 없으며, 이들이 가진 많은 문제들을 해결하는 것을 목표로 합니다.
2010년도 후반기에 Alexander Stigsen, Bjarne Christiansen이라는 두 분이 TightDB라는 프로젝트명으로 시작했으며 2014년 Realm으로 이름을 변경하였고 점차 그 가치를 인정받아 실리콘밸리의 떠오르는 스타트업으로 자리 잡았습니다.
현재 Realm은 NoSQL의 대표주자인 MongoDB에 인수되었습니다.
Realm 데이터베이스의 특징으로는 기존의 정형화된 데이터베이스와 다르게 NoSQL 데이터베이스를 지향합니다.
NoSQL이란?
단어 뜻 그 자체를 따지자면 "Not only SQL"로, SQL만을 사용하지 않는 데이터베이스 관리 시스템(DBMS)을 지칭하는 단어이다.
관계형 데이터베이스를 사용하지 않는다는 의미가 아닌, 여러 유형의 데이터베이스를 사용하는 것이다.
데이터를 조직하는 방법에는 리스트, 해시 테이블, 트리, 그래프 등의 다양한 방법이 있고 각각은 장점과 단점이 명확하기 때문에 단순히 NoSQL이라고만 해서는 너무 뜬구름 잡는 얘기가 된다.
NoSQL이라는 단어는 RDBMS가 데이터베이스의 독점적인 지위를 차지하고 있는 현재 상황에 반발하는 정신을 담고 있다.
-나무위키
데이터 모델 구조 자체가 객체 컨테이너로 구성되어 있습니다. 또한, Realm 데이터베이스는 rawSQL을 사용할 수 없으며 자체의 Realm API를 통해 실행됩니다. 이를 통해 좀 더 직관적인 사용이 가능해지고 데이터 처리 속도가 향상된 장점이 있지만, 기존 데이터베이스들과 달리 Realm의 자체 사용법에 대해 조금 더 공부를 해야 하는 러닝커브가 존재합니다.
하지만 성능면에서는 현재까지 Realm이 으뜸이라고 생각하고 있고 실제로 Github에 많이 있는 Realm 예제코드를 이용해 사용해보니 그 성능에서 많은 차이가 났습니다.
위의 그래프에서도 보듯이 다른 로컬DB를 압도하고 있습니다.
장점을 간단하게 아래에 나열해보았습니다.
단점 입니다.
Realm은 현재 모바일에서 가장 많이 쓰이고 개발자들이 애용하는 로컬 DB가 되었습니다.
물론 SQlite가 무조건 안좋은게 아닙니다.
자신의 프로젝트 특성이나 자신이 잘 사용하는 정도에 따라 선택하여 프로젝트에 적용을 하면 되지만
Realm에 한번 적응하기 시작하면 사용성이나 성능면에서 SQlite가 따라올 수 없습니다.
근래에는 무선통신이 아주 빨라지고 네트워크 DB의 성능도 향상된 것이 사실입니다만 특정한 상황이나 빠른 로딩을 위해 로컬DB를 사용해야 하는 경우도 많습니다.
이럴 경우 고민을 하고 계신다면 Realm 사용을 추천해드립니다.
참고 내용
https://realm.io/kr/docs/
https://academy.realm.io/kr/posts/gdg-seoul-realm-introduce/
https://academy.realm.io/kr/posts/realm-object-centric-present-day-database-mobile-applications/
https://medium.com/@hesam.kamalan/database-benchmark-realm-vs-snappydb-f4b89711f424