자기위치로부터 가까운 샵순으로 나열

이미 많이 쓰이고 있는 자기 현재위치로부터 가까운 순대로 모텔이나 샵을 나열하는것은 어떻게 하는건가요??

분명 전국에 샵이나 상가가 10만개 넘게 존재하는데 이거를 계산에 다 포함시키면 시간이 너무 오래걸릴 것 같고…

어떤 과정을 통해서 그렇게 단시간내에 자기한테 가까운거리대로 표시할 수 있는지 궁금합니다.

현재 카카오에서 비슷한 API를 제공하고 있지만,
그 동작 원리를 알고 계시고 싶어하시는 것 같군요.

지금이야 말로 효율적인 검색 알고리즘이 필요한 시점입니다.

보통 이런건 클라이언트에서 하지 않습니다.
서버 프로그래밍 혹은 DB - 쿼리로 해결하죠.

그러나 데이터가 무지하게 많으면
서버측에서도 DB에서 모든 데이터를 긁어와
현재 위치와 비교 해야 하는데
그러면 메모리며 CPU며 오버헤드가 심하고 시간도 오래 걸릴테니… 문제가 됩니다.

결국 샵 잘 찾아주는 예쁜 DB를 써야겠죠. 공간 DB가 그렇습니다.
원래 DB라는 것 자체가 하나의 알고리즘 구조체인데 공간 DB는 공간 처리에 특화된 형태로 데이터를 저장하기 때문에 위치 기반 검색에 좋은 성능을 보여줍니다.
자기 위치와 원하는 카테고리, ordering 그리고 원하는 갯수를 쿼리로 날리면 공간 DB는 효율적으로 찾아주죠.
물론 공간 DB가 은총알은 아닙니다. 적절한 방법은 이것저것 많이 있을 수 있어요. 데이터 규모에 따라, 물리적인 컴퓨팅 파워를 얼마나 쓸수 있는지에 따라 타협할 여지도 많고요.

일반적으로 대부분의 대용량 데이터 처리는 이렇게 적합한 알고리즘을 쓰거나 그걸 쓰는 솔루션으로 해결 하시는게 바람직합니다.

3개의 좋아요