iOS Core Data 개념 정리
Core Data란?
Core Data는 애플의 코코아 개발 환경에서 제공하는 인 메모리(In-Memory) 방식의 데이터 관리 프레임워크다.
주요 특징
- 데이터베이스와 유사한 CRUD 작업 수행 가능
- Apple 생태계(iOS, macOS 등) 전반 지원
- Objective-C와 Swift 모두 사용 가능
- SQLite 기반 영구 저장소 지원으로 앱 종료 후에도 데이터 유지
인 메모리(In-Memory) 방식이란?
- CPU가 Main Memory에 저장된 데이터에 직접 접근
- 데이터 처리 속도가 매우 빠름
- L1/L2/L3 cache, Paging 알고리즘 등 내부적 메모리 관리 포함
Core Data vs SQLite 비교
SQLite | Core Data |
---|
데이터베이스 파일 | 데이터 모델 파일 |
테이블 | 엔티티 |
칼럼 | 어트리뷰트 |
외래키 + 조인 | 릴레이션 |
Core Data 주요 구성 요소
1. Managed Object
- 데이터를 저장하기 위한 인스턴스
- NSManagedObject 클래스 또는 그 하위 클래스의 인스턴스
- 레코드를 객체화하여 처리
2. Managed Object Context
핵심적인 역할을 하는 객체로 두 가지 주요 기능 수행:
1. CRUD 기능 담당
2. Persistent Store Coordinator 관리
3. Persistent Store Coordinator
- 컨텍스트와 데이터를 직접 주고받음
- 저장소 접근 관리 및 입출력 담당
- 데이터 요청 처리 및 객체 인스턴스 생성
4. Managed Object Model
- 데이터베이스의 스키마와 유사
- 엔티티 구조 정의
- Xcode에서 설계한 엔티티로 생성
5. Persistent Object Store
Core Data의 저장소 환경으로 4가지 타입 존재:
-
인메모리 저장 타입(NSInmemoryStoreType)
- 순수 메모리 기반
- 앱 종료 시 데이터 소멸
- 런타임 캐싱에 주로 활용
-
플랫 바이너리 저장소 타입(NSBinaryStoreType)
- 바이너리 파일 형식으로 저장
- 데이터 조회 성능 우수
- 대용량 데이터의 경우 초기 로딩 시간 증가
-
XML 저장소 타입(NSXMLStoreType)
- XML 방식으로 데이터 저장
- iOS에서는 사용 불가
- 디버깅 용이
-
SQLite 데이터베이스(NSSQLiteStoreType)
- iOS 프로젝트의 기본 저장 방식
- 부분 로딩 지원
- 가장 일반적으로 사용됨
Core Data의 특징과 한계
장점
- 빠른 메모리 접근
- 효율적인 데이터 처리
- 차등 저장 메커니즘 지원
한계점
-
메모리 로딩 필수
- 모든 작업은 메모리 로딩 필요
- 효율적인 메모리 관리 필요
-
데이터 로직 한계
- 관리 객체 서브클래싱 시 제약
- 유니크 키 관리의 어려움
-
멀티스레드 제약
- 기본적으로 싱글 스레드 지원
- 멀티스레드 사용 시 주의 필요
객체 모델링
구성 요소
-
엔티티(Entity)
- 테이블과 유사한 개념
- NSEntityDescription 클래스로 표현
-
어트리뷰트(Attribute)
-
릴레이션(Relation)
-
페치 속성(Fetched Properties)
- 반복적인 데이터 검색 템플릿
- 효율적인 데이터 접근 지원