ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CoreData
    iOS 2021. 2. 15. 17:32

    안녕하세요. 그린입니다!

    이번 포스팅에서는 CoreData(코어데이터)에 대해 알아보겠습니다..!

     

    우선 코어데이터라는걸 알기전 데이터베이스에 대해 알아보고 차근차근 넘어가겠습니다☺️

     

    1. 데이터베이스란?

     : DataBase 줄여서 DB라고 흔히 부르며 데이터를 얻기 위한 기능이나 구조를 나타내는 추상적인 개념입니다.

     

     -. 데이터베이스에는 여러가지 다양한 종류들로 나눌 수 있습니다.

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

     2) 네트워크형: 데이터 관계를 그물 형태로 정의하는 구조

        (계층형의 데이터 중복 문제는 해결되지만 복잡한 구조탓에 추후 구조 변경 비용이 많이듬)

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

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

    ++ 이외 클라우드DB등 폭넓게 다양한 종류가 존재한다.

     

    2. 데이터베이스 관리 시스템이란?

     : DataBaseManagementSystem 줄여서 DBMS라고 불리며 데이터베이스의 기능을 제공하기 위해 만들어진 소프트웨어이다.

       (Oracle, MySQL, SQLServer등은 DB가 아닌 DBMS이다.)

     

    3. iOS 환경에서 로컬DB를 쓸때의 여러가지 방법

     1) 애플이 제공하는 퍼스트파티 프레임워크 사용: CoreData

     2) 외부 써드파티 라이브러리 사용: SQLite, Realm

     

    4. 코어데이터란?

     : 앱에서 모델 계층을 관리하는데 사용하는 프레임워크로 DB가 아니다.

     -. 애플이 제공하는 In-memory 방식의 데이터 관리 프레임워크

     -. 단순한 DB처럼 저장소 기능뿐만이 아닌 undo, redo, caching등 다양한 기능 사용 가능

     

    5. 코어데이터의 역할

     -. 디바이스에서 영구적 데이터를 저장 및 관리 (오프라인 사용 가능) --> 그러나 앱이 삭제되면 삭제된다.

     -. UserDefault는 정말 간단한 앱의 사용자 정보를 저장할때 적합하고 CoreData는 크고 복잡한 데이터를 체계적으로 저장할 수 있다.

     -. 임시 데이터 캐시 및 단일 기기 앱 실행 취소 기능 추가 등..

     -. 데이터를 객체로 다뤄 편리하게 사용

     

    6. 코어데이터의 구조

     : 다층구조로 각 층을 담당하는 핵심 객체들이 서로 밀접한 연관성을 가진채 상호작용을 한다.

     

    7. 코어데이터가 관리하는 영구 저장소 타입의 종류

     1) NSInmemoryStoreType: Inmemory에서 끝난다.

     2) NSBinaryStoreType

     3) NSXMLStoreType: iOS 환경에서 사용할 수 없다.

     4) NSSQLiteStoreType: 기본으로 저장되는 타입

     

    8. 코어데이터의 장단점

     [장점]

      1) DBMS에 대한 종속성이 절감된다.

      2) 독립적으로 작성되어 재사용 및 유지보수가 편리

      3) CloudKit을 사용하여 다른 기기들과 연동할 수 있다.

     [단점]

      1) in-memory 방식임으로 메모리에 로딩된 객체에 대해서만 수정이 가능
         (SQLite
    모두 메모리에 로딩하지 않아도 최소한의 데이터만 로드하여 가능)

      2) thread-safe 하지 않는다. (싱글스레드 환경)

      3) 메모리 누수 가능성

     

    9. ORM이란?

     : Object-Relation Mapping의 약자로 객체와 관계형 DB의 데이터를 자동으로 매핑해주는것

     -. OOP는 클래스라는 객체를 DB는 테이블로 객체가 정의됨으로 객체 간 불일치가 발생하기에 ORM을 통해

        SQL을 자동으로 생성하여 불일치를 해결해준다.

        DB 데이터 <- ORM -> 객체

     -. 코어데이터는 단순히 데이터를 저장 불러오는 기능만 하는것에서 넘어서 객체 그래프를 관리해주고 

        스스로 관리되는 객체를 다루는 측면에서 ORM의 기능을 한다고 볼 수 있다.

     

    10. 코어데이터는 DB 혹은 DBMS인가??

     : 코어데이터는 DB가 아니고 DB의 기능을 수행할 수 있는 역할을 지닌 프레임워크이다.

       영구저장을 하는것은 코어데이터의 일부 기능으로 여러가지 기능들의 총체이다.

     : 보통의 DB와 다르게 완전한 In-memory 형태로 사용이 가능 (앱 런타임 중에만 데이터를 저장)

     : 객체의 속성값, 생명주기, 관계들을 자동으로 관리해줌 (DB는 외래키와 조인등이 필요)

     

    11. DB와 코어데이터의 차이

     1) DB는 단순히 데이터 저장 및 불러오기 VS 코어데이터는 해당 기능이 부속된 하나의 기능 (주된 기능은 객체 그래프 관리)

     2) DB는 디스크에 저장된 데이터로 작업 VS 코어데이터는 메모리에 로드된 객체 작업

     3) 코어데이터는 삭제 및 편집을 하려면 메모리에 로드해야 작업이 가능하다 (DB는 로드할 필요없음)

     

    [참고자료]

    https://developer.apple.com/documentation/coredata

    https://zeddios.tistory.com/987

    https://eunjin3786.tistory.com/121

    https://www.raywenderlich.com/7569-getting-started-with-core-data-tutorial

    https://velog.io/@dnjscksdn98/Database-ORM이란

    https://www.letmecompile.com/코어데이터core-data-데이터베이스의-차이/

     

     

    이렇게 이번 포스팅에서는 코어데이터에 대해 알아봤습니다. 핵심은 코어데이터는 단순한 DB나 DBMS가 아닌 해당 기능을 제공해주는

    프레임워크입니다. 따라서 해당 기능 외에도 중요한 다른 기능들도 제공합니다.

    아직 사용하면서 더 익혀야할 점이 많은 코어데이터... 애플에서 제공해주는만큼 다른 DB 외부 라이브러리와 어떤차이가 있는지 확실히

    짚고 넘어가야겠습니다. 감사합니다😊

     

     

    'iOS' 카테고리의 다른 글

    Responder Chain / Touch Event  (0) 2021.02.22
    의존성 관리도구  (0) 2021.02.18
    KeyChain  (4) 2021.02.01
    Collection View  (0) 2021.01.25
    Application Life Cycle  (0) 2021.01.14
Designed by Tistory.