Core Data는 DataBase가 아니다
CoreData는 데이터 저장에 관한 일종의 프레임워크이다.
1) In-Memory 방식이 존재: 사용 하려는 모든 데이터는 우선 메모리에 로딩되는 과정이 존재
2)엔터티(Entity)를 통해 데이터 저장 구조 정의
(다른 DB방식은 일반적으로 테이블을 통해 데이터 저장 구조를 정의)
엔터티(Entity): 데이터가 저장될 구조
**3)용어
1)관리객체(Managed Object): NSManagedObject
table에서 레코드를 읽을 때 coredata 에서는 객체가 생성되는데, 이 객체를 저장하는 자료형
2)관리 객체 컨텍스트(Managed Object Context)
핵심적인 두 가지 역할
(1)MO를 가지고 CRUD역할(CoreData에서 생성되는 모든 관리 객체는 컨텍스트에 담겨 관리)
4)관리 객체 모델(Managed Object Model)
엔터티(Entity)의 구조를 정의하는 객체인 동시에 이를 바탕으로 MO패턴의 모델 클래스를 참조
5)영구 객체 저장소(Persistent Object Store)
1)in-memory방식: 메모리에 로딩된 객체에 대해서만 수정 가능(SQLite는 메모리에 객체 모두를 로딩하지 않아도, 최소한의 데이터만 로드)
in - memory에서 데이터 삭제시, 영구 저장소에서 데이터 read->객체로 생성 -> 이것을 메모리에 로딩 -> 이를 삭제하고 다시 컨텍스트를 저장소에 커밋
2)데이터 로직에서의 한계
중복된 값의 입력을 방지하는 "Unique"키가 없으므로, 애플리케이션에서 비즈니스 로직을 통해 처리해야 가능
3)thread-safe하지 않음(싱글스레드 환경)
thread끼리 Lock기능(다른 쓰레드가 침범하지 못하는 것)이 존재하지 않음(단 락을 걸지 않음으로써 빠르게 데이터 처리가 가능)