JEP's Diary

Realm 모바일 데이터 베이스(Android) 본문

Development/Android

Realm 모바일 데이터 베이스(Android)

지으니88 2016. 3. 13. 00:49

Realm 모바일 데이터 베이스(Android)

참고. https://realm.io/kr/


Realm은 모바일 데이터 베이스로 안드로이드의 SQLite, iOS의 Core Data를 대체해서 쓸 수 있다.

간결하고 짧은 코드로 편하게 개발 할 수 있고, 속도가 더 빨라 성능 향상된 앱을 만들 수 있다.


1. 장점

- 쉬운 사용    

Realm은 SQLite을 기반으로 한 ORM이 아니다. 대신에 Realm은 쉬운 사용성과 속도를 위해 개발한 persistence 엔진을 사용

- 크로스 플랫폼

Android, iOS 지원(Swift, Objective-C)

- 빠른속도

zero-copy 디자인 덕분에 Realm은 SQLite를 기반으로 ORM을 구현했을 때보다 월등히 빠르다

2. 사용법과 예제는 공식 홈페이지에 잘 정리되어 있으므로 패스.


3. 기억할 내용 및 키워드

- 자동갱신객체

Realm 객체와 RealmResults는 기반 데이터에 의해 라이브로 자동 갱신되는 뷰. 이 것은 결과를 다시 가져올 필요가 없다는 의미.

결과는 자동 갱신되기 때문에 어떤 고정적으로 유지되는 인덱스나 카운트에 의존하지 않는 것이 중요

- MVCC 아키텍쳐

Realm은 MVCC 아키텍쳐를 사용하기 때문에 쓰기 트랜잭션을 열었을 때도 읽기는 막히지 않는다.

- 트랜잭션 블록

수동으로 realm.beginTransaction(), realm.commitTransaction(), realm.cancelTransaction()을 관리하는 대신에 자동으로 begin/commit을 관리하고 에러가 발생했을 때 cancel 하도록 지원하는 realm.executeTransaction 메소드를 사용

- 비동기 트랜잭션

비동기 트랜잭션을 사용하면 Realm은 트랜잭션을 백그라운드 스레드에서 수행하고 트랜잭션이 끝나면 보고. Realm.Transaction.Callback 파라미터를 추가

- Realm

Realm은 데이터베이스를 의미. Realm 인스턴스가 스레드 싱글턴이라는 사실도 중요

- Realm 파일 찾기

http://stackoverflow.com/questions/28478987/how-to-view-my-realm-file-in-the-realm-browser

- RealmObject 쓰레드 제약이라는 점은 염두해야 한다. Realm 오브젝트를 액티비티 간이나 백그라운드 서비스, 브래드 캐스트 리시버 등으로 전달할 때 이런 부분을 이해하는 것이 매우 중요.