特定の半径にあるポイントを見つける必要があります。1 つ目は独自のアルゴリズムを作成する (または既存のライブラリを使用する) 2 つ目は、postgresql earth_box ユーティリティを使用することで、ストアド プロシージャを使用して db から直接選択できます。Web アプリケーションのコンテキストにおける両方の長所と短所は何ですか?
1 に答える
1
次の理由から、postgres で earth_box プロシージャを使用する方がよいと思います。
- データベースには、それを操作するためのデータと手順が既に含まれています
- 適切にインデックスが作成されたテーブルが与えられたデータベース サーバーは、独自の空間データに対して空間クエリを非常に効率的に実行する必要があります。
- サーバーを使用すると、空間情報をクエリする必要がなく、処理している場所に転送し、ツリー構造やその他のオーバーヘッドを作成する必要がありません (最初の箇条書きに関連しています)。
- すでに存在し、おそらく徹底的にテストされ精査されたコードを使用している
- レポートなどのより多くのアプリケーションから、他のサーバー側 SQL のコードを再利用できます。
最初にアースボックスのアプローチを試して、アースボックスがパフォーマンス的に絶対に悪い場合にのみカスタムソリューションを使用することをお勧めします.
以下は、ブログ投稿からのより簡潔なメタ推論です。
[...] earthbox 関数を使用すると、単純な比較を実行して、特定の半径内のすべてのレコードを見つけることができます。これは、ポイント間の大圏距離を返す関数によって行われます。より詳細な説明は http://en.wikipedia.org/wiki/Greatcircleにあります。
(メタ推論とは、earthbox の使用が単純であるため、簡単に使用できることを意味します。)
于 2014-03-13T05:23:58.937 に答える