2012-02-12 17 views
0

私は緯度/経度座標を使用してデータベースに場所を保存するアプリケーションを構築しています。ユーザーは、作成日(「最近」)または位置(「近く」)のいずれかを使用してこれらのレコードをフェッチできます。私の目標は、アプリケーションを高速化するためにキャッシュを実装することです。ロケーションベースのデータベースクエリをキャッシュするにはどうすればよいですか?

最近のセクションでは、かなりシンプルだと思いますが、ちょっと待ってからクエリをキャッシュしていますが、場所ベースのクエリでは意味がありません。私は現在、マップからユーザーの場所を取得しており、DBから最も近い25の場所を取得しています。ユーザーが地図を自由に動かすことができるので(iOS)、まったく同じ場所に2回ぶつかる機会は存在しないため、ここで間違ったアプローチをしていると私は信じています。

ユーザーは自分の場所に基づいて結果を得ることができますが、キャッシングを利用できるように、データとクエリをどのように整理しますか?これも可能ですか?

答えて

1

グリッドシステムの何らかの形にマップを分割しなければならない場合があります(チェス盤にオーバーレイすると思います)ので、ポイントの集合が同じ領域に収まるようにする必要があります。これは、キャッシュをキーするための明確なもの(または少なくともキャッシュが存在するビン)を与えるものです。 「近い」アイテムを見つけるために、より大きな正方形の2番目のセットを持つことができます。

+0

返信いただきありがとうございます。そういう形でそれを行うのはかなり賢明です。私はあなたの答えを受け入れる前に、実際にこれを行う方法についての任意の入力がありますか?簡単な方法は、提供された座標をちょうど四捨五入することです - これはおそらく同じ結果をもたらすでしょうか? –

+0

これはメインスクエアでは機能しますが、大きなスクエアには注意が必要です。エッジの周りに問題が発生する可能性があります。 – Chriseyre2000

関連する問題