๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
๋ฐฑ์๋๋ฅผ ๋งก์๋ค ๋ณด๋ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ๋ด๋นํด์ผ ํ๋ค. ์ง๊ธ๊น์ง ํด๋ก ์ฝ๋ฉ์ฉ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ํด๋ดค์ง๋ง ์ค์ ์๋น์ค์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ฒ์์ด์ด์ ์ค๋ ๊ณ ์ฌ๋ฏธ์์๋ค. ๋ณต์กํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ด ํ์ํ์ง ์์๊ณ ๋น๊ต์ ๋ค๋ฃจ๊ธฐ ์ฌ์ด ์๋ฒ๋ฆฌ์ค์ NoSQL์ ํน์ง์ ๋ชจ๋ ๊ฐ์ง๊ณ ์๋ Firestore์ ์ฌ์ฉํ๊ธฐ์ ์ค์ ์๋น์ค์ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ฒ์ ๊ฒฝํํ๊ธฐ์ ์ด๋ฒ ํ๋ก์ ํธ๋ ์ต์ ์ด์๋ค.
Firestore์ ๋ฐ์ดํฐ ๋ชจ๋ธ
๊ณต์๋ฌธ์์ ๋ฐ๋ฅด๋ฉด SQL์ฒ๋ผ ํ ์ด๋ธ์ด๋ ํ์ด ์์ผ๋ฉฐ, ์ปฌ๋ ์ (Collection)์ผ๋ก ์ ๋ฆฌ๋๋ ๋ฌธ์(Document)์ Key-Value ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋ ๋ฐฉ์์ด๋ผ๊ณ ํ๋ค. ์ฝ๊ฒ ๋งํด, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ ์ปฌ๋ ์ ์ ์ฌ๋ฌ ๊ฐ์ ๋ฌธ์๊ฐ ์ ์ฅ๋ ์ ์๊ณ ๊ฐ ๋ฌธ์ ์์ ๋ฐ์ดํฐ ํ๋์ ๊ฐ๋ค์ด ์กด์ฌํ๋ ๋ฐฉ์์ด๋ค.
"์น์ดํ ํ๋ฃจ" ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
์ปฌ๋ ์ ์ ์ด ์ฑ์ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ฅผ ์๋ณํ ์ ์๋ ๊ฐ์ด ๋ด๋นํด์ผ ํ๋ค. ํ์ง๋ง, ์ด ์ฑ์ ํ์๊ฐ์ ์ด ์๊ธฐ ๋๋ฌธ์ ID/PWD๊ฐ ์๋ ์๋ณ์๊ฐ ํ์ํ๋ค. ๋ฐ๋ผ์, ์ฌ์ฉ์์ ๊ธฐ๊ธฐ๋ก ์๋ณํ ์ ์์ง ์์๊น ํด์ ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ iOS์์๋ UDID(Unique Device Identifier)๋ผ๋ ๊ธฐ๊ธฐ ๊ณ ์ ์๋ณ์๊ฐ ์กด์ฌํ๋ค๋ ์ฌ์ค์ ์ ์ ์์๋ค. ํ์ง๋ง, ์ ํ์ ๊ฐ์ธ์ ๋ณด๋ณดํธ ์ ์ฑ ๋๋ฌธ์ UDID ๊ฐ์ ์ธ ์ ์์๋ค. UDID๋ฅผ ๋์ฒดํ ๊ฐ์ ์ฐพ์๋ณด๋ IDFA์ IDFV๊ฐ ์๋ค๊ณ ํ๋ค. IDFA๋ Apple์ด ์ด์ํ๋ ๊ด๊ณ ์๋ณ์์ด๊ณ , IDFV๋ ๋ฒค๋ ์๋ณ์๋ผ๊ณ ํ๋ค. ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ react-native-device-info๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ IDFV ๊ฐ์ ์ ๊ณตํด์ค๋ค๋ ๊ฒ์ ์ฐพ์ ์ ์์๋ค. ๋ฐ๋ผ์ ์ปฌ๋ ์ ์ IDFV ๊ฐ์ผ๋ก ์ ํ๋ค.
* IDFA๋ iOS14 ์ดํ๋ถํฐ๋ ์ฌ์ฉ์์๊ฒ ๊ถํ์ ๋ฐ์์ผ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ผ๋ก ์ ์ฑ ์ด ๋ฐ๋์๋ค๊ณ ํ๋ค.
๋ฌธ์๋ ์ฌ์ฉ์์ ์ผ์ ์ ๋ด๋นํ๋ ์ญํ ๋ก ์ ํ๋ค. ์ฆ, ํ๋์ ๋ฌธ์๊ฐ ํ๋์ ์ผ์ ์ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ ์ผ์ ๋ผ๋ฆฌ์ ๊ตฌ๋ณ์ ์ํ ๋ฌธ์ ID๊ฐ์ด ํ์ํ๋ค. ์ฒ์์๋ ๋ฌธ์ ID๊ฐ์ Date.now() ๋ฉ์๋์ ๋ฐํ ๊ฐ์ ์ฌ์ฉํ๋ค. Date.now() ๋ฉ์๋๋ UTC ๊ธฐ์ค์ผ๋ก 1970๋ 1์ 1์ผ 0์ 0๋ถ 0์ด๋ถํฐ ํ์ฌ๊น์ง ๊ฒฝ๊ณผ๋ ๋ฐ๋ฆฌ ์ด(ex. 1635748753100)๋ฅผ ๋ฐํํ๋๋ฐ JavaScript์์ ๋๋ค ๊ฐ์ผ๋ก Unique ID๋ฅผ ์ฌ์ฉํ ๋ ์์ฃผ ์ด๋ค๊ณ ํ๋ค. ํ์ง๋ง, ์ด๋ ๊ฒ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฝ์ง ์์๋ค. ํ๋์ ์ด๋ค ์ผ์ ์ ๋ฌธ์์ธ์ง ์๊ณ ์ถ๊ธฐ์ ๋ฌธ์ ID๋ฅผ ๋ฐ๊ฟ ํ์๊ฐ ์์๋ค.
๋ฌธ์ ID๋ฅผ ์๋ก ์ ํ ๋ ๋ ๊ฐ์ง๋ฅผ ๊ณ ๋ คํ๋ค. ์ฒซ ๋ฒ์งธ๋ก๋, ์ผ์ ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ด์ผ ํ๋ค. ๊ทธ๋์ผ ๋ช ์์ ์ผ๋ก ๋ณด์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ๋ฒ์งธ๋ก๋, Firestore๋ ๋ฌธ์ ID๋ฅผ ์ค๋ฆ์ฐจ์์ด๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๊ฒ ์ค์ ํด์ค ์ ์๋ ๋ฐ ์ด๋ฌํ ์ ๋ ฌ์ด ์๋ฏธ๊ฐ ์์ด์ผ ํ๋ค. ์ด ๋ ๊ฐ์ง ์ฌํญ์ ๋ชจ๋ ๋ถํฉํ๋ ๊ฒ์ด ๋ฐ๋ก ์ผ์ ์ ์์ ์๊ฐ์ด๋ค. ๊ฐ ์ผ์ ๋ค์ ์์ ์๊ฐ์ ๋ฐ๋ผ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ์ํค๋ฉด ์๊ฐ ์์๋๋ก ๋ฐ์ดํฐ๊ฐ ๊ด๋ฆฌ๋์ด์ ๊ด๋ฆฌํ๊ธฐ ํ์ธต ํธํด์ง๋ค. ๋ํ, ํด๋น ๋ฐ์ดํฐ๋ค์ ๊ฐ์ ธ์ ์ฌ์ฉํ ๋ ์๋์ผ๋ก ์๊ฐ ์์๋๋ก ์ ๋ ฌ์ ํ์ง ์์๋ ๋ผ์ ํธ๋ฆฌํด์ง๋ค. ์ต์ข ์ ์ผ๋ก "YYYYMMDDHH:MM"ํ์์ ์์ ์๊ฐ์ ๋ฌธ์ ID๋ก ์ ํ๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๋ง์ ์๊ฐ ์ ๋ณด๋ฅผ ๋ดํฌํ๊ณ ์์ด์ ๋์ฑ๋ ๊ด๋ฆฌํ๊ธฐ ์ฌ์์ก๋ค.
๋ฐ์ดํฐ๋ ์ผ์ ์ ์ ๋ชฉ, ๋ ์ง, ์์๊ณผ ๋ ์๊ฐ / ์ผ์ ์ฅ์์ ์ฅ์๋ช , ์ฃผ์, ์๋ , ๊ฒฝ๋ / ์ผ์ ์ ์ฒดํฌ ๋ฆฌ์คํธ / ๋ฌธ์ ID / isDone / isSkip์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค. isDone์ ์ฌ์ฉ์๊ฐ ์ผ์ ์ฅ์์ ๋์ฐฉํด์ ์ผ์ ์ ์๋ฃํ ์ผ์ ์ธ์ง ์๋์ง ๋ํ๋ด๋ Boolean ๋ฐ์ดํฐ๋ค. isSkip ๋ํ ํด๋น ์ผ์ ์ด ์คํตํ ์ผ์ ์ธ์ง ์๋ ์ผ์ ์ธ์ง ๋ํ๋ด๋ Boolean ๋ฐ์ดํฐ๋ค.
'๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ > React Native' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React Native] - "์น์ดํ ํ๋ฃจ" ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ #3 (0) | 2021.12.16 |
---|---|
[React Native] - "์น์ดํ ํ๋ฃจ" ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ #1 (0) | 2021.12.16 |
๋๊ธ