코어 데이터와 SQLite의 차이는 무엇인가



https://cocoacasts.com/what-is-the-difference-between-core-data-and-sqlite/

코어 데이터와 SQLite의 차이는 무엇인가? 비록 이 것이 보통의 질문이지만, 질문이 잘 못 되었다. 코어 데이터와 SQLite간의 비교는 사과와 오렌지 간의 차이와 같다. 어째서인가?

대답은 간단하다. 코어데이터는 객체 그래프를 관리하기 위한 프레임웍이고 SQLite는 관계형 데이터베이스이다. 관심이 있다면 긴 답변을 계속 읽기바란다.

SQLite는 무엇인가?

SQLite는 가벼운 데이터베이스 엔진으로서 아주 성능이 좋고 그래서 임베디드 시스템에 적합하다. SQLite이 관계형 데이터베이스라고 하지만, 개발자는 데이터베이스에 저장된 레코드 사이의 관계를 알아야 한다.

다른 많은 데이터베이스와 같이 SQLite는 데이터를 저장하기 위한 것이다. 

코어데이터는 무엇인가?

코어 데이터와 SQLite사이의 가장 큰 차잇점은 SQLite는 데이터베이스이지만 코어 데이터는 아니라는 점이다. 이 것이 가장 결정적인 차이점이다. 코어데이터와 SQLite는 다른 문제에 대한 해결책이다.

코어 데이터는 SQLite를 저장소로 쓸 수 있지만 프레임워크 자체는 데이터베이스가 아니다.

코어 데이터는 데이터베이스가 아니다.

코어 데이터는 객체 그래프를 관리하기 위한 프레임워크이다. 객체 그래프는 상호 연결 객체의 콜렉션이라고 할 수 있다. 프레임워크는 복합 객체 그래프를 관리하는데 탁월하다.

코어 데이터는 객체 그래프를 관리한다.

프레임워크는 객체 그래프내의 객체의 생명 주기를 관리한다. 디스크에 객체 그래프를 선택적으로 저장할 수 있고, 관리하는 객체 그래프를 검색하는 강력한 인터페이스를 제공한다.

하지만 코어데이터는 더 많은 기능을 제공한다. 프레임워크는 입력 무결성, 데이터 모델 버저닝, 변화 추적과 같은 기능을 제공한다.

저장소 형식

코어 데이터가 SQLite 데이터베이스를 저장소로 사용할 수 있다고 언급했지만, 다른 저장 형식인 이진 저장소와 메모리 저장소도 지원한다.

코어 데이터가 SQLite 데이터베이스를 어떻게 사용하는지 알고 있지만, 이 것이 모든 SQLite 데이터베이스를 다룰 수 있음을 의미하지는 않는다. SQLite 데이터베이스 스키마는 프레임워크에서 세부적으로 관리하며 공개적으로 문서화되어 있지 않다.

코어 데이터 또는 SQLite

어떤 것을 사용하는 것이 좋을까? 코어 데이터 또는 SQLite? 이는 잘못된 질문이다. 코어 데이터를 사용하지 않는 가벼운 해결책을 찾는다면 SQLite면 충분하다. C를 좋아하지 않는다면 커스 뮐러의 FMDB 라이브러리를 사용할 수 도 있다. 이 는 Objective-C 래퍼의 객체 지향적 래퍼를 제공한다.

만약 다중 엔티티, 속성, 그리고 관계와 같은 복잡한 객체 그래프를 관리한다면 코어데이터가 고려할만한 가치가 있다. 코어 데이터는 생각보다 쉽다.

만약 코어 데이터를 고른다면 프레임워크의 기본을 건너뛰지 않는 것이 좋다. 코어데이터는 학습 커브가 있다. 



덧글

댓글 입력 영역