2011-12-27 3 views
6

지형 공간 인덱싱이 작동하는 방법을 아는 사람은 누구나 가장 가까운 포인트를 계산하는 알고리즘을 의미합니까?mongodb에서 지형 공간 인덱싱 메커니즘 내에서

SQL에서

우리는이 같은 것들을 할 수 있습니다
SELECT id, (x-a)*(x-a)+(y-b)*(y-b) as distance FROM table1 ORDER by distance ASC
물론이 MongoDB를의 지리 공간 색인에 비해 충분히 효율적이지 않습니다,하지만 어떻게 계산하고 분류 MongoDB를합니까?

미리 감사드립니다.

답변

4

mongodb geospatial의 심장은 Geohashes입니다. Geohash는

격자 모양의 버킷으로 공간을 세분화하는 계층 적 공간 데이터 구조입니다.

mongo에서 geohash 구현에 대한 적절한 링크를 찾을 수 없지만,이 thread은 통찰력을 줄 수 있습니다. 10gen site에서

+1

고맙습니다! 이것은 많은 도움이됩니다. Geohashes에 대해 들어 본 적이 없으므로 먼저 google에 대해 알아야 할 것 같습니다 ~~ – adamsmith

2

:

현재 구현 표준 MongoDB의 B-나무 꼭대기 지리적 해시 코드를 인코딩합니다. $ 근접 쿼리의 결과는 정확합니다. 이 인코딩을 사용하는 한도 인 은 빠르지 만 접두사 조회가 특히 비트 플립 영역 주변에서 정확한 결과를 제공하지 않는다는 것입니다. MongoDB는 초기 접두사 스캔 후 grid-neighbor 검색을 수행하여 임의의 straggler 포인트를 까지 선택하여 이것을 으로 해결합니다. 이렇게하면 일반적으로 올바른 결과를 제공하면서 성능이 매우 높게 유지됩니다.

+0

C 소스 코드의 구현에 대한 자세한 설명은 오픈 소스이며 다운로드 할 수 있습니다 (다른 컴퓨터에 소스 코드가 있음). 하지만 그것은 z-order-b-tree라고 생각합니다. 최종 결과는 기본적으로 쿼드 키 알고리즘입니다.) – Jordan

관련 문제