DataBase - Realm이란?

AhnZ·2022년 7월 27일
0

Swift

목록 보기
2/2
post-thumbnail

부족한 점이 보이시면 언제든지 알려주세요!

데이터 베이스로는 UserDefaults, CoreData, SQLite 등이 있지만 속도와 사용이 편리하다고 알려진 realm을 사용해보기로했다.
firebase는 JSON기반으로 구성해줘야하는데 내가 하려는 To do list와 메모장을 섞은듯한 그런 토이프로젝트에는 굳이 필요없기에 Realm을 사용해보려고한다.

1. Realm ?

오프라인을 우선으로 한 모바일 데이터베이스

  1. ORM없이 직접 접근하고 저장할 수 있는 모바일객체 데이터베이스입니다.
  2. 라이브 개체는 항상 데이터베이스의 최신 데이터 상태를 반영하여,
    UI가 데이터 변경 사항과 동기화되도록 간소화됩니다.
  3. 대기시간이나 연결 끊어짐의 위험도가 적다.

realm 공식문서



2. 장점

  • 속도가 빠르다
  • Andorid 와 IOS 둘다 호환이 가능하다.
  • 사용이 간편하다.
  • 하나의 앱에서 다양한 데이터베이스 사용가능



3. firebase와 공통점 차이점

공통점

  • 실시간 데이터 베이스이다.
  • 두 데이터베이스(firebase, realm ) NoSQL기반( 하지만 두 DB는 확실한 차이가 있다고 한다. )
  • 모두 오프라인 우선 기능을 지원하므로 인터넷 연결이 끊겼다가 네트워크가 활성화되면 동기화가 유지되는 구조이다.

차이점

  • firebase는 JSON을 기반으로 작동하고, realm은 Swift 객체를 기반으로 작동한다.



4. Realm studio

데이터를 쉽게 확인(변경) 할 수 있습니다.


해당 주소로 이동

  • finder를 열어
    cmd + g 를 입력하여 콘솔에 나온 해당 주소를 복사 붙여넣기

Realm studio로 열기

  • dafault.realm 우클릭 or control + 클릭

realm studio를 통해 편하게 데이터를 확인 할 수 있다.




5. Realm 오류 (모델파일 추가, 변경 )

migration

realm 데이터의 타입이나 값을 임의로 변경 했을 떄 나타나는데 이거 때문에 진짜 골치가 아팠다.

그치만 개발 중일 떄는 그냥 앱을 삭제하고 다시 설치하거나
AppDelegate

  • 이곳에
let realmURL = Realm.Configuration.defaultConfiguration.fileURL!
        let realmURLs = [
            realmURL,
            realmURL.appendingPathExtension("lock"),
            realmURL.appendingPathExtension("note"),
            realmURL.appendingPathExtension("management")
        ]
        for URL in realmURLs {
            do {
                  try FileManager.default.removeItem(at: URL)
            } catch {
                // handle error
            }
        }

이 코드를 입력해주면 한방에 해결된다.

migration하는방법은
여기에 잘 나와있다.
마이그레이션 및 realm 추가 변경



참조

https://www.mongodb.com/community/forums/t/firebase-vs-realm/9929/5

realm 공식문서( 사용법, realm특성 등 )

마이그레이션 및 realm 추가 변경

swift Realm 사용하다 변수이름이나 메서드 모를 때 들어가면 좋은 문서

profile
#Swift

0개의 댓글