Design Proximity Service
์๊ตฌ์ฌํญ
์ฃผ์ด์ง ๋ฐ๊ฒฝ ๋ด ๋ ธ๋(์ฌ์ ์ฅ)์ ์ฐพ๋ ์๋น์ค
์ต๋ ํ์ฉ ๋ฐ๊ฒฝ 20km(์ ํ์ ๋ฐ๋ผ ๊ทธ ์๋๋ก ์ค์ ๊ฐ๋ฅ, 0.5, 1, 2, 5, 20km)
๋ ธ๋(์ฌ์ ์) ์ ๋ณด๋ ์ฌ์ฉ์(์ฌ์ ์ฅ ์์ ์ฃผ)๊ฐ ์ถ๊ฐ/์ญ์ /์์ ๊ฐ๋ฅ
๋ณ๊ฒฝ๋๋ ์ ๋ณด๋ ๋ค์๋ ๋ฐ์
๊ธฐ๋ฅ ๋ชฉ๋ก
์์ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑ ์ํค๊ธฐ ์ํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ๋ค์๊ณผ ๊ฐ๋ค.
์ฌ์ฉ์ ์์ฒด์ ๊ฒ์ ๋ฐ๊ฒฝ ์ ๋ณด์ ๋งค์น๋๋ ๋ ธ๋ ๋ฆฌ์คํธ ์กฐํ
์ฌ์ฉ์๊ฐ ๋ ธ๋ ์ถ๊ฐ/์ญ์ /์์ ์ ํด๋น ์ ๋ณด๋ฅผ ์ ์ฅ
ํด๋น ๋ ธ๋์ ์์ธ ์ ๋ณด ์กฐํ
๋ํ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง์ํ๊ธฐ ์ํด ์๋์ ์ฌํญ๋ค์ ์ถ๊ฐ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํ๋ค.
๋ฎ์ ์๋ต ์ง์ฐ: ์ฃผ๋ณ ๋ ธ๋๋ฅผ ๋น ๋ฅด๊ฒ ์กฐํํ ์ ์์ด์ผ ํจ
๊ณ ๊ฐ์ฉ์ฑ ๋ฐ ๊ท๋ชจ ํ์ฅ์ฑ: ํธ๋ํฝ์ด ๊ธ์ฆํด๋ ์๋น์ค๊ฐ ์ค๋จ๋์ง ์์์ผ ํจ
๊ฐ๋ต์ ๊ท๋ชจ ์ถ์
DAU 1์ต ๋ช , ๋ฑ๋ก๋ ๋ ธ๋ ์ 2์ต ๊ฐ, ํ๋ฃจ 5ํ ๊ฒ์์ด๋ผ๊ณ ๊ฐ์ ํ์์ ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท๋ชจ๋ฅผ ๊ฐ์ ํ ์ ์๋ค.
1์ต * 5ํ /86,400์ด(1์ผ) = ์ฝ 5800QPS
API ์ค๊ณ
GET /search/nearby
GET /search/nearby
ํน์ ๊ฒ์ ๊ธฐ์ค์ ๋ง๋ ๋ ธ๋ ๋ชฉ๋ก์ ๋ฐํํ๋ API, ์์ฒญ ๋งค๊ฐ๋ณ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
์์ฒญ ๋งค๊ฐ ๋ณ์
latitude
: ์๋longitude
: ๊ฒฝ๋radius
: ๊ฒ์ ๋ฐ๊ฒฝ
๋ฐํ ๊ฐ
total
: ๊ฒ์๋ ๋ ธ๋ ์nodes
: ๊ฒ์๋ ๋ ธ๋ ๋ชฉ๋ก(๋๋ฉ์ธ์ ๋ฐ๋ผ ์ ์ ํ ์ด๋ฆ ์ฌ์ฉ)
๋ ธ๋์ ์์ธ ์ ๋ณด ์กฐํ ๋ฐ ์ถ๊ฐ/์ญ์ /์์ ์ ๋ค์๊ณผ ๊ฐ์ API๋ก ๊ตฌํํ ์ ์๋ค.
๋
ธ๋ ๊ด๋ จ API
GET /nodes/:id
: ๋ ธ๋ ์์ธ ์ ๋ณด ์กฐํPOST /nodes
: ๋ ธ๋ ์ถ๊ฐPUT /nodes/:id
: ๋ ธ๋ ์์ DELETE /nodes/:id
: ๋ ธ๋ ์ญ์
๋ฐ์ดํฐ ๋ชจ๋ธ
๋๋ถ๋ถ์ ๊ทผ์ ์ฑ ์๋น์ค๋ ๋ค์ ๊ธฐ๋ฅ์ ์ด์ฉ ๋น๋๊ฐ ๊ต์ฅํ ๋๋ค.
์ฃผ๋ณ ๋ ธ๋ ๊ฒ์
๋ ธ๋ ์์ธ ์ ๋ณด ์กฐํ
์ฝ๊ธฐ ์ฐ์ฐ์ด ๋ง์ด ์ํ๋๋ ๋ฐ๋ฉด, ๋ ธ๋๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์์ ๋๋ ์ฐ๊ธฐ ์ฐ์ฐ์ ๋น๋๋ ๋ฎ๊ธฐ ๋๋ฌธ์ MySQL๊ณผ ๊ฐ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ํฉํ ์ ์๋ค.
์ํคํ
์ฒ
์์น ๊ธฐ๋ฐ ์๋น์ค์ ๊ณ๋ต์ ์ค๊ณ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ ์ ์๋ค.
๊ฐ ์ปดํฌ๋ํธ๋ค์ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ์ํํ๋ค.
๋ก๋๋ฐธ๋ฐ์: ์ ์ ํธ๋ํฝ์ ์๋์ผ๋ก ์๋ง๋ ์๋น์ค๋ก ์ ๋ฌ
์์น ๊ธฐ๋ฐ ์๋น์ค(Location-Based Service): ์์น์ ๋ฐ๊ฒฝ ์ ๋ณด๋ฅผ ์ด์ฉํด ์ฃผ๋ณ ๋ ธ๋ ๊ฒ์
์ฐ๊ธฐ ์์ฒญ์ด ์๋ ์ฝ๊ธฐ ์์ฒญ๋ง ์ฒ๋ฆฌํ๋ ์๋น์ค
๋์ QPS
๋ฌด์ํ ์๋น์ค๋ก ์ํ์ ๊ท๋ชจ ํ์ฅ ์ฉ์ด
๋ ธ๋ ์๋น์ค: ๋ ธ๋ ์ถ๊ฐ/์ญ์ /์์ ์ ์ฒ๋ฆฌํ๋ ์๋น์ค
์๋์ ์ผ๋ก ๋ฎ์ QPS
๋ ธ๋ ์์ธ ์กฐํ๊ฐ ๋น๋ฒํ ๋ฐ์ํ๋ ์๊ฐ๋์ QPS๊ฐ ๋์์ง ์ ์์
๋ฌด์ํ ์๋น์ค๋ก ์ํ์ ๊ท๋ชจ ํ์ฅ ์ฉ์ด
๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ: ์ฃผ-๋ถ(primary-secondary) ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ
์ฃผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ธฐ ์์ฒญ ์ฒ๋ฆฌ / ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฝ๊ธฐ ์์ฒญ ์ฒ๋ฆฌ
๋ณต์ ์ ์๊ฐ์ด ์์๋์ง๋ง, ๋๋ถ๋ถ์ ์๋น์ค๋ ์ค์๊ฐ์ผ๋ก ๋ฐ์๋์ง ์์๋ ๋ฌด๋ฐฉ
์ฃผ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ ๊ฐ์ ์๋ฒ(LBS / ๋ ธ๋ ์๋น์ค)๊ฐ ๋ฌด์ํ ์๋น์ค๋ก ์ค๊ณ๋์ด ์๊ธฐ ๋๋ฌธ์ ํธ๋ํฝ์ ๋ฐ๋ฅธ ์ํ์ ๊ท๋ชจ ํ์ฅ์ด ๊ฐ๋ฅํ๋ค.
์ฃผ๋ณ ๋
ธ๋ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ
๋ง์ ํ์ฌ๊ฐ Redis Geohash๋ PostGIS ํ์ฅ ์ค์นํ Postgres ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฉํ๊ฒ ๋๋ค. ๋๋ฌธ์ ์ง์ ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ํ์๋ ์์ง๋ง, ๋๋ต์ ์ธ ์์น ์์ธ์ ์ํ ์๊ณ ๋ฆฌ์ฆ๋ค์ ์์๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1. 2์ฐจ์ ๊ฒ์
์ฃผ์ด์ง ๋ฐ๊ฒฝ ์์ ์๋ ๋ ธ๋๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ์ง๊ด์ ์ด์ง๋ง ๋จ์ํ๊ณ ๋๋ฆฌ๋ค.
์กฐํํ๊ธฐ ์ํด์ ์ ์ฟผ๋ฆฌ๊ฐ ์ํ๋์ด์ผ ํ๋๋ฐ, ํ
์ด๋ธ ์ ๋ถ๋ฅผ ์ฝ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ๋ค.
latitute
์ longitude
์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ๋๋ผ๋ ๋ ๊ฐ์ ๊ต์งํฉ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ๋ค.
๊ฒฐ๊ตญ์ ํ ์ฐจ์์ ๊ฒ์ ์๋๋ง ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ 2์ฐจ์์์์ ๊ฒ์์์๋ ํ๊ณ๊ฐ ์๋ค.
2. ๊ท ๋ฑ ๊ฒฉ์
์ง๋๋ฅผ ๋จ์ํ ์์ ๊ฒฉ์ ๋๋ ๊ตฌํ์ผ๋ก ๋๋์ด ์ ๊ทผํ๋ ๋ฐฉ์์ผ๋ก, ๊ฐ ๊ตฌํ์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํด ๋๊ณ ๊ฒ์ํ ์ ์๋ค. ํ์ง๋ง ์ด ๋ฐฉ๋ฒ ๋ํ ๋ ธ๋๋ค์ ๋ถํฌ๊ฐ ๊ท ๋ฑํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ด์ง ์๋ค.
3. ์ง์คํด์
2์ฐจ์์ ์๋ ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ 1์ฐจ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ์ง๋๋ฅผ ์์ ๊ฒฉ์๋ก ๋ถํ ํด๊ฐ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ ๊ฐ์ ๋นํธ๋ก ๋๋์์ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋๋ ์ ์๊ฒ ๋๋ค.
์ด๊ฑธ ๋ค์ ์ฌ๊ท์ ์ผ๋ก ๋๋์ด ๋๊ฐ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋๋ ์ ์๋ค.
์ด ์ ์ฐจ๋ฅผ ์ํ๋ ์ ๋ฐ๋(precision)๋ฅผ ์ป์ ๋ ๊น์ง ๋ฐ๋ณตํ๋ฉด, ๋์ด๋๋ ๋นํธ ์ ๋งํผ ๋ ์ ๋ฐํ ์์น ์ ๋ณด๋ฅผ ์ป์ ์ ์๊ฒ ๋๋ค.
1
5,009.4km * 4,992.6km(์ง๊ตฌ ์ ์ฒด)
2
1,252.3km * 624.1km
3
156.5km * 156km
4
39.1km * 19.5km
5
4.9km * 4.9km
6
1.2km * 609.4m
7
152.9m * 152.4m
8
38.2m * 19m
9
4.8m * 4.8m
10
1.2m * 59.5cm
11
14.9cm * 14.9cm
12
3.7cm * 1.9cm
์ด๋ ๊ฒ ๋์จ ์ง์คํด์๋ ํต์์ ์ผ๋ก base32 ํํ๋ฒ์ ์ฌ์ฉํ๋ค.
๊ธธ์ด 6์ ์ง์คํด์:
1001 11010 01001 10001 11111 11110
->9q9hvu
์ง์ ํ ๋ฐ๊ฒฝ์ผ๋ก ๊ทธ๋ฆฐ ์์ ๋ฎ๋ ์ต์ ํฌ๊ธฐ ๊ฒฉ์๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ต์ ์ ๋ฐ๋๋ผ๊ณ ๋ณผ ์ ์๋๋ฐ, ์๊ตฌ ์ฌํญ์ ๋ฐ๊ฒฝ๊ณผ ์ง์คํด์ ๊ด๊ณ๋ฅผ ํ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
0.5km
6
1km
5
2km
5
5km
4
20km
4
์ด์ ๊ฐ์ด ์ง์คํด์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ธ๋ ๊ฒ์์ ํจ์จ์ ์ผ๋ก ํ ์ ์๊ฒ ๋๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ธ์ ๊ฒฉ์์ ํจ์จ์ ์ธ ํ์: ์ง์คํด์๋ ๊ณต๊ฐ์ ๊ณ์ธต์ ์ผ๋ก ๋ถํ ํ๊ธฐ ๋๋ฌธ์, ํน์ ์์น์ ์ธ์ ๊ฒฉ์๋ฅผ ์ฝ๊ฒ ๊ณ์ฐ ๊ฐ๋ฅ
๋ฌธ์์ด ๋น๊ต๋ฅผ ํตํ ๊ฒ์ ์๋ ํฅ์: ์ง์คํด์๋ base 32 ๋ฌธ์์ด๋ก ํํ๋ ์ ์์ด ๋ฌธ์์ด ๋น๊ต๋ฅผ ํตํด ๋น ๋ฅด๊ฒ ๊ฒ์ ๊ฐ๋ฅ
์๋ฅผ๋ค์ด ํ์ฌ ์์น์ ์ง์คํด์ ์ฝ๋๊ฐ 9q9hv
์ธ ๊ฒฝ์ฐ ํด๋น ์ง์คํด์ ํน์ ์ธ์ ์ง์คํด์ ์ฝ๋๋ฅผ ์ฌ์ฉํด ๋
ธ๋๋ฅผ ๊ฒ์ํ ์ ์๊ฒ ๋๋ค.
ํ์ง๋ง ์ธ์ ํ ๋ชจ๋ ๊ฒฉ์์ ์ง์คํด์ ์ฝ๋๊ฐ ๊ณตํต ์ ๋์ด๋ฅผ ๊ฐ์ง์ง ์๋ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ํด๊ฒฐ ๋ฐฉ์์ด ํ์ํ๋ค.
4. ์ฟผ๋ํธ๋ฆฌ
๊ฒฉ์์ ๋ด์ฉ์ด ํน์ ๊ธฐ์ค์ ๋ง์กฑํ ๋๊น์ง 2์ฐจ์ ๊ณต๊ฐ์ ์ฌ๊ท์ ์ผ๋ก ์ฌ๋ถ๋ฉด ๋ถํ ํ ๋ ์ฌ์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ๋ค. ๋ฉ๋ชจ๋ฆฌ ์์ ๋์ด๋ ์๋ฃ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์๋ฒ๊ฐ ์์ํ๋ ์์ ์ LBS ์๋ฒ ์์ ๊ตฌ์ถ๋๋ค.
200๋ฐฑ๋ง๊ฐ์ ๋ ธ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ ๋, ์๋์ ๊ฐ์ด ๊ณ์ํด์ ๋ถํ ํด ๋๊ฐ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค.
์ด๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ด ๊ณผ์ ์ ์์ฌ ์ฝ๋๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ค์ ๋ก ์ฟผ๋ํธ๋ฆฌ๋ฅผ ์ด์ฉํด ์ฃผ๋ณ ๋ ธ๋๋ฅผ ๊ฒ์ํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
์๋ฒ ์คํ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฟผ๋ํธ๋ฆฌ ์ธ๋ฑ์ค ๊ตฌ์ถ
๋ฃจํธ ๋ ธ๋๋ถํฐ ์์ํด ์กฐํ ์์
ํ์ฌ ๋ ธ๋์ ์์ ๋ ธ๋ ์ค ๊ฒ์ ๋ฐ๊ฒฝ์ ํฌํจ๋๋ ๋ ธ๋ ํ์ธ ํ ์ฌ๊ท์ ์ผ๋ก ํ์
๋ง๋จ ๋ ธ๋์ ๋๋ฌํ๋ฉด ํด๋น ๋ ธ๋์ ๋ฆฌ์คํธ ๋ฐํ
๋ง๋จ ๋ ธ๋์ 100๊ฐ ์ดํ์ ๋ ธ๋๋ฅผ ์ ์ฅํ ๋ ๊น์ง ๊ณ์ํด์ ๋ถํ ํ๋ค๊ณ ํ๊ฒ๋๋ฉด, ๋ฉ๋ชจ๋ฆฌ๋ ์ฝ 2GB ์ ๋, ๊ตฌ์ถ์๋ ๋ช ๋ถ ์ ๋ ์์๋๋ค. ๋ฉ๋ชจ๋ฆฌ์๋ ํฐ ๋ฌธ์ ๊ฐ ์์ ์ ์์ผ๋, ๊ตฌ์ถ์๋ ์๊ฐ์ด ์ด๋์ ๋ ์์๋๊ธฐ ๋๋ฌธ์ ๋์์ ๋ง์ ์๋ฒ ๋ฐฐํฌํ์ฌ ํธ๋ํฝ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ ์ผ์ด ์๋๋ก ์ฃผ์ํด์ผ ํ๋ค.
๋น๊ต
1๋ฒ์ 2์ฐจ์ ๊ฒ์๊ณผ 2๋ฒ์ ๊ท ๋ฑ ๊ฒฉ์๋ ์ค์ ๋ก ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ์ง ์์ ์ค์ ๋ก ๋ง์ ์๋น์ค๋ค์ด ๋๋จธ์ง ์ง์คํด์๋ ์ฟผ๋ํธ๋ฆฌ ๋ฐฉ์(ํน์ ํผ์ฉ)์ ์ฌ์ฉํ๊ฒ ๋๋ค. ์ง์คํด์์ ์ฟผ๋ํธ๋ฆฌ๋ฅผ ๋น๊ตํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ง์คํด์
๊ตฌํ๊ณผ ์ฌ์ฉ์ด ์ฌ์
์ง์ ๋ฐ๊ฒฝ ์ด๋ด ๋ ธ๋ ๊ฒ์ ์ฉ์ด
์ ๋ฐ๋๋ฅผ ๊ณ ์ ํ๋ฉด ๊ฒฉ์ ํฌ๊ธฐ๋ ๊ณ ์ ๋์ด ๋์ ์ผ๋ก ๊ฒฉ์ ํฌ๊ธฐ ์กฐ์ ๋ถ๊ฐ๋ฅ(๊ฐ๋ฅํ์ง๋ง ๋ณต์กํ ๊ตฌํ ํ์)
์์ธ ๊ฐฑ์ ์ฉ์ด(๋ ธ๋ ์ญ์ ์ ์ด ํ๋๋ง ์ ๊ฑฐํ๋ฉด ๋จ)
์ฟผ๋ ํธ๋ฆฌ
๊ตฌํ์ด ๋ณต์กํ๊ณ ํธ๋ฆฌ ๊ตฌ์ถ ์๊ฐ์ด ํ์
๊ฐ์ฅ ๊ฐ๊น์ด ๋ ธ๋ ๊ฒ์ ์ฉ์ด
ํธ๋ฆฌ ํํ์ ์๋ฃ๊ตฌ์กฐ๊ธฐ ๋๋ฌธ์ ์ญ์ ์ ๋ณต์กํ ๊ตฌํ ํ์
์์ธ ์ค๊ณ
์ง๋ฆฌ ์ ๋ณด ์์ธ ํ
์ด๋ธ ๊ตฌ์ถ ๋ฐฉ๋ฒ
๋ ธ๋ ์์ธ ์ ๋ณด ํ ์ด๋ธ: ๋ฐ์ดํฐ๋ฅผ ํ ์๋ฒ์ ๋ด์ ์ ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ค๋ฉ์ ๊ณ ๋ คํด๋ณผ ์ ์๋ค. ์ง๋ฆฌ ์ ๋ณด ์์ธ ํ ์ด๋ธ(์ง์คํด์ ์ด๋ค๊ณ ๊ฐ์ )์ ๊ฒฝ์ฐ ์กฐ๊ธ ๋ ๋ณต์กํ๋ฐ, ์ฐ์ ์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌ์ถ ๊ฐ๋ฅํ๋ค.
ํด๋น ์ง์ค ํด์์ ์ฐ๊ฒฐ๋๋ ์ฌ์ ์ฅ ID๋ฅผ ๋ฐฐ์ด๋ก ๊ด๋ฆฌ
๋ ธ๋ ID์ ์ง์คํด์๋ฅผ ๊ฐ๊ฐ ์ ์ฅ
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ ๊ถ์ฅํ๋๋ฐ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฐฐ์ด๋ก ๊ด๋ฆฌ๋๋ ๊ฒฝ์ฐ ๋ ธ๋ ์ ๋ณด ๊ฐฑ์ ์ ๋ฐฐ์ด์ ์ฝ์ ํ ๊ฐฑ์ ํ ๋ ธ๋ ID๋ฅผ ์ฐพ๋ ๋ณ๋์ ๊ณผ์ ํ์
๋ ธ๋ ID์ ์ง์คํด์๋ฅผ ์ ์ฅํ๋ฉด ์ฝ๊ฒ ์กฐํํ๊ณ ์ ๋ณด๋ฅผ ์ถ๊ฐ/์์ /์ญ์ ๊ฐ๋ฅ
์ง๋ฆฌ ์ ๋ณด ์์ธ ํ
์ด๋ธ ๊ท๋ชจ ํ์ฅ์ฑ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ๋ถํ ๋ถ์ฐ์๋ ์ค๋ฉ๊ณผ ์ฌ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ์ง์คํด์ ํ ์ด๋ธ์ ์ค๋ฉ์ด ๊น๋ค๋กญ๊ธฐ ๋๋ฌธ์ ์ฌ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฐ๋ ์ฝ๊ณ ๊ด๋ฆฌ๊ฐ ๊ฐํธํ๋ค.
์ต์ข
๋์ ํ๋ฆ
์ง์คํด์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๊ณ๋์๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ฌ์ฉ์๊ฐ ์ฃผ๋ณ ๋ ธ๋๋ฅผ ๊ฒ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
์ฌ์ฉ์๊ฐ ๋ก๋๋ฐธ๋ฐ์์ ์ฃผ๋ณ ๋ ธ๋ ๊ฒ์ ์์ฒญ
๋ก๋๋ฐธ๋ฐ์๋ LBS ์๋ฒ์ ์์ฒญ ์ ๋ฌ
์ฃผ์ด์ง ์ฌ์ฉ์ ์์น์ ๋ฐ๊ฒฝ ์ ๋ณด๋ฅผ ์ด์ฉํด ์ง์คํด์ ๊ธธ์ด ๊ณ์ฐ(500m์ธ ๊ฒฝ์ฐ ๊ธธ์ด๋ 6)
์ธ์ ํ ์ง์คํด์๋ฅผ ๊ณ์ฐํ ๋ค List์ ์ ์ฅ(
listOfGeohashes= [9q9hvu, 9q9hvv, 9q9hvs ...]
)ํด๋น ๋ฆฌ์คํธ์ ์๋ ์ง์คํด์ ๊ฐ๊ฐ์ ๋ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค(ํน์ ์บ์)์ ์กฐํ ์์ฒญ
์กฐํ๋ ๋ ธ๋ ID๋ค์ ํตํด ๋ ธ๋ ์์ธ ์ ๋ณด ์กฐํ
ํ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ๊ฐ๊ณต(ํด๋น ๋ ธ๋ ์ ๋ณด, ๊ฑฐ๋ฆฌ ๊ณ์ฐ) ํ ์ฌ์ฉ์์๊ฒ ๋ฐํ
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?