투케이2K

660. (Android/안드로이드) 앱 영구 데이터 저장소 SharedPreferences (프리퍼런스) , DataStore (데이터 저장소) 비교 정리 본문

Android

660. (Android/안드로이드) 앱 영구 데이터 저장소 SharedPreferences (프리퍼런스) , DataStore (데이터 저장소) 비교 정리

투케이2K 2023. 9. 22. 14:22

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[설 명]

 

-------------------------------------------------------------------------
[SharedPreferences 설명]
-------------------------------------------------------------------------

1. SharedPreferences 안드로이드 초기부터 사용된 앱 영구 데이터 저장소 솔루션 입니다

2. SharedPreferences 는 키 - 값 (key, value) 형태로 데이터를 쉽게 읽고, 쓸 수 있어 작은 데이터를 저장 시 효과적으로 사용된 솔루션 입니다

3. SharedPreferences 는 앱 저장소에 데이터를 저장하며, 앱 삭제 또는 앱 데이터 및 캐시 삭제를 하지 않는 경우 데이터가 영구히 보존 됩니다

  >> 앱 삭제 수행 시에는 저장된 데이터가 사라짐

4. SharedPreferences 의 value 값 저장 시 String , Int , Boolean , Float 등의 데이터 타입을 저장할 수 있습니다

5. SharedPreferences 는 작고 단순한 데이터를 저장하기에 적합 합니다

  >> 각 값 (value) 에 대해 30K 이하 로 저장 권장 (value 값 저장 값이 큰 경우는 SQLite 등 DB 사용을 권장 / 1mb 이상 되면 성능에 문제가 발생 가능)
  >> SharedPreferences xml 파일 용량은 제한 없음 (실제 휴대폰에 저장할 수 있는 가용 공간 만 확보 되면)





-------------------------------------------------------------------------
[DataStore 설명]
-------------------------------------------------------------------------

1. DataStore 란 프로토콜 버퍼를 사용하여 키-값 쌍 또는 유형이 지정된 객체를 저장할 수 있는 데이터 저장소 솔루션입니다

2. DataStore 는 코루틴 및 Flow를 사용하여 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장하는 것이 특징입니다

3. DataStore 저장 방법 구분 : 

  >> 키 - 값 (key, value) 으로 구성되어 있는 Preferences DataStore
  >> 사용자가 정의한 데이터를 저장할 수 있는 Proto DataStore : 프로토콜 버퍼를 사용해 스키마 정의 필요

4. DataStore 는 데이터의 타입을 보장해주며, SharedPreferences 보다 빠르고 단순합니다

5. DataStore 는 Dispather.IO 밑에서 작동하기 때문에 UI 스레드를 호출해도 안전합니다

6. DataStore 는 앱 저장소에 데이터를 저장하며, 앱 삭제 또는 앱 데이터 및 캐시 삭제를 하지 않는 경우 데이터가 영구히 보존 됩니다

  >> 앱 삭제 수행 시에는 저장된 데이터가 사라짐

7. DataStore 는 현재 구글에서 SharedPreferences 를 대신해 강력히 데이터 저장 사용해 추천을 하고 있는 기술입니다

8. DataStore 는 작고 단순한 데이터를 저장하기에 적합 하며, 저장하려는 value 데이터가 큰 경우는 SQLite 등 DB 사용을 권장 합니다

  >> 각 값 (value) 에 대해 8K 로 제한





-------------------------------------------------------------------------
[참고 사이트]
-------------------------------------------------------------------------

https://developer.android.com/training/data-storage?hl=ko#pref

https://developer.android.com/training/data-storage/shared-preferences?hl=ko#java

https://developer.android.com/topic/libraries/architecture/datastore?hl=ko#kts

https://proandroiddev.com/lets-explore-jetpack-datastore-in-android-621f3564b57

 

반응형
Comments