1. ๊ฐ์
RDBMS๋ง ์จ๋ณด๋ ๋์๊ฒ Graph Database๋ฅผ ์ธ ๊ธฐํ๊ฐ ์ฐพ์์๋ค. ์ Graph Database๋ฅผ ๋์ ํ๊ธฐ๋ก ํ๋์ง์ ๋ํด ์ ๋ฆฌํ๊ณ ์ ์ด ๊ธ์ ์ด๋ค.
4ํ๋ ์ด ๋์๊ณ ๋๋ ์กธ์ ์ํ ์ฃผ์ ๋ก ์ปจํ ์ธ ์ ๋ณด๋ฅผ ํ์ฉํ ๊ฐ์ธํ POI ์ถ์ฒ ์๋น์ค ๋ก ์ ์ ํ์๋ค.
๊ธฐ์กด์ ๊ฐ์ธํ POI ์ถ์ฒ ์์คํ ์ Collaborative Filterin์ด ์ฃผ๋ฅ์ด๊ณ ์ด๋ ํ๋ ๋ฐ์ดํฐ์๋ง ์์กดํ๊ณ ์์ด, POI์ ๋ค์ํ ์ปจํ ์ธ ์ ๋ณด(ํ์ , ๋ฆฌ๋ทฐ, ์ฌ์ง, ์ง๋ฆฌ์ ๊ฑฐ๋ฆฌ ๋ฑ)์ ์ ํ ๊ณ ๋ คํ์ง ๋ชปํ๋ค. ์ด๋ฐ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ํ๋ก์ ํธ๋ฅผ ์์ํ๊ฒ ๋์๋ค.
ai ํ์ต ๋ฐ์ดํฐ๋ก yelp์ ์คํ ๋ฐ์ดํฐ์ ์ ์ฌ์ฉํ๊ธฐ๋ก ํ๋ค. ์น ๊ด๋ จ๋ ํ๋ก์ ํธ๋ง ์งํํ๋ค ai, ml๊ณผ ์์ธ ํ๋ก์ ํธ๋ฅผ ํ๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ด๋ง๋ฌด์ํ๋ค.
์ ์ ํ์ผ์ธ json ๋ฐ์ดํฐ๋ฅผ Cloud DB์ ์ฌ๋ฆฌ๊ณ AI, ML์ ๋ด๋นํ๋ ํ์๋ค์ด ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋๊ฒ ๋์ ์ฒซ ์ ๋ฌด์ด๋ค. ์ด์ DB๋ฅผ ์ ํํด์ผ ํ๋๋ฐ, ๋ฐ์ดํฐ ๊ฐ ์ฐ๊ด๊ด๊ณ๋ฅผ ํ์ ํด์ ์ถ์ฒ์ด ์งํ๋๊ธฐ ๋๋ฌธ์ GDB๋ฅผ ์จ์ผํ๋ ๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ์ฐ์ ์ฅ๋จ์ ๋น๊ต ํ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ด์ธ๋ฆฌ๋ DB๋ฅผ ๋์ ํ๊ธฐ๋ก ํ์๋ค.
2. Graph Database ๋? (GDB)
๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฐ์กฐํ๋ ์ฒด๊ณ์ ์ธ ๋ฐ์ดํฐ ์ปฌ๋ ์ ์ด๋ค. ๊ทธ๋ํ๋ ๋ ธ๋, ๊ฐ์ , ์์ฑ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ์ด ๋ชจ๋ ์์๋ฅผ ํ์ฉํ์ฌ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ถ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํํํ๊ณ ์ ์ฅํ ์ ์๋ค.
๋ ธ๋
๋ ธ๋๋ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ์ ์ ์ด๋ค. ๊ฐ ๋ ธ๋์๋ ์์ ์ ํ์ ์ ํ์ด ์๋ ๊ด๊ณ๊ฐ ํฌํจ๋ ์ ์๋ค.
์ฃ์ง
์ฃ์ง๋ ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. ์๋ฅผ ๋ค์ด ์ฃ์ง๋ ์์-ํ์ ๊ด๊ณ, ์์ ๋ฐ ์์ ๊ถ์ ์ค๋ช ํ ์ ์๋ค. ์ผ๋๋ค ๊ด๊ณ์ ๋ค๋๋ค ๊ด๊ณ๋ฅผ ๋ชจ๋ ๋ํ๋ผ ์ ์๋ค. ์ฃ์ง์๋ ํญ์ ์์ ๋ ธ๋, ์ข ๋ฃ ๋ ธ๋, ์ ํ ๋ฐ ๋ฐฉํฅ์ด ์๋ค.
์์ฑ
๊ฐ ๋ ธ๋์๋ ํด๋น ๋ ธ๋๋ฅผ ์ค๋ช ํ๋ ์์ฑ์ด ์๋ค. ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ฃ์ง์๋ ์์ฑ์ด ํฌํจ๋๋ค. ์์ฑ์ด ์๋ ๊ทธ๋ํ๋ฅผ ์์ฑ ๊ทธ๋ํ๋ผ๊ณ ๋ ํ๋ค.
ํ๋์ Node๊ฐ ๊ฐ์ง ์ ์๋ ๊ด๊ณ์ ์์ ์ข ๋ฅ์ ์ ํ์ ์๋ค. ๋ํ, GraphDB์ Graph๋ ํน์ Edge์ ์ ํ ๋๋ ์ ์ฒด Graph๋ฅผ ํ์ํ ์ ์๋ค. GraphDB์์ Node๊ฐ์ ๊ด๊ณ๋ Query์๊ฐ์ ํฌํ๋์ง ์์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ์ง๋๊ธฐ ๋๋ฌธ์ Join ๋๋ Relationship ์ถ์ ํ๋ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
3. Graph Database๊ฐ RDBMS์ ๋ฐํด ๊ฐ๋ ์ฅ์
1. ๋น ๋ฐ์ดํฐ/์ค์๊ฐ ๋ฐ์ดํฐ ๋ถ์์ ์ฉ์ดํจ
๊ธฐ์กด ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ(table)๋ก ์ ์ฅ๋์ด ์์ด ๋ฐ์ดํฐ ๊ฐ์ ์๋ฏธํด์์ ์ํด ๋ณ๋์ ๋ฐ์ดํฐ ์๊ฐํ ์์ ์ ํ์๋ก ํ๋ค๋ฉด, ๊ทธ๋ํ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ์์ฒด๊ฐ ‘์ — ์ ’์ผ๋ก ์ ์ฅ๋์ด ์๊ณ ํน์ ์์ฑ์ ๋ฐ๋ผ ์ฐ๊ฒฐ๊ด๊ณ๋ฅผ ๋ฐ๋ก ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋์ ๋น ๋ฐ์ดํฐ/์ค์๊ฐ ๋ฐ์ดํฐ ๋ถ์์ ์ฉ์ดํ๋ค๋ ์ฅ์ ์ด ์๋ค.
์ด๊ฒ์ ํ ์ด๋ธ ํํ์ ๋ง์ถฐ์ง ๋ฐ์ดํฐ ํ์์ธ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณด๋ค ํจ์ฌ ํ์ค์ ์ธ ๋ชจํ์ ๊ฐ๊น์ด ๋ฐ์ดํฐ๋ผ๋ ๋๋์ ์ฃผ์ด ๋ฐ์ดํฐ์ ์๊ด๊ด๊ณ์ ๋ํ ๋์ ์ง๊ด์ฑ์ ์ ๊ณตํ๋ค.
2. ๋ฐ์ดํฐ ์ ์ฅ์ ์ ์ฐ์ฑ
๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๊ฐ์ฒด๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ๋ณํ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋ค. ๋ง์ฝ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ค๋ฉด ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ๋ด๊ธด ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ณ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ค๊ณผ์ ๊ด๊ณ๋ฅผ ์ฃ์ง๋ก ์ฐ๊ฒฐํ๊ธฐ๋ง ํ๋ฉด ๋ฐ์ดํฐ ์ถ๊ฐ๊ฐ ์๋ฃ๋๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ ์ฅ์ ๋งค์ฐ ์ ์ฐํ๋ค๋ ์ฅ์ ์ ๊ฐ์ง๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ก์ด ์์ฑ์ ๊ฐ์ง ๋ฐ์ดํฐ๊ฐ ๋ฑ์ฅํ๋ฉด ํ๋์ row๋ฅผ ์ํด ์ปฌ๋ผ์ ์๋ก ๋ง๋ค๊ณ , ๋ค๋ฅธ row๋ค์ ๋ถํ์ํ๊ฒ null๊ฐ์ผ๋ก ์ฑ์ฐ๊ณ , ์ธ๋ํค๋ฅผ ์ ์ฉํด์ผํ ํ ์ด๋ธ์ ํ์ธํ๊ณ , ์ ์ฝ๋ ์ถ๊ฐํด์ผ ํ๋ ๋ฑ ๋ง์ ์์ ์ด ์๊ตฌ๋๋ค.
3. ๋น ๋ฅธ ์ง์(Query) ์๋
๊ทธ๋ํ๋ฐ์ดํฐ์ ๋ํ์ ์ธ ์์๋ก ์์ ๋คํธ์ํฌ ๋ฐ์ดํฐ๋ฅผ ๋ค ์ ์๋๋ฐ, ํน์ ์ธ๋ฌผ์ ์น๊ตฌ์ ์น๊ตฌ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฑฐ๋ ์ด์ปค๋จธ์ค ์ผํ๋ชฐ์์ ํ ๊ณ ๊ฐ์ ์ฌ๋ฌ ์ผํ๋ชฐ์ ์ฃผ๋ฌธ๋ฐ์ดํฐ๋ฅผ ํ์ธํด์ผ ํ๋ ๋ฑ ๊ด๊ณ์ ๋ณต์ก์ฑ์ด ์ฌ๋ผ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ผ ํ ๋, ๊ธฐ์กด ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ๋ถ์๊ฐ๊ฐ ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ํ์ ํ ๋ค์ ์กฐ์ธ(Join)์ฟผ๋ฆฌ ๋ฑ์ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๊ณ ๊ด๊ณ๊ฐ ๋ณต์กํ ์๋ก ์ฟผ๋ฆฌ๋ ๋ณต์กํด์ง๋ ๋จ์ ์ ๊ฐ์ง๋ ๋ฐ๋ฉด, ๊ทธ๋ํ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ ๊ฐ์ฒด(๋ ธ๋)๋ค ๊ฐ์ ๊ด๊ณ๊ฐ ์ฃ์ง๋ก ์ด์ด์ ธ์๊ธฐ ๋๋ฌธ์ ์ฒ์ ๊ฒ์ ๋ ธ๋์ ๊ด๋ จ ์ฃ์ง๋ง ํ์ ํ๋ฉด ์ฐ๊ฒฐ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
์ฆ, ๋์ ์ฐ๊ด์ฑ์ ์ฐพ๊ณ ์ด๋ฅผ ๋ค๋ฃจ๋ ์๋น์ค๋ค์ ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ธฐ์กด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋ณด๋ค๋ ํจ์ฌ ํจ์จ์ ์ด๋ค.
์ด๋ฐ ์๋น์ค ๊ธฐ์ ๋ค์ ํ์ด์ค๋ถ, ์ธ์คํ, ์นด์นด์ค ๋ฑ์ด ์๋ค.
4. ๋์ ์ด์
์์์ ์๊ธฐํ์ง๋ง ๋ค์ ์ธ๊ธํ์๋ฉด ๋์ ํ๋ก์ ํธ ์ฃผ์ ๋ ์ปจํ ์ธ ์ ๋ณด๋ฅผ ํ์ฉํ ๊ฐ์ธํ POI ์ถ์ฒ ์๋น์ค ์ด๊ณ ๋์ ํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฒซ๋ฒ์งธ ์ด์ ๋ ๋จผ์ ๋์ ์ง๊ด๋ ฅ์ ๊ฐ๊ณ ์์ด ์ 3์๋ฅผ ๋น ๋ฅด๊ฒ ์ดํด์ํฌ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๋งค์ฃผ ๊ต์๋๊ณผ์ ๋ฏธํ , ๋ฐํ ๋ฑ ์ฐ๋ฆฌ ํ๋ก์ ํธ๋ฅผ ๊น๊ฒ ์ดํดํ์ง ๋ชป ํ๋ ์ 3์์๊ฒ ์ดํด์์ผ์ผํ ์ํฉ์ด 1๋ ๋์ ๊ณ์ํด์ ์ฃผ์ด์ง ๊ฒ์ด๋ค. node๋ค๊ณผ ์ด๋ค์ edge๋ก ์ฐ๊ฒฐํด์ ํํํด์ฃผ๋ GDB๋ ์ฐ๋ฆฌ์ ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ์ ์ ํฉํ๋ค.
๋๋ฒ์งธ ์ด์ ๋ ํ์ฅ์ ์ด๋ ค์๊ธฐ ๋๋ฌธ์ด๋ค. ๋น์ฅ์ review ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ ๊ฒฐ๊ณผ๊ฐ, ๋ฐฉ๋ฌธ ํ์, poi๊ฐ ๊ฑฐ๋ฆฌ ๋ฑ๋ง ๊ณ ๋ คํ๊ธฐ๋ก ํ์ง๋ง, ๋ ์ ํํ ์ถ์ฒ ๋ชจ๋ธ์ ํ์ตํ๊ธฐ ์ํด์ ๋ ๋ง์ ์์๋ค์ด ๋ณตํฉ์ ์ผ๋ก ๊ณ ๋ ค๋์ผ ํ๋ค. ์ด๋ node๋ฅผ ์ถ๊ฐํ๊ณ , edge์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ๋ง ์์ผ์ฃผ๋ฉด ๋๋ค.
์ธ๋ฒ์งธ ์ด์ ๋ ์ค์๊ฐ ์ถ์ฒ๋ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ค๊ณํ ๋ชจ๋ธ์ ๋จ์ ์ ์๋ก์ด user๊ฐ ์ถ๊ฐ๋๊ณ review๋ฐ์ดํฐ๋ค์ด ์๊ธด๋ค๋ฉด ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ก ์ถ์ฒ ๋ชจ๋ธ์ ์ฌํ์ตํด์ผ ์ ํํ ์ถ์ฒ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค. graph database๋ฅผ ์ฌ์ฉํ๋ค๊ณ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋๊ฑด ์๋๋ค. ๋์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ถ์ฒ์ ํด์ค ์ ์๋ค.
์๋ฅผ ๋ค์ด user A์ User B๊ฐ ์๊ณ POI C์ ๋ ๋ค ์ฌ๋ฌ๋ฒ ๋ฐฉ๋ฌธํ๋ค ๊ฐ์ ํ์. A์ B๋ ๋น์ทํ ๊ด์ฌ์ฌ๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ B๊ฐ ์์ฃผ ๋ฐฉ๋ฌธํ๋ POI D๋ฅผ A์๊ฒ ์ถ์ฒํด์ค์๋ ์๋ค.
๋ง์ง๋ง ์ด์ ๋ ๋น ๋ฅธ ์ฟผ๋ฆฌ ์๋์ด๋ค. ํ์ฌ ํ์ต์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ ๋ง ํด๋ 900๋ง๊ฐ๊ฐ ๋๋๋ค. ์ธ๋ฒ์งธ ์ด์ ์์ ๋งํ๋ ์ค์๊ฐ ์ถ์ฒ์ RDBMS์์ ํ๋ค๊ณ ์๊ฐํด๋ณด์. user ์ ๋ณด๋ฅผ ๋ถ๋ฌ์ค๊ณ , user์ ์น๊ตฌ ๋ชฉ๋ก์ ๋ถ๋ฌ์ค๊ณ , user์น๊ตฌ์ ๋ฐฉ๋ฌธ ์ ๋ณด๋ฅผ ๋ถ๋ฌ์์ผ ํ๋ค. ๋ ๋ณต์กํ ์ฐ๊ด๊ด๊ณ๋ฅผ ๊ฐ๋๋ค๋ฉด ์ ๋ง ๋ฌด์ํ ๋ง์ join์ด ํ์ํด์ง๊ณ ์ฑ๋ฅ์ด์๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค. ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๋ฅผ ๊ฐ๋จํ ํด๊ฒฐํ ์ ์๋ค.
ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์์ฑํ๋๋ฐ ์์ด์๋ RDBMS๋ GDB๋ ๊ทธ๋ ๊ฒ ํฌ๊ฒ ์ค์ํ์ง ์์ ์๋ ์๋ค.
ํ์ง๋ง ๊ท๋ชจ๊ฐ ์ปค์ง๊ณ ์ฌ๋ฌ๊ฐ์ง ๋ณ๊ฒฝ ์ฌํญ์ ๊ณ ๋ คํด๋ณด์์ ๋, ๊ฐ์ธํ๋ POI ์ถ์ฒ์ ์ ๊ณตํ๋ ์๋น์ค ์ฑ๊ฒฉ์ GDB๊ฐ ์ ํฉํ๋ค ํ๋จํ์ฌ GDB์ค ๊ฐ์ฅ ๋์ ์ ์ ์จ์ ๋ณด์ฌ์ฃผ๋ neo4j๋ฅผ ๋์ ํ์๋ค.
'DB ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ์์ฐํค์ ์ธ์กฐํค ์ค ์ด๋ค๊ฑธ ๊ธฐ๋ณธํค๋ก ๋ฌ์ผ ํ ๊น? (1) | 2024.12.16 |
---|---|
[replication] mysql Replication ์ผ๋ก DB ๋ถํ ๋ถ์ฐ ์ํค๊ธฐ (0) | 2024.04.11 |
[Redis] redis์์ ๋ฐ์ดํฐ ์๊ตฌ ์ ์ฅํ๋ ๋ฐฉ๋ฒ (RDB / AOF) (0) | 2024.03.09 |
[Lock] DB Lock & JPA Lock ์ฝ๋๋ก ์ดํด๋ณด์ (MySQL) (0) | 2024.02.20 |
[Index] MySQL ์ฑ๋ฅ ์ต์ ํ (+์คํ ๊ณํ) (0) | 2024.02.19 |