iOS Core Data 개념 정리

호씨·2024년 12월 12일
2

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 비교

SQLiteCore 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가지 타입 존재:

  1. 인메모리 저장 타입(NSInmemoryStoreType)

    • 순수 메모리 기반
    • 앱 종료 시 데이터 소멸
    • 런타임 캐싱에 주로 활용
  2. 플랫 바이너리 저장소 타입(NSBinaryStoreType)

    • 바이너리 파일 형식으로 저장
    • 데이터 조회 성능 우수
    • 대용량 데이터의 경우 초기 로딩 시간 증가
  3. XML 저장소 타입(NSXMLStoreType)

    • XML 방식으로 데이터 저장
    • iOS에서는 사용 불가
    • 디버깅 용이
  4. SQLite 데이터베이스(NSSQLiteStoreType)

    • iOS 프로젝트의 기본 저장 방식
    • 부분 로딩 지원
    • 가장 일반적으로 사용됨

Core Data의 특징과 한계

장점

  1. 빠른 메모리 접근
  2. 효율적인 데이터 처리
  3. 차등 저장 메커니즘 지원

한계점

  1. 메모리 로딩 필수

    • 모든 작업은 메모리 로딩 필요
    • 효율적인 메모리 관리 필요
  2. 데이터 로직 한계

    • 관리 객체 서브클래싱 시 제약
    • 유니크 키 관리의 어려움
  3. 멀티스레드 제약

    • 기본적으로 싱글 스레드 지원
    • 멀티스레드 사용 시 주의 필요

객체 모델링

구성 요소

  1. 엔티티(Entity)

    • 테이블과 유사한 개념
    • NSEntityDescription 클래스로 표현
  2. 어트리뷰트(Attribute)

    • 엔티티의 하위 속성 정의
    • 데이터 구조 결정
  3. 릴레이션(Relation)

    • 엔티티 간 관계 정의
    • 데이터 연결 구조 설정
  4. 페치 속성(Fetched Properties)

    • 반복적인 데이터 검색 템플릿
    • 효율적인 데이터 접근 지원
profile
이것저것 많이 해보고싶은 사람

0개의 댓글