Realm 모바일 플랫폼

Realm 모바일 플랫폼의 핵심 개념은 Realm 이라는 가벼운 객체 컨테이너입니다. 데이터베이스에서처럼 Realm의 데이터는 쿼리, 필터링, 상호 연결이 가능하고 저장이 됩니다. 반면 기존 데이터베이스와는 달리 Realm의 객체는 라이브 오브젝트이고 완전히 반응형입니다. 또한, Realm은 기기와 애플리케이션 사이에서 매끄럽게 동기화되며 스레드에서 안전하게 접근할 수 있습니다.

Realm 모바일 데이터베이스

Realm 모바일 데이터베이스는 처음부터 모바일 기기에서 실행되도록 설계됐습니다. 기존 데이터베이스와는 달리 Realm의 객체는 실제 네이티브 객체입니다. 즉, 데이터베이스에서 객체를 복사하고 수정한 다음 다시 저장할 필요가 없다는 뜻입니다. 항상 라이브인 실제 객체를 작업할 수 있습니다. 어떤 스레드나 프로세스가 객체를 수정하면, 다른 스레드나 프로세스는 바로 알림을 받습니다. 객체는 항상 동기화가 유지됩니다.

Realm 모바일 데이터베이스는 Apache 라이선스의 오픈소스로, 크로스 플랫폼이며 Android, iOS, Xamarin (.NET), React Native의 라이브러리를 제공합니다. Realm은 플랫폼 사이에 온전히 교환할 수 있습니다.

Realm 모바일 데이터베이스는 자체적으로 사용할 수 있지만, 모바일 플랫폼의 장점을 최대한 활용하려면 Realm 오브젝트 서버와 연동하는 것이 좋습니다.

Realm 오브젝트 서버

애플리케이션에 Realm 모바일 플랫폼을 적용하면 Realm 오브젝트 서버에서 Realm을 생성하고 접근할 수 있습니다. 단지 오브젝트 서버의 정보와 서버 단 Realm의 URL만 있으면 됩니다. Realm 오브젝트 서버의 객체는 애플리케이션에서 필요할 때 다운로드되며, Realm의 로컬 복사본은 오브젝트 서버의 복사본과 완전히 동기화됩니다.

Realm은 항상 “오프라인 우선” 방식으로 작동합니다. 읽기와 쓰기는 Realm의 로컬 복사본에서 수행됩니다. 동기화는 자동이며 완전히 트랜잭션으로, 데이터 연결이 가능해지는 즉시 수행됩니다.

실제 Realm 사용하기

Realm은 기존 데이터베이스의 테이블과 같이 스키마로 정의되는데 Realm에는 여러 종류의 객체가 포함될 수 있으며, 각 객체마다 고유하게 강제되는 스키마가 있습니다. 하지만 데이터베이스와 달리 Realm은 테이블보다 강력한 기능을 제공하며 훨씬 가볍습니다. 한 애플리케이션에서 로컬이나 원격을 가리지 않고 여러 Realm을 사용할 수 있으며 여러 사용자를 위한 다양한 사용 권한을 제공할 수 있습니다.

가게를 운영하기 위한 애플리케이션을 예로 들어보겠습니다. 카탈로그는 읽기 전용 권한만 가지는 원격 Realm으로, 애플리케이션을 실행하는 모든 기기에서 접근할 수 있게 구현할 수 있습니다. 한편 장바구니는 원격 Realm이지만 같은 사용자 계정으로 접속한 기기들에서만 보이게 해서 사용자가 휴대폰에서 담은 물품을 태블릿에서 결제하게 할 수 있습니다. 또한, 위시리스트 Realm은 사용자 사이에서 공유할 수 있도록 만들 수 있습니다. 그리고 모든 기기에 동기화될 필요가 없는 정보를 저장하는 로컬 Realm을 사용할 수 있습니다. 모든 원격 Realm은 Realm 오브젝트 서버를 통해 동기화되며, 로컬 복사본은 매끄러운 오프라인 경험을 위해 기기에 저장됩니다.

더 자세한 정보가 필요하다면 핵심 개념과 주요 사용 사례 및 구현 예시를 포괄적으로 다루고 있는 영문 백서, Realm Overview White Paper를 읽어보세요.

시작하기

Realm 모바일 플랫폼 설치하기

Realm 오브젝트 서버는 RedHat/CentOS, Ubuntu Linux, Amazon EC2에서 사용할 수 있습니다. 또한 미리 만들어진 데모 애플리케이션인 RealmTasks와 함께 제공되는 macOS 오브젝트 서버 “번들”도 설치할 수 있습니다. 프로덕션 환경에서 자체 호스팅 Linux나 클라우드 배포를 사용할 수도 있지만, macOS 번들을 사용해서 Realm 모바일 플랫폼의 기능을 빠르게 경험해보시는 것을 추천합니다.

Realm 모바일 데이터베이스는 Android (Java), iOS (Objective-C and Swift), Xamarin, React Native, Node.js에서 사용할 수 있습니다. 참고: Realm 모바일 데이터베이스 JavaScript 라이브러리는 웹 브라우저에서 작동하지 않습니다.

참고: 위 링크에서 다운로드한 macOS 번들에는 Swift와 Objective-C Realm 모바일 데이터베이스 바인딩이 포함됩니다.

프로페셔널 에디션과 엔터프라이즈 에디션: 이 Realm 모바일 플랫폼 에디션은 서버 단 코드에서 Realm에 접근하고 변경할 수 있는 Node.js 기반의 API를 제공하므로 기존 백엔드 시스템과 웹 애플리케이션을 쉽게 통합할 수 있습니다. 또한 Node.js API를 통한 이벤트 처리 기능, 고가용성 및 로드 밸런싱 기능, Realm 개발자의 유선 혹은 이메일 지원이 제공됩니다.더 알아보고 무료 시험버전을 받아보세요.