๊ฐ์
๋ฐ์ธ๊ถ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๋ฉฐ MySQL์์ MongoDB๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ API ์๋ต ์๋๋ฅผ ํฌ๊ฒ ๊ฐ์ ํ ์ ์์๋ค. ์ฒ์์๋ ๋จ์ํ NoSQL์ธ MongoDB๊ฐ ๋ ๋น ๋ฅด๋ค๊ณ ๋ง ์๊ฐํ๋๋ฐ, ์ด ๊ธ์ ์ฐ๋ฉฐ ๊ทธ ์ฐจ์ด๊ฐ ๊ณต๊ฐ ์ธ๋ฑ์ค๊ฐ ๋ํ์ ๊ทผ์ฌํ๋ ๋ฐฉ์์ ์ฐจ์ด์์ ๋น๋กฏ๋๋ค๋ ๊ฒ์ ์ดํดํ๋ค.
์ด ๊ธ์์๋ ๊ณต๊ฐ ๋ฐ์ดํฐ์ ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ MySQL๊ณผ MongoDB๊ฐ ๊ฐ๊ฐ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ธ๋ฑ์ฑํ๋ ๋ฐฉ์์ ๋น๊ตํ๋ฉฐ, ๊ทธ ๋ด๋ถ ๋์ ์๋ฆฌ๋ฅผ ์ ๋ฆฌํ๋ค.
๊ณต๊ฐ ๋ฐ์ดํฐ๋ ๋ฌด์์ธ๊ฐ?
๊ณต๊ฐ ๋ฐ์ดํฐ๋ ๊ธฐํํ์ ๊ฐ์ฒด์ ๋ฌผ๋ฆฌ์ ์์น ๋ฐ ๋ชจ์์ ๋ํ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ฉฐ, GIS ์๋น์ค์์ ํต์ฌ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ด๋ค. ๊ณต๊ฐ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ํ์ค์ OGC(Open Geospatial Consortium, ๊ฐ๋ฐฉํ ๊ณต๊ฐ ์ ๋ณด ์ปจ์์์)์ด๋ผ๋ ๊ตญ์ ํ์คํ ๊ธฐ๊ตฌ์์ ์ง์ ํ๋ค.
์๋ฅผ ๋ค์ด '๋ถ์ฐ'์ด๋ผ๋ ๊ฐ์ฒด์ ๋ํ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ ๋ค์๊ณผ ๊ฐ์ด ํํํ ์ ์์ ๊ฒ์ด๋ค.

ํ์ฌ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ OGC Simple Features ํ์ค์ ๋ฐ๋ผ ์ ์๋ ๋ช ์ธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ํด๋น ํ์ค์ ๋ฐ๋ฅด๋ฉด ๊ณต๊ฐ ๋ฐ์ดํฐ๋ ๋ํ์ ์ผ๋ก 3๊ฐ์ง์ ๋ฐ์ดํฐ ํ์์ผ๋ก ํํ๋๋ค.
- Point(์ ): ๋จ์ผ ์ขํ
- ์) ์ด๋ ํน์ ์นดํ์ ์์น
- LineString(์ ): ์ขํ๋ค์ ์ด์ ์
- ์) ๋ฌ๋ ์ฝ์ค, ๋๋ก
- Polygon(๋ฉด): ๋ซํ ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฉด
- ์) ์ง๋ ์ ๋ถ์ฐ ๊ด์ญ์ ํ์ ๊ฒฝ๊ณ
๊ณต๊ฐ ๋ฐ์ดํฐ๋ ๊ฒฐ๊ตญ ์ขํ๋ก ํํ๋๋ค. ํ์ง๋ง, ๊ฐ์ ์ขํ๋ผ๋ ์ด๋ค ๊ธฐ์ค ์์์ ํด์ํ๋๋์ ๋ฐ๋ผ ์ค์ ์์น๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค. ์ด ๊ธฐ์ค์ ์ขํ ์ฐธ์กฐ ์์คํ (CRS, Coordinate Reference System) ์ด๋ผ๊ณ ํ๋ฉฐ, SRID(Spatial Reference Identifier)๋ ํน์ CRS๋ฅผ ์๋ณํ๋ ID์ด๋ค.
๊ณต๊ฐ์ ๊ธฐ์ค์ด ๋๋ SRID
์ง๊ตฌ ์์ ์์น๋ฅผ ์ขํ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
- GCS(Geographic Coordinate System)
- PCS(Projected Coordinate System)
GCS(Geographic Coordinate System, ์ง๋ฆฌ ์ขํ๊ณ)
์ง๋ฆฌ ์ขํ๊ณ(GCS)๋ ์ง๊ตฌ๋ฅผ ํ์ ํ์์ฒด๋ก ๊ฐ์ฃผํ๊ณ , ๊ทธ ํ๋ฉด์ ์์ ์์น๋ฅผ ์๋์ ๊ฒฝ๋๋ก ๋ํ๋ด๋ ์ขํ๊ณ์ด๋ค. ๊ทธ๋ฐ๋ฐ ์ค์ ์ง๊ตฌ๋ ์๋ฒฝํ ํ์์ ๋ชจ์์ ํ์ง ์๊ณ , ์ธํ๋ถํํ ๋ชจ์์ ๊ฐ๊ณ ์๋ค. ๊ทธ๋์ ํ์ ํ์์ฒด๋ฅผ ์ง๊ตฌ์ ์ด๋ ์ค์ฌ์ ์์น์ํค๋๋์ ๋ฐ๋ผ ๊ฐ์ ์๋/๊ฒฝ๋๋ผ๋ ํํ๋๋ ์์น๋ ๋ฌ๋ผ์ง ์ ์๋ค.
๊ทธ๋์ ํ์ ํ์์ฒด ๋ชจ์๊ณผ ๊ทธ ์ค์ฌ์ ๋ํ ์ ๋ณด๋ฅผ ํจ๊ป ํํํด์ผ ํ๋ค. ๋ํ์ ์ธ GCS๋ก๋ WGS84, GRS80, NAD83 ๋ฑ์ด ์๋ค. ์ด ์ค WGS84๊ฐ GPS์์ ์ฌ์ฉํ๋ ๊ตญ์ ํ์ค์ ํด๋นํ๋ค.
PCS(Projected Coordinate System, ํฌ์ ์ขํ๊ณ)
ํฌ์ ์ขํ๊ณ(PCS)๋ 3์ฐจ์์ ์ง๊ตฌ๋ฅผ 2์ฐจ์์ธ ํ๋ฉด์ ํฌ์ํ ์ขํ๊ณ์ด๋ค. GCS๊ฐ ์๋/๊ฒฝ๋๋ก ์ขํ๋ฅผ ๋ํ๋ด๋ ๋ฐ๋ฉด์ PCS๋ ๋ฏธํฐ(m) ๋จ์์ x, y ์ขํ๋ก ์์น๋ฅผ ๋ํ๋ธ๋ค.
์ง๊ตฌ๋ฅผ ํ๋ฉด์ผ๋ก ํผ์น๋ฉด์ ํ์ฐ์ ์ผ๋ก ์๊ณก์ด ๋ฐ์ํ๊ธฐ์, ์ด๋ค ์์ฑ(๋ฉด์ , ํํ, ๊ฑฐ๋ฆฌ ๋ฑ)์ ์ผ๋ง๋ ๋ณด์กดํ ์ง์ ๋ฐ๋ผ ๋ค์ํ ํฌ์ ๋ฐฉ์์ด ์กด์ฌํ๋ค. ๋ํ์ ์ผ๋ก UTM์ด ์์ผ๋ฉฐ, ํ๊ตญ์ EPSG 5179๋ฅผ ํฌ์ ์ขํ๊ณ๋ฅผ ์ฌ์ฉํ๋ค.
SRID
์ด์ฒ๋ผ ์ง๊ตฌ ์์ ์์น๋ฅผ ์ขํ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ์ด๋ค ๊ฒ๋ค์ด ์กด์ฌํ๋์ง ์ดํด๋ณด์๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค์ด์ง ์ฌ๋ฌ ์ขํ๊ณ๋ค์ ์๋ณํ๊ธฐ ์ํด์ ๊ฐ๋จํ๊ฒ SRID๋ผ๋ ๊ณ ์ ID๋ฅผ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด SRID 4326์ WGS84 ์ขํ๊ณ๋ฅผ ์๋ฏธํ๋ค. MongoDB์ 2dsphere ์ธ๋ฑ์ค๋ WGS84๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ๊ฐ์ ํ๋ฉฐ, MySQL์ ๊ธฐ๋ณธ๊ฐ์ 0์ด์ง๋ง ํ ์ด๋ธ ์์ฑ ์ SRID 4326์ ๋ช ์์ ์ผ๋ก ์ค์ ํด์ค ์ ์๋ค.
MySQL์์์ ๊ณต๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์ ํํค์น๊ธฐ
์์ ๊ณต๊ฐ ๋ฐ์ดํฐ์ ํํ(Point, Polygon ๋ฑ)์ ๊ทธ ๊ธฐ์ค์ด ๋๋ ๋ํ์ง(SRID)์ ๋ํด ์์๋ณด์๋ค. ๊ทธ๋ ๋ค๋ฉด MySQL์ ์ด 2์ฐจ์์ ๋ํ์ง ์์ ๊ทธ๋ ค์ง ๋ณต์กํ ๋ฐ์ดํฐ๋ค์ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ๊น?
MySQL์ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ค์ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํด ์ธ ๊ฐ์ง ํฌ๋งท์ ํ์ฉํ๋ค.
- WKT(Well-Known Text)
๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋์ด ์ฝ์ ์ ์๋ ํ ์คํธ ํํ๋ก ํํํ OGC ํ์ค์ด๋ค. ํํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋๋ ํฌ๋งท์ด๋ค. - WKB(Well-Known Binary)
ํด๋น ํฌ๋งท์ ์์ ์ด์ง ํํ๋ก ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ๋ ํจ์จ์ ์ผ๋ก ๊ตํํ๊ธฐ ์ํ ํฌ๋งท์ด๋ค. 16์ง์ ๋ฐ์ดํธ ๋ฐฐ์ด๋ก ํํํ๋ฉฐ ์ด ๋ํ OGC ๊ตญ์ ํ์ค์ด๋ค. - Internal Geometry Storage
MySQL์ด ์ค์ ๋ก ๋์คํฌ์ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ ํฌ๋งท์ด๋ค. WKB ํฌ๋งท์ 4๋ฐ์ดํธ์ SRID ์ซ์๋ฅผ ์กฐํฉํ์ฌ ์ ์ฅํ๋ค.
์ฆ, ๊ฐ๋ฐ์๋ WKT๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ MySQL ์ฌ์ด์ ๋ฐ์ดํฐ ์ ๋ฌ์ ๋๋ผ์ด๋ฒ๊ฐ WKB๋ก ์ฒ๋ฆฌํ๋ฉฐ, MySQL์ ์ต์ข ์ ์ผ๋ก SRID + WKB ํํ์ Internal Geometry Storage๋ก ๋์คํฌ์ ์ ์ฅํ๋ค.
์ด๋ ๊ฒ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ๊ธฐ ์ํด์๋ ๊ณต๊ฐ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํด์ผ ํ๋ค. MySQL์ ์ํ์ ๊ณ์ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๊ณต๊ฐ ์ธ๋ฑ์ค๋ฅผ ๊ณ์ฐ ๋ฐ ์ฒ๋ฆฌํ๋ค. ๊ณต๊ฐ ์ธ๋ฑ์ค์ ๊ด๋ จํด์๋ ์ด๋ฏธ ์์ฑํด๋์๋ ๊ณผ๊ฑฐ ๊ธ์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค.
MongoDB์์์ ๊ณต๊ฐ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์ ํํค์น๊ธฐ
์์ MySQL์์๋ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ , ์ธ๋ฑ์ค๋ฅผ ๋ง๋๋์ง ์ดํด๋ณด์๋ค. ์ด๋ฒ์๋ ๋ฐ์ธ๊ถ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๊ณ ์๋ MongoDB๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ , ์ธ๋ฑ์ค๋ฅผ ๋ง๋๋์ง ์ดํด๋ณด์.
๊ธฐ๋ณธ์ ์ผ๋ก MongoDB๋ BSON์ด๋ผ๋ ๋ฐ์ดํฐ ํฌ๋งท์ผ๋ก ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ์ง๋ง, ๊ณต๊ฐ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ GeoJSON์ด๋ผ๋ ํํ๋ฅผ ์ด์ฉํ๊ณ ์๋ค. ์ด๋ OGC ํ์ค์ ์๋๊ณ ๊ฐ๋ฐฉํ ๊ณต๊ฐ ํ์ค ํ์์ผ๋ก JSON ํํ๋ก ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํฌ๋งท์ด๋ค.
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[127.0276, 37.4979], // [๊ฒฝ๋, ์๋]
[127.0280, 37.4985],
[127.0291, 37.5001]
]
},
"properties": {
"courseName": "๊ฐ๋จ์ญ 1km ์๋ณต ์ฝ์ค",
"difficulty": "Easy",
"distance": 1000
}
}
์ด๋ฌํ ํํ๋ก ์ ์ฅ๋๋๋ฐ, ์ด๊ฒ ํ๋์ ๋ฌ๋ ์ฝ์ค๋ฅผ ์๋ฏธํ๋ค. type์ ํตํด Feature, FeatureCollection, ๊ณต๊ฐ ๋ฐ์ดํฐ ํ์ ๊ณผ ๊ฐ์ ๊ฒ์ ๋ํ๋ผ ์ ์๊ณ geometry๋ฅผ ํตํด ์ค์ ์ ์ฅ๋๋ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ ์ ์๋ค. ๋ํ, ๊ณต๊ฐ ๋ฐ์ดํฐ์ ๋ํ ๋ถ๊ฐ ์ ๋ณด๋ฅผ properties์ ๋ด์ ์ ์๋ค.
ํ์ง๋ง MongoDB์์๋ GeoJSON์ Feature ๊ตฌ์กฐ ์ ์ฒด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๋ผ, geometry๋ ๋ณ๋ ํ๋๋ก, properties์ ๋ด์ฉ์ ์ผ๋ฐ ํ๋๋ก ๋ถ๋ฆฌํ์ฌ ๋ํ๋จผํธ ์์ ์ ์ฅํ๋ค. ๊ทธ๋์ ์ค์ ๋ก๋ ์๋์ ๊ฐ์ ํํ๋ก ์ ์ฅ๋๋ค.
{
"courseName": "๊ฐ๋จ์ญ 1km ์๋ณต ์ฝ์ค",
"difficulty": "Easy",
"distance": 1000,
"location": {
"type": "LineString",
"coordinates": [
[127.0276, 37.4979], // [๊ฒฝ๋, ์๋]
[127.0280, 37.4985],
[127.0291, 37.5001]
]
}
}
S2 Geometry
MongoDB์์๋ ๊ณต๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ํด์ ๊ตฌ๊ธ์์ ๋ง๋ S2 Geometry๋ฅผ ์ด์ฉํ๋ค. ๊ตฌ๋ฅผ 6๊ฐ์ ๋ฉด์ผ๋ก ๋๋์ด ๊ฐ ๋ฉด์ ์ฌ๊ท์ ์ผ๋ก 4๋ฑ๋ถํ์ฌ ์์ ์ (Cell) ๋จ์๋ก ์ง๊ตฌ๋ฅผ ๊ตฌ์ฑํ๋ค. ๋จ๊ณ๋ณ๋ก ์์๋ณด์.
1. ์ง๊ตฌ๋ฅผ ์ ์ก๋ฉด์ฒด๋ก ๊ฐ์ธ๊ธฐ

MySQL์ ๊ณต๊ฐ ์ธ๋ฑ์ค์ MBR์ฒ๋ผ ์ง๊ตฌ๋ฅผ ์ปค๋ค๋ ์ง์ก๋ฉด์ฒด ๋ชจ์์ MBR๋ก ๊ฐ์ผ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋ฉด์ผ๋ก ์ง๊ตฌ๋ฅผ ๋๋๋ค. ๊ฐ ๋ฉด์ ํ๋ฉด์ด๊ธฐ์ ๊ตฌ๋ฉด์ ํฌ์ํ๊ฒ ๋๋ฉด ์๊ณก์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ S2๋ ๋ด๋ถ์ ์ผ๋ก ๋ณด์ ํจ์๋ฅผ ํตํด ์ ํฌ๊ธฐ ํธ์ฐจ๊ฐ ์ต๋ 5.2๋ฐฐ ์ด๋ด๋ก ์ ์ง๋๋๋ก ํ๋ค.
2. ๊ณ์ธต์ ์ ๋ถํ
์ ์ก๋ฉด์ฒด๋ก ๊ฐ์ธ์ธ 6๊ฐ์ ๋ฉด์ ๋ค์ 4๊ฐ์ ์ฌ๊ฐํ ์ (Cell)๋ก ์ชผ๊ฐ์ง๋ค. ์ด ๊ณผ์ ์ ์ฌ๊ท์ ์ผ๋ก ๋ฐ๋ณต๋๋ฉฐ, MongoDB๊ฐ ์ฌ์ฉํ๋ S2 Geometry๋ ์ต๋ 30๋จ๊ณ๊น์ง ๋ถํ ํ ์ ์๋ค.

30 ๋ ๋ฒจ์ ๋ค๋ค๋ฅด๋ฉด ์ฝ 0.48cm^2 ๋งํผ ์์ ํฌ๊ธฐ์ ์ ์ด ๋ง๋ค์ด์ง๋ค.
3. ํ๋ฒ ๋ฅดํธ ๊ณก์
2์ฐจ์ ํ๋ฉด(์ ์ก๋ฉด์ฒด์ ๋ฉด) ์์ ์ชผ๊ฐ์ง ์๋ง์ ์ ์กฐ๊ฐ๋ค์ ์ด๋ป๊ฒ ์ปดํจํฐ๊ฐ ์ดํดํ๊ธฐ ์ฌ์ด ์์๋ก ์ ๋ ฌํ ๊น? ์ฌ๊ธฐ์ ํ๋ฒ ๋ฅดํธ ๊ณก์ ์ด๋ผ๋ ๊ณต๊ฐ ์ฑ์ ๊ณก์ ์ด ์ฌ์ฉ๋๋ค.

ํ๋ฒ ๋ฅดํธ ๊ณก์ ์ ๋ ๋ฒจ 30์ ํด๋นํ๋ ์ ๋ค์ ๋ํด์ ํ๋ฒ ๋ฅดํธ ๊ณก์ ์ ๋ง๋ ๋ค. ์์์ ๋ ๋ฒจ์ ์ ์ ํด๋น ๊ณก์ ์ ๋ฒ์๋ก ํํํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ณก์ ๊ฒฝ๋ก๋ ํ๋ํ ๊ตฌ์กฐ๋ก ์์ฑํ๋ค. ์ด ๊ณผ์ ์์ ๊ฐ ์ ์ ๊ณ ์ ํ 64๋นํธ Cell ID๋ฅผ ๋ถ์ฌ๋ฐ์ผ๋ฉฐ, ์ด ID๋ฅผ ํตํด ์ ์ ์์น์ ๋ ๋ฒจ์ ๋ชจ๋ ์๋ณํ ์ ์๋ค. ์ ID๋ ๋ค์์ฒ๋ผ 64๋นํธ ์ ์ ํ๋๋ก ํํ๋๋ค.
[ 3๋นํธ: ๋ฉด(0-5) ][ ๋๋จธ์ง: ์์น ][ 1: ๋ ๋ฒจ ํ์ ][ 0์ผ๋ก ํจ๋ฉ ]
- ์์ 3๋นํธ๋ ์ ์ก๋ฉด์ฒด์ ์ด๋ ๋ฉด์ธ์ง ํํํ๋ค.
- ์ค๊ฐ ๋นํธ๋ ์๋ ์ค๋ช ํ ํ๋ฒ ๋ฅดํธ ๊ณก์ ์์ ์์น์ด๋ค.
- 1๋นํธ๋ก ํ์ฌ ์ ์ ๋ ๋ฒจ ๊ฒฝ๊ณ๋ฅผ ํ์ํ๋ค. -> 1์ ์์น๋ก ๋ ๋ฒจ์ ์ ์ ์๋ค.
ํ๋ฒ ๋ฅดํธ ๊ณก์ ์ ํต์ฌ ํน์ฑ์ ๊ณต๊ฐ์ ์ผ๋ก ๊ฐ๊น์ด ์ ์ผ์๋ก Cell ID๋ ๊ฐ๊น๋ค๋ ๊ฒ์ด๋ค. ๋๋ถ์ ํน์ ์์ญ์ ๊ฒ์ํ ๋ ํด๋น ์์ญ์ ์ปค๋ฒํ๋ ์ ๋ค์ Cell ID๊ฐ B-Tree ์์์ ์ฐ์๋ ๋ฒ์์ ๋ชฐ๋ ค์์ด, ๋ฒ์ ํ์ ํ ๋ฒ์ผ๋ก ํจ์จ์ ์ผ๋ก ์ฐพ์ ์ ์๋ค. ์ฆ, R-Tree๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ค.
๊ทธ๋์ MongoDB์ 2dsphere ์ธ๋ฑ์ค๋ ๋ํ์ ์ ID ์งํฉ์ผ๋ก ๋ณํํ๊ณ B-Tree์ ์ ์ฅํ๋ค. ํ์ ์์๋ ๊ฒ์ ์์ญ์ ์ ID ๋ฒ์์ ๋งค์นญ๋๋ ๋ํ๋จผํธ๋ฅผ ์ฐพ๋๋ค.
์์ฝํ๋ฉด, ์ง๊ตฌ๋ฅผ ์ ์ก๋ฉด์ฒด๋ก ๊ฐ์ธ๊ณ (1๋จ๊ณ), ์ด๋ฅผ ์์ ์ ์ก๋ฉด์ฒด๋ก ๊ณ์ ์ชผ๊ฐ์ด(2๋จ๊ณ), ๊ผฌ๋ถ๊ผฌ๋ถํ ์ ์ผ๋ก ์์๋ฅผ ๋งค๊ฒจ(3๋จ๊ณ) ๊ฐ ์์น์ ๋ฒํธํ(Cell ID)๋ฅผ ๋ถ์ฌ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.
์ ๋ฆฌํ๋ฉด
MySQL์ R-Tree๋ MBR์ด๋ผ๋ ์ง์ฌ๊ฐํ์ผ๋ก ๋ํ์ ๊ทผ์ฌํ๊ธฐ ๋๋ฌธ์, ์ธ๋ฑ์ค ํ์ ํ ์ค์ ๋ํ์ ํด๋นํ์ง ์๋ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๊ฑธ๋ฌ๋ด๋ 2์ฐจ ํํฐ๋ง์ด ํ์ํ๋ค. ๋ฐ๋ฉด MongoDB์ S2 Geometry๋ ์ฌ๋ฌ ์ ์ ์กฐํฉ์ผ๋ก ๋ํ์ ๋ณด๋ค ์ ๋ฐํ๊ฒ ๊ทผ์ฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ง ๋ฐ์ดํฐ๊ฐ ์ค๊ณ , Cell ID ๊ธฐ๋ฐ B-Tree ๋ฒ์ ํ์์ผ๋ก ํจ์จ์ ์ธ ์กฐํ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ฐ์ธ๊ถ ํ๋ก์ ํธ์์ MySQL์ ๊ณต๊ฐ ์ฟผ๋ฆฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๊ฒช์ ํ MongoDB๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋๋ฐ, ์ด ๊ธ์ ์ ๋ฆฌํ๋ฉฐ ๊ทธ ์ฑ๋ฅ ์ฐจ์ด๊ฐ ๋จ์ํ DB ์ ํ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ธ๋ฑ์ค์ ๋ํ ๊ทผ์ฌ ๋ฐฉ์ ์ฐจ์ด์์ ๋น๋กฏ๋ ๊ฒ์์ ์ดํดํ ์ ์์๋ค.
'๊ฐ๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Node.js์ ์ด๋ฒคํธ ๋ฃจํ (0) | 2026.05.19 |
|---|---|
| MySQL์์ ACID๋ฅผ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ (2) | 2026.05.05 |
| RPC(Remote Procedure Call)๋ ๋ฌด์์ผ๊น? (0) | 2026.03.20 |
| Fielding์ด ๋งํ๋ ์ง์ง REST API (0) | 2026.03.20 |
| 1๊ฐ์ ์ฌ๊ณ ๊ฐ ์์ ๋ ๋์์ 100๋ช ์ ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ฉด? (2) | 2026.03.17 |