May 31, 2021, TIL (Today I Learned) - Core Data

Inwoo Hwang·2021년 8월 26일
0
post-thumbnail

Core Data


Persist or cached data on a single device, or sync data to multiple devices with CloudKit

Core Data를 활용하여 애플리케이션의 반영구적 데이터를 오프라인에서 사용하고, temporary data를 캐시처리하고 undo 기능을 앱에서 사용할 수 있습니다.

데이터베이스(Database)란

데이터베이스(Database, DB)는 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합이다. 논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조화함으로써 검색 및 갱신의 효율을 높인다. 즉, 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있다. 같은 데이터라 할지라도 사용자는 각각의 응용 목적에 따라 다르게 사용할 수 있다. 사무 계산을 할 경우 각각의 업무 전용 데이터 파일을 사용하고 있지만 각 파일에는 중복된 정보가 들어있는 것이 많다. 이 중복을 피하여 정보를 일원화하여 처리를 효율적으로 하기 위해서 서로 관련성을 가지며, 중복이 없는 데이터의 집합이 데이터베이스인 것이다.

대표적인 데이터베이스의 종류를 알아봅시다

  • 계층형

    데이터 관계를 트리 형태로 정의하는 구조 (데이터 중복이 생길 수 있음)

  • 네트워크형

    데이터 관계를 그물 형태로 정의하는 구조(계층형의 데이터 중복 문제는 해결되지만 복잡한 구조탓에 추후 구조 변경 시 비용이 많이듬

  • 관계형(SQL)

    행과 열로 구성된 테이블간의 관계를 나타내는 구조로 흔히 사용하는 DB 형태

  • NoSQL

    관계형 DB보다 덜 제한적인 일관성 모델을 이용하여 키와 값 형태로 저장되고 키로 DB를 관리 및 접근한다.

    NoSQL [비관계형 데이터베이스] , 잘 모를 땐 지금 알아두자

[DB] 데이터베이스의 종류와 관계형 _ RDBMS (오라클 외)

데이터베이스와 데이터베이스 관리 시스템의 차이는?

데이터베이스 관리 시스템(DBMS)이란

데이터베이스 관리 시스템(DataBase Management System, DBMS)은 데이터베이스를 조작하는 별도의 소프트웨어로, DBMS를 통해 데이터베이스를 관리하여 응용 프로그램들이 데이터베이스를 공유하고, 사용할 수 있는 환경을 제공한다. DBMS는 데이터베이스를 구축하는 틀을 제공하고, 효율적으로 데이터를 검색하고 저장하는 기능을 제공한다. 또한 응용 프로그램들이 데이터베이스에 접근할 수 있는 인터페이스를 제공하고, 장애에 대한 복구 기능, 사용자 권한에 따른 보안성 유지 기능 등을 제공한다. 즉, 데이터베이스 내의 정보를 구성하는 컴퓨터 프로그램의 집합으로서, 자료의 중복성을 제거하고 다른 특징들 중에 무결성, 일관성, 유용성을 보장하기 위해서 자료를 제거하고 관리하는 소프트웨어 체계이다.

데이터베이스 관리 시스템 - 위키백과, 우리 모두의 백과사전

데이터베이스 관리 시스템(DBMS)의 정의와 종류

코어데이터를 사용했을 때의 장점과 단점은?

  • 장점 : 코어 데이터를 사용하여 데이터베이스 개발 환경과 유사하게 데이터를 읽고 쓰며 수정하고 삭제할 수 있다. 인메모리 방식인 만큼, 코어 데이터에서 데이터를 다루는 모든 작업은 메모리를 기반으로 동작한다. 다시 말해 코어 데이터를 통해 읽고 쓰는 모든 데이터는 원칙적으로 메모리에 로드된 다음에 처리된다는 뜻이다. 덕분에 대량의 읽기와 쓰기 작업이 발생하더라도 성능에 크게 영향을 끼치지 않는다.
  • 단점 : 수천 개의 레코드를 삭제하려면 코어 데이터는 먼저 각 레코드를 메모리에 로드 해야한다. 데이터 베이스에서 SQL쿼리를 수행하는 것과 매우 다르고, 잘못하면 메모리 및 성능문제를 발생시킨다

코어데이터의 모델을 변경할 때 유의할 점은?

iOS) CoreData - Migration

마이그레이션

코어데이터가 관리할 수 있는 영구 저장소 타입의 종류는?

인메모리 기반이라 하더라도 코어 데이터 내부적으로는 파일이나 SQLite 같은 영구 저장소에 보조적으로 데이터를 저장할 수 있기 때문에, 앱이 종료되더라도 데이터가 삭제되지 않는다.

SQLite

파일

Database ORM이란?

ORM: (Object Relation Mapping) 객체와 관계형데이터 베이스를 자동으로 mapping 시켜주는 방식

  • 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. 객체 모델과 관계형 모델 간에 불일치가 존재한다. ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

코어데이터는 ORM일까?

ORM

코어데이터는 ORM을 지원하는 것뿐 아니라 객체 그래프 관리자로서 역할도 도맡아 합니다.

코어데이터는 애플리케이션에서 Model 계층의 객체를 관리하는 데 사용하는 프레임워크이며, 라이프 사이클이나 영속성 관리를 위한 기능을 제공하는 객체 그래프 관리자이다. 코어데이터가 객체 그래프를 담당한다는 것은 객체와 객체를 연결할 수 있다는 것을 의미하고 이렇게 연결된 객체는 영속적으로 동기화 되기 때문에 연결된 한쪽 객체의 데이터가 삭제되면 자동으로 다른 한쪽의 객체 데이터 또한 삭제된다.

객체 그래프란?

  • 객체를 하나의 node로 간주하여 서로 간의 연관관계를 링크로 이어서 다양하게 연결되는 복합적인 그래프 형태의 도형

Why core data is not an ORM

Core Data: Apple's ORM Framework for iOS and the Mac - DATAVERSITY

https://zeddios.tistory.com/987

[iOS - swift] 12. 코어 데이터(Core Data)의 개념 - (1)

코어데이터는 DBMS일까?

코어데이터는 객체 그래프를 관리하는 프레임워크이다. 때문에 DBMS라고 말할 수 없으나 DBMS의 역할을 대체할 수 있다.

Apple Developer Documentation

CoreData

코어데이터의 대체제는?

코어데이터(Core Data)와 데이터베이스의 차이

  • Realm
  • Firebase
  • MongoDB?? ??

NoSQL [비관계형 데이터베이스] , 잘 모를 땐 지금 알아두자

Can I use MongoDB as a replacement for CoreData on iOS?

언제쓰는게 유리?

sql

  • 관계를 맺고있는 데이터가(JOIN된) 자주 변경되는 앱일 경우
  • 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우

nosql

  • 정확한 데이터 구조를 알 수 없거나 변경 / 확장 될 수 있는 경우
  • 읽기 처리를 자루하지만 데이터를 자주 변경하지 않는 경우 (즉, 한번의 변경으로 많은 문서를 업뎃할 필요가 없는 경우)
  • db를 수평적 확장 해야하는 경우(데이터의 양이 엄청나게 많은 경우)
profile
james, the enthusiastic developer

0개의 댓글