현재 데이터 세트가 있는데, JSON 파일에 저장되어 있습니다. 여기에는 약 40,000 개의 서로 다른 위치 정보가 들어 있습니다. 다음과 같이 보입니다."인접한"결과 검색
[
{"title": "Place 1", "loc": {"x": "00.000", "y": "00.00000"}},
{"title": "Place 2", "loc": {"x": "00.000", "y": "00.00000"}},
]
장소의 loc
은 좌표계입니다.
이 데이터에 대한 쿼리를 실행할 수 있기를 원합니다. 주어진 사용자 입력에 대해 loc
을 입력하면 n
에 가장 가까운 지역 정보를 얻을 수 있습니다.
또는 다른 말로 나는이 작동하도록 일부 기능 f
을 쓰고 싶습니다
def f(loc, n): ...
f({"x": "5", "y": "5"}, 3) #=> [{"title": "Place 1", "distance": 7.073}, {"title": "Place 2": "distance": 7.073}, {"title": "Place 3", "distance": 7.073}]
모든 {x: 0, y: 0}
의 장소 1, 2, 3이있는 경우.
이런 문제를 해결하는 표준 방법이 무엇인지 전혀 알지 못합니다. 제공된 loc
은 임의적이기 때문에 사전 계산 된 거리에 대한 인덱스가있는 SQL DB를 사용하면 작동하지 않습니다. 전체 데이터베이스를 실행하고 모든 것에 대한 거리를 계산하는 것은 너무 비효율적이며 너무 느립니다. (< 30ms 응답 시간이 필요합니다.)
의미가있는 유일한 해결책은 가까운 위치의 "버켓"을 만드는 것입니다 (서로 r
내). 그런 다음 컴퓨터에 사용자가 지정한 loc 옵션을 먼저 좁힐 수있는 양동이가 있습니다. 하지만 나는 데이터베이스를 전혀 사용하지 않는 것과 비슷한 솔루션을 만들어야한다고 생각합니다. 보다 효율적인/산업 표준 접근 방식이 있어야합니다. 하나 있습니까?
Postgres (PostGIS 확장 기능 포함)는 이러한 유형의 쿼리를 매우 잘 지원합니다. –