Life style/TIL

데이터베이스의 종류와 iOS에서 주로 사용되는 데이터베이스

jaewpark 2024. 5. 19. 14:45

데이터베이스는 크게 2가지로 나눌 수 있다.

  • 관계형 데이터베이스
  • 비관계형 데이터베이스

관계형 데이터베이스(RDBMS)

데이터를 행과 열로 구성된 2차원 테이블 형태로 저장된다.

SQL을 사용하여 데이터를 조작한다.

비관계형 데이터베이스(NoSQL)

키-값으로 데이터를 저장한다.

JSON 등의 문서 형태로 데이터를 저장한다.

 

iOS에서 사용되는 SQLite, Core Data, Realm 등의 특징과 사용 사례

Core Data는 관계형 데이터베이스와 객체 지향 프로그래밍을 결합한 것으로 객체-관계 맵핑된다.

Entity, Attribute, Relationship로 정의된 스키마로 저장되어 SQL와 유사하게 데이터를 쿼리할 수 있다.

데이터는 SQLite 데이터베이스에 저장된다.

 

Swift Data에서는 Core Data와 같이 Swift 코드가 아닌 파일과 도구를 사용하는 것이 아닌 Swift를 사용하여 Model과 Relation을 관리할 수 있다. 또한, SwiftUI와 연계되기 쉽도록 만들어졌다.

 

관계형 데이터베이스 ACID 특성과 트랜잭션의 개념

Transaction은 데이터베이스 관리 시스템(DBMS)에서 하나의 작업 단위로 실행되는 일련의 연산들을 의미한다.

또한, ACID를 만족해야 한다. 

  • Atomicity(원자성)
    : Transaction의 작업은 완전히 실행되거나 실행되지 않아야 한다. 부분적으로 실행되어서 안된다.
  • Consistency(일관성)
    : Transaction 성공적으로 완료되면 일관된 상태를 유지해야 한다. 데이터베이스의 무결성 제약 조건
  • Isolation(고립성)
    : 동시에 실행되는 Transaction이 서로 영향을 미치지 않고 독립적으로 실행되어야 한다
  • Durability(지속성)
    : 성공적으로 완료되면 영구적으로 데이터베이스에 반영되어야 한다.

iOS에서 데이터베이스 스키마 버전 관리와 마이그레이션을 처리하는 방법

앱을 시작할 때 데이터베이스 스키마 버전을 확인하여 앱에 포함된 스키마 버전을 확인한다.

다르다면 마이그레이션을 해야 한다.

변경된 부분을 추적하여 자동으로 마이그레이션 하거나 맵핑을 통해서 어떻게 변환할지 정할 수도 있다.