개발하는 동글 :]

[TIL],[Coredata VS UserDefaults] 본문

카테고리 없음

[TIL],[Coredata VS UserDefaults]

동글하다 2023. 10. 11. 00:05

1. Coredata VS UserDefaults

1.1 Coredata

CoreData는 "데이터베이스"가 아니라 이를 지원하는 "프레임워크"라는 것이 특징입니다.

대규모 데이터를 저장하거나 체계적인 데이터베이스가 필요할 때 사용하는 것이 적절합니다.

링크드 리스트처럼 객체를 탐색하다 보니 탐색 성능은 비교적 나쁘고,

Thread-Safe 하지 않아 Lock으로 동기화 처리를 해줘야 합니다.

대신, 원하는 데이터가 메모리에 올릴 수 있기 때문에 대규모 데이터를 저장해도 메모리 효율이 떨어지지 않습니다.

종합하면 대규모 데이터를 저장해야하는 상황에서 영속성 기능을 포함한 CoreData의 다른 기능도 필요하다면 CoreData를 선택하는 것이  적절해 보입니다.

1.2 UserDefaults

UserDefaults는 데이터 저장을 위한 가장 기초적인 방법으로, 세 가지 중에서 가장 간단하고 러닝 커브도 적습니다.

싱글턴 객체이고, Key-Value 쌍으로 데이터를 저장하는 방식입니다.

UserDefaults는 소규모 데이터 저장에 사용하는 것이 적절합니다.

그 이유는 메모리 효율성 때문입니다.

UserDefaults는 plist에 XML 형태로 데이터가 저장됩니다. 그래서 데이터 크기가 커지면 파일 크기가 커져요.

앱이 실행할 때 이 데이터를 모두 메모리에 올리기 때문에 메모리 성능에 악영향을 줍니다.

대신 데이터 Read/Write를 할 때 다시 메모리에 접근하지 않아도 되니 추가적인 오버헤드가 발생하지 않아요.

소규모 데이터를 다룬다면 속도도 빠르고 메모리에 부담도 주지 않게 기능을 구현할 수 있습니다.

UserDefaults의 큰 장점 중 하나는 Thread-Safe 하다는 것입니다.

CoreData와 Realm은 Thread-Safe 하지 않기 때문에 멀티 스레드 환경에서 주의를 해야 하지만,

UserDefaults는 Thread-Safe 하기 때문에 별도의 처리가 필요 없습니다.

위에서 말했듯이 plist에 데이터가 저장되기 때문에 앱이 삭제되면 데이터도 모두 삭제됩니다.

또한, 암호화해서 저장하지 않기 때문에 보안도 좋지 않아요.

종합해 보면 간단한 소규모 데이터를 쉽게 저장하고 싶을 때 UserDefaults를 사용하는 것이 좋습니다.

만약 데이터가 앱이 삭제돼도 남아있어야 하거나, 보안이 중요하다면 UserDefaults는 절대 사용하면 안 되겠습니다.

2. TIL

2.1 오늘의 회고

1. 최종 프로젝트를 시작하며 팀원들과 기획을 시작했다. 기획을 하는 단계에서  팀약속, 코드 컨벤션, 깃 전략과 최종적으로 어떠한 앱을 만들고 어떠한 업무를 분담할지를 정하였다. 이러한 기획을 하며 느낀 점은 전반적인 와이어 프레임을 기획하는 것에 많은 어려움이 느껴졌다. 어디서부터 시작해야 할지부터... 어떻게 범위를 정해야 하는지 등..

2. 담당한 페이지의 UI작업을 진행하였다. 

3. 온전한 앱의 기능을 구현하기 위해서 firebase의 공부가 필요해 보인다.

4. 로컬 DB를 무엇을 사용해야 할지 선정하는 과정을 공부하였다.

2.2 내일의 목표

1. 와이어 프레임 및 기획을 마무리