๐ก ์ด๋ค ๊ธฐ๋ฅ์ธ๊ฐ์?
์ถ๊ฐํ๋ ค๋ ๊ธฐ๋ฅ์ ๋ํ ๊ฐ๋จํ ์ค๋ช
์ ํด์ฃผ์ธ์
ํ์ฌ ์ต๊ทผ์ ์ ์ ์กฐํ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ DB์์ ์กฐํํ ๋ค, ์ ํ๋ฆฌ์ผ์ด์
๋ ๋ฒจ์์ Haversine ๊ณต์์ ํตํด ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ํํ๊ณ , ๊ฐ์ฅ ๊ฐ๊น์ด 10๋ช
์ ์ ํํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๊ณ ์๋ค.
์ด ๋ฐฉ์์ ๋ฐ์ดํฐ ๊ท๋ชจ๊ฐ ์ฆ๊ฐํ ์๋ก ์ ์ฒด ์ ์ ๋ฅผ ๋์์ผ๋ก ๊ฑฐ๋ฆฌ ์ฐ์ฐ์ ์ํํ๊ฒ ๋์ด CPU ๋ฐ I/O ๋น์ฉ์ด ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ฉฐ, ํนํ ๋ฉ์ธ ํ๋ฉด์์ ํธ์ถ๋๋ API ํน์ฑ์ ํธ๋ํฝ ์ฆ๊ฐ ์ ๋ณ๋ชฉ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
๊ฐ์ ๋ฐฉํฅ
- Bounding Box ๋๋ Spatial Index ๊ธฐ๋ฐ์ผ๋ก ํ๋ณด๊ตฐ ์ฌ์ ํํฐ๋ง ์ ์ฉ
- ์ถ์๋ ํ๋ณด๊ตฐ์ ๋ํด์๋ง Haversine + Top-K(Priority Queue) ์ ์ฉ (๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ๊ณ ๋ ค)
โ
TODO
๐ ์ฐธ๊ณ ํ ๋งํ ์๋ฃ
๊ณต์ ๋ฌธ์, ๊ฐ๋ฐ ๋ธ๋ก๊ทธ, ๊ฐ์ ์๋ฃ ๋ฑ ์์ ๋กญ๊ฒ ์ฒจ๋ถํด์ฃผ์ธ์
๐ก ์ด๋ค ๊ธฐ๋ฅ์ธ๊ฐ์?
ํ์ฌ ์ต๊ทผ์ ์ ์ ์กฐํ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ ์ ๋ฐ์ดํฐ๋ฅผ DB์์ ์กฐํํ ๋ค, ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ์์ Haversine ๊ณต์์ ํตํด ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ํํ๊ณ , ๊ฐ์ฅ ๊ฐ๊น์ด 10๋ช ์ ์ ํํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๊ณ ์๋ค.
์ด ๋ฐฉ์์ ๋ฐ์ดํฐ ๊ท๋ชจ๊ฐ ์ฆ๊ฐํ ์๋ก ์ ์ฒด ์ ์ ๋ฅผ ๋์์ผ๋ก ๊ฑฐ๋ฆฌ ์ฐ์ฐ์ ์ํํ๊ฒ ๋์ด CPU ๋ฐ I/O ๋น์ฉ์ด ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ฉฐ, ํนํ ๋ฉ์ธ ํ๋ฉด์์ ํธ์ถ๋๋ API ํน์ฑ์ ํธ๋ํฝ ์ฆ๊ฐ ์ ๋ณ๋ชฉ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
๊ฐ์ ๋ฐฉํฅ
โ TODO
๐ ์ฐธ๊ณ ํ ๋งํ ์๋ฃ