Core Data란?

7과11사이·2023년 8월 6일
0

스파르타코딩클럽

목록 보기
25/90
post-thumbnail

[9월 23일 업데이트]

코어 데이터 관련해서 추가 공부를 하고 사용을 해보면서 느낀 점이 새로 있다.
이전에 호기심으로 찾아봤던 내용들에서 잘못된 표현 및 오해 소지를 남기는 내용은 줄을 그어두도록 하겠다!


Swift로 새로운 프로젝트를 생성하다보면 작성해야하는 여러 빈 칸들이 있다.
그 중, 'Use Core Data'와 'Include Tests'는 항상 체크 해제한 이후 생성을 추천받았다. 이름만 보았을 때 Core Data는 매우 중요한 요소로 보이던데, 왜 체크 해제를 했을까?


Core Data

공식 문서에 따르면 Core Data는 단일 기기에 데이터를 유지하거나 캐시를 한다고 한다. [링크]
또한 클라우드 키트를 통해 다양한 기기에 데이터를 싱크하기도 한다고.

뭔가... 쉬원 것 같으면서도 어렵게 느껴진다.


일단 이해한대로 정리를 하면,
Core Data는 별도 설정 혹은 배열 데이터 등 없이도 데이터를 담는다.
시뮬레이터를 종료 이후 재기동했을 때, 새로 대입되는 값은 저장되지 않은 상태를 보여줄텐데, 이는 값을 저장할 수 없기 때문이다. 컬렉션에 새로운 값을 담는다하더라도 일회성인 느낌이랄까?

Core Data를 활성화하면 데이터 값은 자동적으로 저장을 하여 UserDefault를 할 수 있을 것으로 보여진다.


공식 문서에서도 Core Data는 별도의 데이터베이스 구성없이 Swift와 Objective-c에서 정보를 저장할 수 있도록 만든다고 한다. 다만 표현하는 방식에서 조금 의아한 부분이 있었는데, 'Core Data abstracts the details of mapping your objets to store, making it easy ... 중략 ... without administering a database directly.'라 정리 되어 있다. 데이터를 저장할 수 있지만 데이터베이스를 직접 관리하지 않아도 된다는 점은 무슨 의미를 가지는걸까...

CoreData는 정보를 저장하고 보관하는 데이터베이스를 의미하지 않는다고 한다. DB가 아니며 어플의 객체 그래프를 관리가 좀 더 핏한 설명이라고 하는데, 이는 객체들의 컬렉션이라고 한 글은 설명한다. [링크]


Core Data를 사용하지 않는 이유

출시하는 어플은 어떤 목적을 가질까?
데이터 저장이 필수일까?
필수라면 어떤 정보를 저장하려고 하는걸까?
어플의 용량은 기능에 비해 너무 거대하지 않나?
여러 생각을 해보면 Core Data를 사용하거나 사용하지 말아야하는 이유가 떠오를 것 같다. 앞서 설명한대로 Core Data는 엄밀히 말하면 DB는 아니다. 정보를 보관할 수 있지만 객체의 정보를 선택적으로 저장할 수 있는 기능이 있는데, 이외에도 엄청많은 기능을 가진 것으로 보여진다.
그렇다면, 간단한 메모 어플을 만들고 있다면 Core Data를 사용하는게 좋을까?
사용해도 무방해보이지만, Core Data 프레임워크는 객체 정보 저장 이외에 다양한 기능을 담고 있다. 그렇기에 단순히 사용하는 이유만으로 의도(메모 저장)보다 더 많은 양의 저장공간을 사용해야할 것이다.

Simply Put, Core Data COULD BE used as Database, but not THE BEST

0개의 댓글