UserDefaults
- Apple의 기본 Library
- key-value 쌍으로 저장하는 인터페이스
- 런타임 환경에서만 동작하며, 기본 저장소에 접근해 데이터를 read/write 하기 때문에
값이 필요 할 때마다 데이터 베이스를 열어 볼 필요가 없다.
- 대용량의 데이터보다 단일 데이터(ex 사용자 기본 설정, 로그인 여부 등)를 저장하는데 더 적합
- 싱글톤 패턴으로 설계되어 앱 전체에 단 하나의 인스턴스만 존재
CoreData
- Apple의 기본 Library
- UserDefaults와 비교하여 좀 더 방대하고 복잡한 데이터를 저장하는데 적합
- Data Model을 생성한 후 Entity를 생성한다.
- SQLite에 비해 더 많은 저장공간과 메모리를 필요로 하지만 더욱 빠르게 데이터를 가져올 수 있다.
(테이블 없이 객체를 통해 데이터를 운영하기 때문이다.)
SQLite
- 애플에서 기본 제공되는것이 아닌 외부 라이브러리이며, 비교적 가벼운 데이터 처리가 필요할때 적합
- CoreData는 프레임워크인것에 반해 SQLite는 데이터 베이스임
- C언어로 작성되어 있어 매우 가벼움
- 전체 데이터베이스를 디스크 파일 1개에 저장하고, 설정 자체가 매우 간편하기에 관리하기가 수월함
- iOS, Android, Linux, Window 등과 같이 다양한 운영체제에서 사용됨
- 수많은 프로세스와 스레드의 접근으로부터 안전합니다.
Realm
- 모바일에 최적화 된 라이브러리이며, 빠른속도이지만 용량이 큼
- 설치가 쉽고 대용량의 데이터에 대해 무료로 사용 가능
- 용량에 관계없이 속도와 성능이 유지됨
- 코드가 짧고 간결함
- 메인스레드에서 데이터의 읽기, 쓰기 작업 가능
속도: Realm > CoreData > SQLite
메모리 및 저장공간 사용: Realm > CoreData > SQLite
Reference