์ด๋ฒ์ ํ๋ก์ ํธ๋ฅผ ์ ๋ฆฌํ๋ฉด์ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ๋ฅผ ๋ค์ ๋ณด๊ฒ ๋์๋ค.
์ฌ์ฉํด๋ดค์ง๋ง ์ ํํ ๊ณต๋ถํด๋ณด๊ณ ๋์ด๊ฐ์ผ๊ฒ ๋ค๊ณ ์๊ฐ์ด ๋ค์ด์ ๋ค์ ์ ๋ฆฌ๋ฅผ ํด๋ดค๋ค.
ํ์ด์ด๋ฒ ์ด์ค์์ ๋ด๊ฐ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ Firebase Database(DB)์ Firebase Authentication(Auth)์ด๋ค.
Firebase Auth๋ ์ด๋ฉ์ผ, ๊ตฌ๊ธ ๋ฑ ๋ค์ํ sns๋ฅผ ์ด์ฉํ ๋ก๊ทธ์ธ ์ธ์ฆ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์๋ค. ์ด ๋ถ๋ถ์ ์์ ์ด ๊ตฌํํ๋ ค๊ณ ํ๋ ํ๋ก์ ํธ์ ๋ฐ๋ผ ํ์ฉํด์ฃผ์ด ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค.
์ด ์ ์ ๊ทธ๋ค์ง ์ด๋ ต์ง ์์๋ค. ํ์ง๋ง, Firebase DB์ ์ ๊ทผํด์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ๊บผ๋ด์ ์ฐ๋ ๋ถ๋ถ์ ์์ด ์ฒ์์ ์ด๋ ค์์ ๋๊ผ์๋ค. ๋์๊ฒ Collection๊ณผ Document์ ๋ํ ๊ฐ๋ ์ด ๋ค์ฃฝ๋ฐ์ฃฝ ๋ค๊ฐ์์ ์ด๋ ค์ ์๋๋ฐ ๊ณต๋ถํด๋ณด๊ณ ์ง์ ๊ทธ๋ ค๊ฐ๋ฉฐ ํํ์ ํด๋ณด๋ ์ ๋ณด๋ค๋ ์ง์ ์ ์ผ๋ก ์๋ฟ์๋ ๊ฒ ๊ฐ๋ค.
Collection & Document?
Firebase ๊ณต์๋ฌธ์์๋ ์์๊ฐ์ด ์ค๋ช ์ด ๋์ด์๋ค.
๊ฐ ๋ฌธ์์๋ ํค-๊ฐ ์์ด ๋ค์ด ์์ต๋๋ค. Cloud Firestore๋ ์์ ๋ฌธ์๊ฐ ๋ง์ด ๋ชจ์ธ ์ปฌ๋ ์ ์ ์ ์ฅํ๋ ๋ฐ ์ต์ ํ๋์ด ์์ต๋๋ค.
๋ชจ๋ ๋ฌธ์๋ ์ปฌ๋ ์ ์ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค. ๋ฌธ์๋ ํ์ ์ปฌ๋ ์ ๋ฐ ์ค์ฒฉ ๊ฐ์ฒด๋ฅผ ํฌํจํ ์ ์์ผ๋ฉฐ, ๋ ๋ค ๋ฌธ์์ด ๊ฐ์ ๊ธฐ๋ณธํ ํ๋๋ ๋ชฉ๋ก ๊ฐ์ ๋ณตํฉ ๊ฐ์ฒด๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.
์ปฌ๋ ์ ๊ณผ ๋ฌธ์๋ Cloud Firestore์์ ์์์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ฌ์ฉ์๋ ์ปฌ๋ ์ ๋ด์ ๋ฌธ์์ ๋ฐ์ดํฐ๋ฅผ ํ ๋นํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ปฌ๋ ์ ๋๋ ๋ฌธ์๊ฐ ์์ผ๋ฉด Cloud Firestore์์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค.
document(๋ฌธ์) : Cloud Firestore์ ์ ์ฅ์ ๋จ์, ํ๋์ ๋ฐ์ดํฐ์ ๋จ์
map : ๋ฌธ์์ ๋ณต์กํ ์ค์ฒฉ ๊ฐ์ฒด
collection(์ปฌ๋ ์ ) : ๋ฌธ์์ ์ปจํ ์ด๋(๋ฌธ์๋ฅผ ๋ชจ์๋ ๊ฒ), ๋ฌธ์๊ฐ ์ ์ฅ๋๋ ๊ณณ
๋๋ ์ฑํ ๋ฐฉ์ ๋ง๋๋ ํ๋ก์ ํธ์ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์๊ธฐ ๋๋ฌธ์ ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ด์ผํ๋ค.
๊ณ์ธต์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ๋ณด๋ Cloud Firestore์ ๋ฌธ์๋ ๊ฐ๋ฒผ์์ผ ํ๋๋ฐ, ์ฑํ ๋ฐฉ์ ๋งค์ฐ ๋ง์ ๋ฉ์์ง๊ฐ ํฌํจ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ ์ปฌ๋ ์ ์ ์ถ๊ฐ๋ก ๋ง๋ค์ด ์ฌ์ฉํ์๋ค.
์๋์ ๊ฐ์ด ํํ์ ํด์ ์ฝ๋๋ฅผ ์์ฑ์ ํ์๋ค.
- Room (Collection)
- Room (Document)
- messages (Collection)
- message1 (Document)
- message2 (Document)
- ...
- chat participants (Collection)
- participant1 (Document)
- participant2 (Document)
- messages (Collection)
- Room (Document)
NoSQL?
๊ณต์๋ฌธ์์๋ ์ด๋ ๊ฒ ๋์์๋ค.
Cloud Firestore๋ NoSQL ๋ฌธ์ ์ค์ฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌ๋ฆฌ ํ ์ด๋ธ์ด๋ ํ์ด ์์ผ๋ฉฐ, ์ปฌ๋ ์ ์ผ๋ก ์ ๋ฆฌ๋๋ ๋ฌธ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด, NoSQL์ ์ ํํ ๋ฌด์์ผ๊น?
'Database Query SQL์ด ์๋ค'๋ ๋ง์ด๋ค.
์คํค๋ง๊ฐ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค (์คํค๋ง : ํ ์ด๋ธ(Table), ์ปฌ๋ผ(Column)๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ์คํธ๋ญ์ณ)
Relational DB์ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์คํธ๋ญ์ณ๊ฐ ์๊ณ , ์ด ์คํธ๋ญ์ณ์ ๋ณํ๋ฅผ ์ค๋ (๋ง์ด๊ทธ๋ ์ด์ ) ๋ชจ๋ ์ํธ๋ฆฌ๋ค์ ๋ค ์ ๋ฐ์ดํธ ํด์ฃผ๊ฒ ๋๋ค. ์ ๋ฐ์ดํธ๋ฅผ ํผํ ์ ์๋ ๋ฐ๋ผ์ ์์ต๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ด์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ฒ ์ฐจ๋ ํ์ด๋ฐ์ด ์ค๊ฒ ๋๋๋ฐ ์ด์ NoSQL์ DB๊ตฌ์กฐ๊ฐ flexibleํ ๊ฒฝ์ฐ์ ์ฅ์ ์ด ๋ฐํ๋๋ค.
Flexibleํ๋ค = ์นผ๋ผ์ ๋ํ๊ฑฐ๋ ์์ ํ๋๋ฐ ์ ํ์ด ์๋ค.๋ฐ๋ผ์, ํ์ฅ์ฑ์ด ์ฉ์ดํด์ง๊ฒ ๋ง๋ค์ด์ค๋ค๊ณ ๋ณด์๋ค.
๋ค์ ํฌ์คํธ๋ก๋ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ์ง์ ์ ์ผ๋ก ๋ฆฌ์กํธ์ ์ฌ์ฉํ๋ ์ฝ๋๋ค์ ์ ๋ฆฌํ๋ฉด์ ์ปฌ๋ ์ ์ ๋ฌธ์๋ฅผ ๋ํ๋ ๋ฑ Firebase์ ๋ฃ์ด์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ด๋ด์ผ๊ฒ ๋ค!