簡體   English   中英

有效的位置表示方式以及基於接近度的查詢?

[英]Efficient way to represent locations, and query based on proximity?

我正在考慮如何有效地表示數據庫中的位置,以便在給定任意新位置的情況下,我可以有效地查詢數據庫中與主題接近的可接受閾值內的候選位置。

之前也曾提出過類似的要求,但根據我針對問題域的標准,我還沒有找到討論。

注意事項:

  • 從頭開始,我可以用任何方式表示數據(例如long&lat等)
  • 任何結果集都是時間敏感的,因為它會在短時間內(〜5-15分鍾)失去有效性,因此我無法無限期地進行緩存
  • 我可以容忍結果中的一些合理誤差,例如,如果某個位置稍微超出閾值,或者結果集中的某行最近過期了
  • 語言不可知論的討論是完美的,但如果有幫助,我可以使用C#MVC 3和SQL Server 2012

一些初步的想法:

  • 使用Google之類的外部API,但是這將生成數千個請求,並且延遲很短
  • 使用Haversine函數,但是這看起來很昂貴,因此應在最少數量的候選對象上執行(甚至可以作為存儲過程!)
  • 建立一個郵編/郵政編碼的圖表,這樣我可以從任何節點找到與其交界的郵編/郵政編碼,但是這可能需要存儲大量數據

一些優化思想以快速減少可能的候選者:

  • 緩存搜索結果集,當我們進行后續搜索時,請查看主題是否在我們已經擁有緩存結果集的候選對象可接受的范圍內。 如果是這樣,請使用緩存的結果集(但請記住,結果會很快過期)

我希望答案不僅僅是原始的CPU能力,還有一些我沒有想到的方法可以幫助我?

謝謝

ps。 抱歉,如果我錯過了以前的問題並提供了有用的答案,請在下面告訴我。

怎么樣使用GeoHash? (請參閱http://en.wikipedia.org/wiki/Geohash

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM