2013-05-30 2 views
1

저는 웹 서비스를 파견하는 서비스 차량 개발자입니다. SQL 서버를 사용하여 .Net 4+, MVC4로 작성되었습니다.지형 공간 계산을 캐시하거나 즉석에서 계산 하시겠습니까?

지리 데이터 유형으로 데이터베이스에 2000 개 이상의 위치가 저장되어 있습니다. 위치 A에서 위치 B로 자원을 전송한다고 가정하면, 드라이브 시간/거리 등은 한 지점에 표시되어야합니다. SQL Server의 STDistance로 거리를 계산하면 "까마귀처럼"거리 만 표시됩니다. 따라서 시스템은 bing, Google 또는 ESRI와 같은 지리적 공간 서비스를 수행하고 실제 운전 시간 또는 제안 된 경로를 얻어야합니다. 문제는 이것이 핵심 기능이며 전혀 발생하지 않는다는 것입니다.

미리 계산 된 거리 또는 평균 운전 시간을 사용하여 조회 표를 미리 입력해야합니까? 정보가 필요할 때마다 검색 할 수있는 4 백만 개의 위치를 ​​더 추가하지 않아도 문제가됩니다.

대부분의 경우 목적지는 저장된 지형 공간 좌표 중 하나가 아니며 사전 계산이 불가능한 대륙의 주소 또는 긴/위도가 될 수 있습니다.

필자는 지속적으로 일부 geoservies 엔드 포인트를 맞추어야하는 성능 문제를 피하려고합니다.

가장 좋은 방법에 대한 제안 사항은 무엇입니까?

- 두꺼운!

답변

1

이전에 이러한 문제를 살펴본 후에는 모두 저장할 수 없습니다.

  1. 일반적으로 결과를 캐시하는 것은 거의 모든 라우팅 제공 업체 TOS에 대한 것입니다. 때때로이 능력을 협상 할 수는 있지만 많은 비용이 듭니다.
  2. 검색 대상에 고정 된 점 집합이 없으므로 하나의 계산을 수행하면 다음 계산을위한 정보가 거의 없습니다.

일단 내가 선택한 경우 페어에 대한 경로를 저장할 수 있으므로 필요한 경우 해당 경로를 다시 표시 할 수 있습니다. 트랜잭션이 완료되면 DB에서 경로를 제거합니다.

이 모든 것을 캐시하거나 더 많은 제어권을 갖고 싶다면 PGRouting (Postgresql 사용)을 사용하여 거리 데이터를 얻을 수 있습니다. 나는 네가 그럴만한 가치가 있는지 의심 스럽지만.

관련 문제