기어가더라도 제대로

0425 TIL (Persistance Data) 본문

기타

0425 TIL (Persistance Data)

Damagucci-juice 2022. 4. 25. 16:44

본 자료에서 모든 사진 자료의 출처는 코드스쿼드에 있습니다.

Persistance Data

데이터를 저장하는 곳

저장을 한다는 이야기는 어려가지 의미가 있다.
기본적으로 컴퓨터는 휘발성이다. 메모리에 올라갔다가 비워지는 데이터를 영구적으로 옮기는 일을 Persistance 라고 한다.

학습로드맵

회사마다 깊숙이 배워야할 부분이 도메인이 나눠져있으니 이렇게 키워드를 잡고 가면 좋겠다.

TIL

TIL

Object Graph

오브젝트들의 관계를 나타낸 그래프 혹은 상하 관계를 나타낸 그래프

JavaScript Obejct Notation

자바스크립트에선 swift에서 딕셔너리라 부르는 것을 Object라고 한다. 그런 Object 에서 문자열로 표현한 데이터 구조를 JSON 이라고한다.

Swifty JSON

  • Serialization
    • Array || Dictionary 로 꺼내 쓸 수 있는 형태로 변환해준다.
    • 안에 데이터 타입을 원하는 타입으로 매칭이 안된다.
    • JSON -> Serialization -> array, dictionary -> JSONSerialization -> JSON
  • Codable
    • 안에 데이터 타입을 원하는 타입으로 지정할 수 있다.
    • JSON -> JSONDecoder -> Struct -> JSONEncoder -> JSON

Binary Data and File

String, file, 여타 데이터 타입을 Data 라는 타입에 담을 수 있다.

파일URL

파일은 FileManager 를 이용해 URL 로 받은 파일을 저장할 필요성이 있다.

URLComponent

  • Scheme : "https://"
  • Path :
  • 등등이 있다. 확실한건 추후 업데이트

iOS App SandBox

배포할 때 번들에 담을 때, 경로를 복사해서 넣어줘야 된다(?)

사용자 설정 UserDefaults

Preferences/bundleld.PropertyList
"faults"를 내지 않기 위해서 기본으로 넣어주다가 점차 기본 구성품이라는 뜻을 갖게 되었다.

user_defaults

보안적인 문제가 있어서, KeyChain 이 등장하게 되었다.

키체인

인증서나, 중요 문서를 열기위한 키에 해당되는 단어가 "키체인"에 "키"이다.
키체인에 있는 값은 앱을 지워도 사라지지 않는다.
3rd Party Library 는 "KeyChainAccess" 라는 것이 있다.

DB

모바일은 SQLite 가 짱

  • 아주 간단함
  • 가벼움
  • 매우 넓게 배포가 되고 있음
  • 리눅스, 맥OS 가릴 것 없이 잘됨
  • 오픈 소스

단점

  • 고효율 동시성 X
    • 파일 전체에 대해 reader/writer locks
  • 거대한 데이터 셋 X
    • 보통 2TB MAX
  • 사용자 시스템이 없음

SQLite Library for Swift

import SQLite
// 예제는 검색해보시길...

Core Data in iOS

메모리에 올라온 데이터를 맵핑 시켜주는 역할을 한다.
Object-relational Mapping

Class === table
Attribute === Column
Instances === Row

주요 기능

  • 변화 추적해서 되돌리기 기능 구현(Re-Do,UnDo)
  • 객체 관계를 유지할 수 있음
  • Lazy 비동기 Futures
    • 메모리에 있는 것을 거의 바로(Lazy하게) 저장하기는 하는데, 간혹 안될 수도 있다.
  • 속성값에 대한 자동 점검
  • 스키마 마이그레이션
    • 예를 들어 기존 테이블이 있는데 "사번" 컬럼은 추가하는 것을 말한다(?)

구조

CoreDataConfigure

NSManagedObject 하나가 구체적이고, Context는 구조(?), 막 그렇게 구체적인 것은 아니다. 보관하거나 불러오는 일을 처리하기 위해서 NSFetchRequest 이다.

앱을 코어데이터를 쓰겠다! -> AppDelegate 에서 Container 를 설정해줘서
모듈 내에 모든 부분에서 CoreData 를 사용하겠다. 로 가져가는 것이 좋다.

  • CoreData 에 저장된 자료를 불러오는 객체 : FetchResultController

Persistance Store Types and Behaviors

Persistance Store Types and Behaviors

Core Data 는 DB 가 아니다. 영구 자료 저장 전략으로 DB를 쓸 수도 있고, Binary 파일로 저장할 수도 있고, 전체를 메모리에 올렸다가 앱이 꺼지면 거둘 수도 있다.

최근에 애플이 추천하고 있는것은 iCloudKit 을 이용해 서버에도 저장이다.

DiffableDataSourceSnapshot 지원

SQLite 의 대항마 Realm

File > Swift Packages > Add Package Dependency

예제코드를 검색해보자.
사용법이 직관적이여서 좋다!

'기타' 카테고리의 다른 글

220530 TIL  (0) 2022.05.30
Swift 220511.til  (0) 2022.05.11
todo app 개발하면서 학습해야하는 키워드  (2) 2022.04.16
강제 말고 임대하세요  (0) 2022.04.09
20220407. 놀라운 사실  (0) 2022.04.07
Comments