Persist or cached data on a single device, or sync data to multiple devices with CloudKit
Core Data를 활용하여 애플리케이션의 반영구적 데이터를 오프라인에서 사용하고, temporary data를 캐시처리하고 undo 기능을 앱에서 사용할 수 있습니다.
데이터베이스(Database, DB)는 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 정보의 집합이다. 논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조화함으로써 검색 및 갱신의 효율을 높인다. 즉, 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있다. 같은 데이터라 할지라도 사용자는 각각의 응용 목적에 따라 다르게 사용할 수 있다. 사무 계산을 할 경우 각각의 업무 전용 데이터 파일을 사용하고 있지만 각 파일에는 중복된 정보가 들어있는 것이 많다. 이 중복을 피하여 정보를 일원화하여 처리를 효율적으로 하기 위해서 서로 관련성을 가지며, 중복이 없는 데이터의 집합이 데이터베이스인 것이다.
계층형
데이터 관계를 트리 형태로 정의하는 구조 (데이터 중복이 생길 수 있음)
네트워크형
데이터 관계를 그물 형태로 정의하는 구조(계층형의 데이터 중복 문제는 해결되지만 복잡한 구조탓에 추후 구조 변경 시 비용이 많이듬
관계형(SQL)
행과 열로 구성된 테이블간의 관계를 나타내는 구조로 흔히 사용하는 DB 형태
NoSQL
관계형 DB보다 덜 제한적인 일관성 모델을 이용하여 키와 값 형태로 저장되고 키로 DB를 관리 및 접근한다.
[DB] 데이터베이스의 종류와 관계형 _ RDBMS (오라클 외)
데이터베이스 관리 시스템(DataBase Management System, DBMS)은 데이터베이스를 조작하는 별도의 소프트웨어로, DBMS를 통해 데이터베이스를 관리하여 응용 프로그램들이 데이터베이스를 공유하고, 사용할 수 있는 환경을 제공한다. DBMS는 데이터베이스를 구축하는 틀을 제공하고, 효율적으로 데이터를 검색하고 저장하는 기능을 제공한다. 또한 응용 프로그램들이 데이터베이스에 접근할 수 있는 인터페이스를 제공하고, 장애에 대한 복구 기능, 사용자 권한에 따른 보안성 유지 기능 등을 제공한다. 즉, 데이터베이스 내의 정보를 구성하는 컴퓨터 프로그램의 집합으로서, 자료의 중복성을 제거하고 다른 특징들 중에 무결성, 일관성, 유용성을 보장하기 위해서 자료를 제거하고 관리하는 소프트웨어 체계이다.
데이터베이스 관리 시스템 - 위키백과, 우리 모두의 백과사전
마이그레이션
인메모리 기반이라 하더라도 코어 데이터 내부적으로는 파일이나 SQLite 같은 영구 저장소에 보조적으로 데이터를 저장할 수 있기 때문에, 앱이 종료되더라도 데이터가 삭제되지 않는다.
SQLite
파일
ORM: (Object Relation Mapping) 객체와 관계형데이터 베이스를 자동으로 mapping 시켜주는 방식
ORM
코어데이터는 ORM을 지원하는 것뿐 아니라 객체 그래프 관리자로서 역할도 도맡아 합니다.
코어데이터는 애플리케이션에서 Model 계층의 객체를 관리하는 데 사용하는 프레임워크이며, 라이프 사이클이나 영속성 관리를 위한 기능을 제공하는 객체 그래프 관리자이다. 코어데이터가 객체 그래프를 담당한다는 것은 객체와 객체를 연결할 수 있다는 것을 의미하고 이렇게 연결된 객체는 영속적으로 동기화 되기 때문에 연결된 한쪽 객체의 데이터가 삭제되면 자동으로 다른 한쪽의 객체 데이터 또한 삭제된다.
객체 그래프란?
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의 역할을 대체할 수 있다.
NoSQL [비관계형 데이터베이스] , 잘 모를 땐 지금 알아두자
Can I use MongoDB as a replacement for CoreData on iOS?