Skip to content

Conversation

@ericKwon95
Copy link
Collaborator

08. Save Data

iOS 앱에서 데이터를 저장하는 방법에는 어떤 것들이 있나요?

  • iOS 앱에서 데이터를 저장하는 방법으로는 UserDefaults, Keychain, FileManager, CoreData, SQLite, Realm 등이 있습니다.

  • UserDefaults

    • 간단한 데이터를 키-값 쌍으로 저장
    • 사용하기 쉽고 접근이 빠릅니다.
    • 대용량 데이터나 복잡한 구조 저장에는 적합하지 않고, 보안성이 약합니다.
  • Keychain

    • 암호화 복호화를 지원해 보안에 민감한 데이터를 저장하기 적합합니다.
    • 앱 샌드박스 외부에 위치해있어 앱을 삭제해도 사라지지 않습니다.
  • File System

    • 파일 시스템에 곧바로 저장하는 방식입니다.
    • 구조화되지 않은 binary, json, 이미지 등의 데이터를 저장하기 적합합니다.
  • CoreData

    • 객체 그래프 관리와 영구 저장을 위한 프레임워크 입니다.
    • SQLite를 기반으로 하지만 직접적인 쿼리 없이도 데이터를 다룰 수 있도록 추상화를 제공합니다.
    • 앱의 데이터 모델을 관계형 DB처럼 관리할 수 있게 해줍니다.
    • 높은 수준으로 구조화된 객체들을 저장하기 적합합니다.
  • SQLite

    • 오픈소스로 동작하는 크로스플랫폼 DBMS 입니다.
    • SQL 쿼리로 동작합니다.
    • 안드로이드, iOS, 윈도우, macOS 등 매우 다양한 플랫폼을 지원하기 때문에 크로스플랫폼 환경에서 유용합니다.
  • Realm

    • 모바일 앱을 위해 설계된 크로스 플랫폼 데이터베이스 입니다.
    • 모바일에 중점을 두고 설계되어 경량화 및 메모리, 디스크, 배터리 효율성을 고려해 만들어졌습니다.
    • 모바일 크로스플랫폼 환경에 적합한 데이터베이스 입니다.

UserDefaults의 사용 시 주의할 점은 무엇인가요?

  • UserDefaults는 앱이 시작될 때 메모리에 모두 불러와지기 때문에 거대한 크기의 정보를 저장하기에는 적합하지 않습니다.
  • 또한 보안에 취약하기 때문에 민감한 정보를 저장하기에도 적합하지 않습니다.

Keychain은 어떤 데이터를 저장하기에 적합한가요?

  • Keychain에는 API Key 등 민감한 정보를 저장하기에 적합합니다.

Core Data와 SQLite의 차이점은 무엇이며, 각각 언제 사용하면 좋나요?

  • Core Data는 데이터베이스가 아닌 프레임워크인 반면 SQLite는 데이터베이스 입니다.
  • 코어 데이터는 앱과 실제 영구 저장소 사이에서 영구 저장소에 대한 접근을 더 쉽게 만들어주는 역할을 합니다.
  • 실제로 코어 데이터는 내부적으로 SQLite를 영구 저장소 옵션 중 하나로 제공합니다.
  • 앱 저장소가 애플 생태계에서만 필요하다면 Core Data를 사용할 수 있습니다.
  • 만약 크로스 플랫폼 저장소가 필요하다면 SQLite를 사용할 수 있습니다.

@mint3382 mint3382 linked an issue Dec 27, 2024 that may be closed by this pull request
4 tasks
@mint3382 mint3382 merged commit b5e2625 into main Dec 29, 2024
@mint3382 mint3382 deleted the 08-Save-Data branch January 7, 2025 03:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[LEVEL 1] 08. Save Data

3 participants