본문은 야곰 아카데미 커리어 스타터 캠프를 통해 학습한 내용을 회고한 글입니다.
CoreData/SQLite/Realm
CoreData
iOS 플랫폼 단에서 지원하는 관계형 데이터베이스 라이브러리
object형식으로 저장하고 관리할 때 사용하기 좋음
SQLite보다 많은 메모리를 사용하고, 더 많은 저장공간이 필요하며, 더 빠르게 저장된 기록을 가져옴
thread-safe하지 않음
@FetchRequest라는 프로퍼티 랩퍼를 사용해 편리하게 쓸 수 있음
위젯 등을 개발할 때 데이터 연동이 편리함
SQLite
전세계적으로 많이 사용되는 오픈소스 기반 데이터 베이스 엔진
서버가 필요 없는 SQL 데이터 베이스 엔진을 구현
MacOS, iOS, Android, Linux, Window에서 접근 가능
매우 작고 가벼워 전체 데이터 베이스를 하나의 디스크파일에 저장 가능
설정이 간편함
여러 브로세스와 쓰레드로부터 접근이 안전함
SQL구현 가능
가장 많이 사용되기 때문에 레퍼런스 많음
Realm
ORM이 아니라서 백그라운드에서 적용되는 SQL쿼리문을 실행하지 않음(ORM은 데이터에 접근하는 간단한 업무도 많은 쿼리문의 작업 필요. CPU사이클과 디스크 시간을 소비하며 속도가 한순간에 느려질 수 있음)
다른 SQL 데이터 베이스와 관련이 없음
Key-Value타입의 스토어가 아닌 객체를 직접 디스크에 유지함
복잡한 Entity에 대한 맵핑을 처리해야할 문제가 없어 메모리 상의 객체를 디스크로 빠르게 가져올 수 있음
iOS와 Android간에 데이터베이스 공유가 가능함
Core Data나 SQLite에 비해 속도가 빠르고 성능이 좋음
데이터 저장에도 제한이 없음에도 무료로 이용이 가능함
메인 쓰레드에서데이터를 읽기/쓰기 작업할 수 있음
참조
https://seonshine-bibi.tistory.com/m/12
https://purple-log.tistory.com/13
https://devmjun.github.io/archive/iOS_Databases-SQLLite_vs_Core_Data_vs_Realm
'YAGOM CAREER STARTER' 카테고리의 다른 글
[iOS] 비전공자 이대생의 야곰 아카데미 수료 후기(비전공자 iOS개발자 되기, 새싹, 포스텍 애플 디벨로퍼 아카데미) (0) | 2023.06.19 |
---|---|
[TIL] 20230508: Mirror (0) | 2023.05.09 |
[TIL] 20230509: Core Location, Getting the current location of a device (0) | 2023.05.09 |
[토요스터디A반] 20230408: KeyChain (0) | 2023.04.14 |
[TIL] 20230411: URL Loading System (0) | 2023.04.14 |