์ทจ์ค์์ผ๋ก ์ด๋ฃจ์ด์ง ํ์ด๋ค๋ณด๋, ์ธํ๋ผ์ ๋์ ์ต๋ํ ์๋ผ๊ณ ์ t4g.micro๋ก DB๋ฅผ ์ด์ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. ๊ทธ๋ฐ๋ฐ, ์ด ์คํ์์ ๊ณต๊ฐ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ฒ ๋๋ฉด CPU ์ง์ฝ์ ์ธ ๊ณต๊ฐ ์ฟผ๋ฆฌ ํน์ฑ์ ์ฝ 2~3์ด์ ์๊ฐ์ด ๊ฑธ๋ ค ์๋ต์ด ์ฌ๋งํผ ๋๋ ค์ก๋ค.
๊ทธ๋์ ์ฒ์์๋ ๊ณต๊ฐ ์ฟผ๋ฆฌ ์์ฒด๋ฅผ ์ต์ ํ ํ๊ธฐ ์ํด์ ์ฌ๋ฌ ๋ฐฉ์์ ์๋ํ๋ค.
๊ธฐ์กด์๋ $nearSphere๋ผ๋ ๊ณต๊ฐ ์ฟผ๋ฆฌ๋ฅผ ํตํด ์ฃผ์ด์ง ์ฌ์ฉ์์ ์์น์์ ๋ฐ์ง๋ฆ์ด 1~3km๋ก ์ด๋ฃจ์ด์ง ์ ์ด๋ด์ ํฌํจ ๋ฐ ๊ฑธ์ณ ์ง๋๊ฐ๋ ๋ฌ๋ ์ฝ์ค๋ฅผ ์กฐํํ๊ณ ์์๋ค. ๊ทธ๋์ MongoDB์์ ์ ๊ณตํ๊ณ ์๋ ๊ณต๊ฐ ์ฟผ๋ฆฌ ์ค ๋๋จธ์ง 2๊ฐ๋ฅผ ํตํด ์ด๋ฅผ ์ต์ ํ ํด๋ณด๊ณ ์ ํ๋ค.
- $geoIntersects
ํด๋น ์ฟผ๋ฆฌ๋ ๊ธฐ์ค์ด ๋๋ ๋ํ์ด ์ฃผ์ด์ง๋ฉด, ๊ทธ ๋ํ์ ์ง๋๋ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ค๋ค. ๋ค๋ง, ์ฌ์ฉ์ ์์น๋ก๋ถํฐ 1~3km ๋ด์ ์์นํ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํด์ '์'์ด ์๋ '์ฌ๊ฐํ'์ ์ด์ฉํด์ผ ํ๋ค. ๊ทธ ์ด์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต๊ฐ ๋ฐ์ดํฐ๋ Point, LineString, Polygon์ ์ ๊ณตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์์ ํํํ๋ ค๋ฉด ์์ ์ํ ์ ๋ง์ ์ขํ๋ฅผ ์์์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์๊ตฌ์ฌํญ ์์ฒด๋ฅผ ์์ ์ถฉ์กฑํ์ง ์์ ๋ฟ๋ง ์๋๋ผ ์๋๋ ๊ธฐ์กด ์ฟผ๋ฆฌ์ ๋น์ทํ ์๋ต ์๊ฐ์ ๋ณด์ฌ์คฌ๋ค.
- $geoWithin
ํด๋น ์ฟผ๋ฆฌ๋ ๊ธฐ์ค์ด ๋๋ ๋ํ์ด ์ฃผ์ด์ง๋ฉด, ๊ทธ ๋ํ ๋ด์ ํฌํจ๋๋ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด์ค๋ค. ๋ํ, $centerSphere์ ํจ๊ป ์ฌ์ฉํด์ 1~3km ๋ฐ์ง๋ฆ์ ๊ฐ์ง๋ ์์ ๊ธฐ์ค ๋ํ์ผ๋ก ์ค์ ํ ์๋ ์์๋ค. ํ์ง๋ง ๋จ์ ์ ๊ณต๊ฐ ๋ฐ์ดํฐ๊ฐ 'ํฌํจ'๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฌ๋ ์ฝ์ค ์ขํ ์ค ํ๋๋ผ๋ ์ ๋ด์ ํฌํจ๋์ง ์์ผ๋ฉด ์กฐํ๋์ง ์๋๋ค๋ ๋ฌธ์ ๊ฐ ์์๋ค.
ํด๋น ์ฟผ๋ฆฌ ๋ํ ์๊ตฌ์ฌํญ ์์ฒด๋ฅผ ์์ ์ถฉ์กฑํ์ง ์์ ๋ฟ๋ง ์๋๋ผ ์๋๋ ๊ธฐ์กด ์ฟผ๋ฆฌ์ ๋น์ทํ ์๋ต ์๊ฐ์ ๋ณด์ฌ์คฌ๋ค.
์ด๋ ๊ฒ ๋ํ์ ์ผ๋ก ์ ๊ณต๋๊ณ ์๋ ๊ณต๊ฐ ์ฟผ๋ฆฌ 3๊ฐ ๋ชจ๋ ๋น์ทํ ์๋๋ฅผ ๋ณด์ฌ์คฌ๋ค. ๊ทธ๋์ ์ ์ด๋ ๊ฒ ๋๋ฆฐ ์๋๋ก ์กฐํ๋๋์ง๋ฅผ ๋จผ์ ํ์ ํด๋ณด๊ธฐ๋ก ํ๋ค. ๊ทธ๋ฌ๋ฉด, ๋ฌธ์ ์ ํด๊ฒฐ๋ฐฉ์์ ๋ค๋ฅธ ๊ด์ ์ผ๋ก ๋ฐ๋ผ๋ณผ ์ ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์ด์ ์ ์ฌ๋ฆฐ MongoDB ์ธ๋ฑ์ค ๊ธ๊ณผ ํจ๊ป ์ฟผ๋ฆฌ์ ๋์์ ์คํ๊ณํ์ ํตํด ๋ถ์ํด ๊ฒฐ๋ก ์ ๋๋ค.
searchIntervals: [ {
minDistance: 0,
maxDistance: 3000,
maxInclusive: true,
nBuffered: 5, //ํ๋ณด๊ตฐ
nReturned: 1
} ]
searchIntervals: [ {
minDistance: 0,
maxDistance: 1704.1646476730755,
maxInclusive: false,
nBuffered: 19, //ํ๋ณด๊ตฐ
nReturned: 11
} ]
๊ฒฐ๋ก ์ ๋ชจ๋ ๊ณต๊ฐ ์ฟผ๋ฆฌ๊ฐ FETCH ๋จ๊ณ์์ nBuffered์ ํด๋นํ๋ ํ๋ณด ๋ฐ์ดํฐ๊ฐ ๋ง์์๋ก ์ฟผ๋ฆฌ์ ์๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฒ์ ์๊ฒ๋์๋ค. ์ด๋ ์ฝ์ค๋ณ๋ก ์ขํ ๋ฐ์ดํฐ๊ฐ ์ฝ 1000๊ฐ์์ ๋ง์ผ๋ฉด 5๋ง ๊ฐ๊น์ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์, ์ขํ ํ๋ํ๋์ ์ํ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ ์ฐ์ฐ๋ ์์ฒด๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ด์๋ค. ์ฆ, ๋ฐ์ดํฐ ์์ฒด๊ฐ ๋ณ๋ชฉ ์ง์ ์ด ๋๊ณ ์์๋ค.
๊ทธ๋์ ๋ฐ์ดํฐ๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์ง์คํด๋ณด๊ธฐ๋ก ํ๋ค. ๊ธฐ์กด์๋ ๋ ์ขํ ์์ ํ๋์ฉ ๋น๊ตํ๋ฉฐ 100m ์ด๋ด์ ์์นํด์๋ค๋ฉด ํ๋์ ์ ์ ์ ๊ฑฐํ์ฌ ์๋ณธ ๋ฐ์ดํฐ๋ณด๋ค ์์ ์ขํ๋ฅผ ์ ์งํ๋๋ก ํ์์ผ๋, ์ด๋ ๊ฒ ํ์ฌ๋ ์ ๊ฑฐ๋๋ ์ขํ๋ ์๋ ๊ทธ๋ ๊ฒ ๋ง์ง ์์๋ค. ๋ํ, ์ฝ์ค์ ํํ๋ฅผ ์๊ฐํ์ง ์๊ณ ์ ๊ฑฐํ๋ค๋ณด๋ ๊ฐ๋ ์ฝ์ค์ ํํ๊ฐ ๋ฐ๋๋ ๋ฌธ์ ๋ ๋ฐ์ํ๋ค.
๊ทธ๋์ ์ฝ์ค์ ํํ๋ฅผ ์ ์งํ๋ฉฐ ์ขํ๋ฅผ ์ค์ผ ์ ์๋ ์ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ ๊ทผํด๋ณด๊ณ ์ ํ๊ณ , Douglas-Peucker ์๊ณ ๋ฆฌ์ฆ์ ์๊ฒ๋์๋ค. ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ ๊ณก์ ์ ๋ ์ ์ ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ์ ์ฌ ๊ณก์ ์ผ๋ก ์ถ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ๋ค.
ํด๋น ์๊ณ ๋ฆฌ์ฆ ์ธ์๋ ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์์ง๋ง, ๋ฌ๋ ์ฝ์ค์ ์ ํํ ํํ์ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ๊ทผ์ฌ ๋ฐ์ดํฐ๋ง ์กด์ฌํด๋ ์ฟผ๋ฆฌ์ ๋ฌธ์ ๊ฐ ์์๊ธฐ ๋๋ฌธ์ ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ค.
๊ทธ๋ฆฌ๊ณ , ์ด๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฉํ๊ณ ์์์ 10๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์ ์ค์ฐจ ๋ฒ์์ ๋ฐ๋ฅธ ์ฝ์ค์ ๋ชจ์์ ์๊ฐํํ์ฌ ๋น๊ตํด๋ณด์๋ค.


๊ทธ ๊ฒฐ๊ณผ, ์ค์ฐจ ๋ฒ์ 10m๊ฐ ์ฝ์ค์ ํํ๋ฅผ ๊ฐ์ฅ ์ ์ ์งํ๋ฉด์ ์ขํ ์๋ฅผ ์ฝ 90% ์ด์ ์ ๊ฑฐํ ์ ์์๋ค. ๊ทธ๋์ ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ๋ฐ ์๋ฒ์ ์ ์ ์ฉํด๋ณด์๊ณ , ์์ฒญ ์ ์ฝ 2.4์ด๊ฐ ๊ฑธ๋ฆฌ๋ ์๋ต ์๊ฐ์ ํ๊ท 200~300ms๋ก ๊ฐ์์ํฌ ์ ์์๋ค.


๋ํ ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๋ฉด์, ์ฌ์ฉ์์๊ฒ ๊ฐ์ํ๋ ์ฝ์ค๋ฅผ ์๋ต์ผ๋ก ์ค์ง ํน์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ์ค์ง ๊ณ ๋ฏผํ์๋ค. ์๋ํ๋ฉด, ์ฟผ๋ฆฌ๋ ๊ทผ์ฌ ๋ฐ์ดํฐ๋ก ๊ฐ๋ฅํ์ง๋ง ์ฌ์ฉ์๋ ์ง์ ์ฝ์ค๋ฅผ ๋ณด๊ธฐ์ ์ ํํ ๋ฐ์ดํฐ๋ฅผ ์ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ํ์๋ค์ ์๊ฒฌ์ ๋ฐ์ํ์ฌ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ์๋ต์ผ๋ก ์ฃผ๋ ๊ฒ์ผ๋ก ํ๋ค.
๊ทธ๋์ ์ฟผ๋ฆฌ์๋ ๋จ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ , ์๋ต์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ค์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋ค. ์ด ๊ณผ์ ์์ ๊ธฐ์กด ์๋ณธ ๋ฐ์ดํฐ๊น์ง ๊ทธ๋๋ก ์ ์ฅํ๋ฉด ๋ฐ์ดํฐ ํฌ๊ธฐ์์ ์ํด๋ฅผ ๋ณผ ์ ์์๊ธฐ ๋๋ฌธ์ ์์ถ๋ฅ ์ด ์ข๊ณ , ์๋๊ฐ ๋น ๋ฅธ Zstd ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ์ฌ ์๋ณธ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ ์ ์ฅํ ์ ์๊ฒ ํ๋ค.


์ด๋ฅผ ํตํด ์์ถ ์ ์ฝ 21.0 KB → ์์ถ ํ ์ฝ 9.6 KB, ์ฝ 54.4% ๊ฐ์ํ ์ ์์๋ค.
์ด๋ฌํ ๊ณผ์ ์ ๋ชจ๋ ๋ง์น ํ ๊ฐ๋ฐ ์๋ฒ์์ ์ด์ ์๋ฒ๋ก ์ ์ฉ ๋ฒ์๋ฅผ ํ๋ํ์๊ณ , ์ต์ข ์ ์ผ๋ก ํ๊ท ์๋ต ์๊ฐ์ 3.8s์์ ์ฝ 82.8ms๋ก 45.9๋ฐฐ ๊ฐ์ ํ ์ ์์๋ค. ํด๋น ๊ฒฝํ์ ํตํด ๋ฌธ์ ์ ์์ธ์ด ํญ์ ๋์ ๋ณด์ด๋ ๊ณณ์ ์์ง ์๋ค๋ ๊ฒ๊ณผ ๋๋ฉ์ธ์ ํน์ฑ๊ณผ ๊ธฐ์ ์ ์๋ฆฌ๋ฅผ ์ดํดํ ๋ ๋น๋ก์ ๊ทผ๋ณธ์ ์ธ ํด๊ฒฐ์ฑ ์ ์ฐพ์ ์ ์๋ค๋ ๊ฒ์ ๋ฐฐ์ธ ์ ์์๋ ๊ฒ ๊ฐ๋ค.


'๊ฐ๋ฐ > ๋ฐ์ธ๊ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| OSRM Match API๋ก ๋ฌ๋ ์ฝ์ค ๋ฐ์ดํฐ ์ขํ ๋ณด์ ํ๊ธฐ (0) | 2025.12.14 |
|---|---|
| ๊ธธ์ฐพ๊ธฐ, ๊ฒฝ๋ก ๋ณด์ ์ ํต์ฌ OSRM ํบ์๋ณด๊ธฐ (0) | 2025.12.08 |
| API ๋ฌธ์ ๊ฐ์ ๊ณผ ๋ฌธ์ํ ํด Stoplight๋ก ๋ณ๊ฒฝํ๊ธฐ (0) | 2025.12.07 |
| ํ๋ก์ ํธ์์ Batch Job ๋ก๊ทธ์ MDC๋ฅผ ์ ์ฉํ๋ค. (0) | 2025.10.26 |
| ๋๋ฉ์ธ ๊ฐ์ฒด ์์ฑ ๋ก์ง ๊ด๋ จ ๊ณ ๋ฏผ (0) | 2025.10.06 |