iOS Local DB 비교

Why?

  • iOS 프로젝트를 진행함에 있어서 서버 유지 비용이 많이 듬 -> 즉, 서버를 지속적으로 유지하기가 힘듬
  • 최대한 Local DB를 이용해서 비용을 줄이고 최대한 iOS 프레임워크를 잘 사용한 서비스를 구현하자!!

1. SQLite

  • 가장 많이 사용되는 오픈소스 기반의 DB
  • SQL 구현 가능
  • 가장 널리 사용되어 있어, 참고 자료가 많다.

특징

  • 서버로부터의 독립성
  • 설정이 쉬움
  • 여러 프로세스/쓰레드에서도 안전하게 접근 가능 -> 이후에 Realm
  • Write 트랙잭션 시에, Lock의 단위가 Table이 아닌 DB자체에 Lock을 건다
  • Date Time 과 같은 Field가 존재하지 않음. (날짜 단위로 저장 시는 문자열로 잘 파싱하면 문제 없겠지만, 시간 단위까지 내려간다면 신경 쓸게 많아서 번거로울 것 같다.)

자세히

  • API는 라이브러리를 호출하는 것만 있으며, 데이터를 저장하는 데에 하나의 파일만을 사용한다.

2. Core Data

  • 객체에 중점을 둠

특징

  • 상대적으로 많은 저장공간, 메모리 사용
  • 속도가 빠르다
  • In- Memory 방식
    • 메모리에 로딩된 객체들에 대해서만 수정이 가능하다.
  • Thread-Safe하지 않음

3. Realm

  • 최근 널리, 많이 유행하고 사용되고 있는 DB
  • 객체 중심의 DB
  • Android에서도 많이 사용됨
  • ORM 이 아니다 -> BackGround에서 적용되는 SQL 쿼리를 실행하지 않는다.(반대로 ORM은 간단한 업무도 상대적으로 많은 쿼리문을 실행한다는 말)
    • 따라서 Realm이 다른 DB보다 빠른 것인가?

특징

  • 속도가 빠르다
  • 무료
  • iOS/Android 플랫폼 간에 DB File 공유 가능
  • Realm Studio가 있어서 DB 자체를 쉽게 확인 가능.
  • Main Thread를 이용하고 있다 (이전에 하나의 프로젝트를 진행하면서 Dispatch Queue 관리를 잘 못했을 때, 항상 에러가 나서 애를 먹었다...)
  • 쿼리가 많지 않음

4. UserDefault

  • Android에서의 SharedPreference와 비슷하다.
  • 간단하게 Toggle을 위한 변수, 온보딩 유무 체크 등을 확인하기 위해 사용하면 좋을 듯

이어서 다음 포스팅에는 ORM을 알아보자!!!!

+ Recent posts