2012-02-12 70 views
0

因此,我正在構建一個應用程序,使用緯度/經度座標將位置保存到數據庫。用戶可以使用創建日期(「最近」)或位置(「附近」)來獲取這些記錄。我現在的目標是實施緩存來加速應用程序。如何緩存基於位置的數據庫查詢?

對於最近的一節,我猜測它非常簡單,只是緩存查詢一分鐘左右,但對於基於位置的查詢,這是沒有意義的。我目前正在從地圖獲取用戶位置,並從數據庫中獲取最近的25個位置。由於用戶可以自由地移動地圖(iOS),兩次擊中完全相同的地點的機會不存在,這使我相信我在這裏使用了錯誤的方法。

我將如何安排我的數據和查詢,以便用戶仍然可以根據其位置獲取結果,但仍可利用某些緩存。這甚至有可能嗎?

回答

1

您可能必須將地圖劃分爲某種形式的網格系統(考慮覆蓋棋盤),以便點的集合位於同一區域。這會給你一些確定的關鍵字(或者至少是緩存所在的bin)的緩存。你可以有第二組更大的方塊來找到「關閉」項目。

+0

感謝您的回覆,這樣做似乎非常明智。在我接受你的答案之前,你是否有任何關於如何真正做到這一點的意見?想到一個簡單的方法就是將所提供的座標四捨五入 - 這應該可以給出相同的結果嗎? – 2012-02-13 18:56:51

+0

這對主要方塊有效,但您需要小心較大的方塊,因爲這可能會導致邊緣出現問題(即不包括較近的項目,因爲它位於下一個主要方塊中)。 – Chriseyre2000 2012-02-13 19:15:00