2014-03-13 1 views
1

주어진 반경에있는 점을 찾아야합니다. 이제 두 가지 선택 사항이 있습니다. 우선 (또는 기존 라이브러리를 사용하여) 자체 알고리즘을 작성하고 두 번째는 postgresql earth_box 유틸리티를 사용하고 저장 프로 시저를 사용하여 db에서 직접 선택할 수 있습니다. 웹 애플리케이션의 맥락에서 두 가지 장점/단점은 무엇입니까?스칼라 대 지구 상자의 트리 기반 알고리즘

답변

1
내가 포스트 그레스의 earth_box 절차를 사용하여 다음과 같은 이유로 더 좋을 것이라고 생각

: 제대로 주어,

  • 데이터베이스가 이미
  • 데이터베이스 서버에서 작동하는 데이터와 절차가 포함되어 있습니다 인덱싱 된 테이블은 자체 공간 데이터에 대한 공간 쿼리를 실행하는 데 매우 효율적이어야합니다.
  • 서버를 사용하면 공간 정보를 쿼리 할 필요가 없으며 트리 구조 및 기타 오버 헤드를 생성하여 처리하는 모든 곳으로 전송할 수 있습니다 (첫 번째 총알에 넥타이)
  • 이미 존재하고, 아마도, 철저하게 테스트 및 심사 된 코드를 사용하고
  • 당신은

내가보고와 같은 애플리케이션의 광범위한 번호에서 다른 서버 측 SQL의 코드를 재사용 할 수

  • earthbox 접근법을 먼저 시도하고 earthbox가 성능면에서 절대적으로 안좋은 경우에만 맞춤형 솔루션을 사용하는 것이 좋습니다.

    여기 a blog post you may want to check out에서 더 간결 메타 추론이다 :

    는 [...]를 earthbox 기능은 우리가 간단한 특정 반경에있는 모든 기록을 찾을 수 비교 수행 할 수 있습니다. 이것은 점 사이의 큰 원형 거리를 반환하는 함수에 의해 수행되며, 자세한 설명은 http://en.wikipedia.org/wiki/Greatcircle에 있습니다.

    는 (메타 추론에 의해 내가 earthbox의 사용의 단순함이 그것을 생각할를 사용하지하게 것을 의미한다.)

    +0

    이 당신의 기여 주셔서 감사합니다, 나는 조금 땅 상자를 사용하여 경험 이요 쉽고 간단하게 찾는다. 이제는 스칼라 런타임 계산의 이점에 대해 알고 싶습니다. –

    +1

    @SlowHarry : 하. 나도 궁금해. 나는 Google 검색에서 일대일 비교를 발견하지 못했습니다. 정말로 알고 싶다면 직접 작성해야 할 수도 있습니다. GreatCircle algo를 구현 한 Java 함수 (스칼라 소스를 찾지 못했습니다)는 다음과 같습니다. http://introcs.cs.princeton.edu/java/12types/GreatCircle.java.html 그런데, 이미 earth_box에 대해 알고 있었고 성능 메트릭에 관심이 있다고 말했습니까? 질문에 답하기 위해 귀찮게하지 않았습니다. –

    +0

    그것은 단지 기본적인 거리 함수이지만, 태스크가 더 복잡하고, 많은 포인트와 무차별 대입이 모두 너무 느릴 것이고, 가장 흥미로운 것은 더 빨리 발견하기 위해 적용된 그래프입니다.이 구현을 적용하고 earth_box와 비교해야합니다 . –