코어 데이터는 macOS 와 iOS 운영체제를 제공하는 애플사의 객체 그래프 및 지속성 프레임워크 입니다.iPhone SDK 3.0을 탑재한 Mac OS X 10.4 Tiger와 iOS에 도입되었다. 관계 엔티티에 의해 구성된 데이터를 XML, 이진 또는 SQLite 저장소로 직렬화 할 수 있습니다.
How Does It Differ From SQLite?
Core Data를 처음 접하는 개발자는 종종 SQLite와 Core Data의 차이점으로 인해 혼동됩니다. SQLite 또는 Core Data 가 필요한지 궁금하다면 잘못된 질문입니다.Core Data는 데이터 베이스가 아닙니다.
SQLite
- 데이터 제한 기능이 있습니다.
- 디스크에 저장된 데이터에서 작동합니다.
- 메모리에 로드하지 않고, 테이블을 삭제하고, 데이터를 편집 할 수 있습니다.
- 핵심 데이터에 비해 느립니다.
Core Data
- 필요한 경우 비즈니스 로직으로 구현해야 하는 경우, 데이터 제약 조건이 없습니다.
- 메모리에서 작동 (데이터를 디스크에서 메모리로 로드해야 함)
- 테이블을 삭제하거나 업데이트 해야 할 경우 전체 데이터를 로드해야 합니다.
- 레코드 생성 측면에서 빠릅니다. 저장하는 데 시간이 오래 걸릴 수 있습니다.또한 백엔드 코어 데이터는 디스크에 데이터를 저장하기 위해 XML 또는 이진 형식을 사용할 수 있으므로 SQLite 와 별도로 제공됩니다.
Core Data Limitations
코어 데이터 단점
1) 프레임 워크의 특성 및 작동 방식과 직접 관련이 있습니다.
- 수천 개의 레코드를 삭제하려면 코어 데이터는 먼저 각 레코드를 메모리에 로드 해야합니다.
데이터 베이스에서 SQL쿼리를 수행하는 것과 매우 다르고, 잘못하면 메모리 및 성능문제를 발생시킨다.
2) Core Data의 Threading 모델입니다. 프레임워크는 단일 쓰레드(single thread) 로 실행되는 데, core data는 수년에 걸쳐 급격히 발전했습니다. 이 프레임 워크는 멀티 스레드 환경에서 Core Data 작업을보다 안전하고 쉽게 수행 할 수 있도록 다양한 솔루션을 마련했습니다.
Core Data 의 적합한 용도
- 복잡한 객체 그래프를 관리해야 하는 애플리케이션의 경우 적합합니다.
- 소수의 관련없는 개체 만 저장해야 하는 경우 , 간단한 솔루션 또는 사용자 기본 시스템을 사용하는 것이 좋습니다.
예시) Bookmark 엔티티와 Keyword 엔티티를 따로 생성해서 데이터를 저장하도록 설계할 때, 코어 데이터를 쓰면 좋습니다.