⭐️ 정의

DataStore는 SharedPreferences를 대체하는 개선 된 신규 데이터 저장소 솔루션이다.

Kotlin Coroutine과 Flow를 기반으로 하고 있다.

⭐️ 종류

  1. Prefernces DataStore : Key-Value 쌍을 저장하는 타입이며 타입 안정성을 제공 하지 않는다.

  2. Proto DataStore : 구조화된 데이터를 저장할 수 있으며 타입 안정성을 제공한다. 프로토콜 버퍼를 사용하여 스키마를 정의해야 한다.

프로토콜 버퍼 : 구조화된 데이터를 직렬화하기 위한 기술

❓JSON 형태를 많이 사용하는데 JSON 대신 프로토콜 버퍼를 이용하는 이유는 무엇일까?

👍🏻 장점

1. 같은 데이터를 보내도 데이터 크기가 작아 통신이 빠르다.

2. 파싱을 할 필요가 없다.

JSON 포맷으로 온 데이터를 다시 객체로 파싱해서 객체로 사용하는게 보통인데, 프로토콜 버퍼는 바이트가 오면 그 바이트 그대로 메모리에 써버리고 객체 레퍼런스가 가리켜 버리기 별도의 파싱이 필요가 없다.

👎🏻 단점

1. 인간이 읽기 불편하다.

JSON는 데이터를 보면 사람이 읽기 편하다. 반대로 proto파일이 없으면 프로토콜 버퍼가 쓴 데이터는 사람이 읽기 어렵다.