2012-02-12 2 views
0

그래서 위도/경도 좌표를 사용하여 데이터베이스에 위치를 저장하는 응용 프로그램을 구축하고 있습니다. 사용자는 생성 날짜 ("최근") 또는 위치 ("근처")를 사용하여 이러한 레코드를 가져올 수 있습니다. 이제 내 목표는 앱 속도를 높이기 위해 캐싱을 구현하는 것입니다.어떻게 위치 기반 데이터베이스 쿼리를 캐시합니까?

최근 섹션에서 나는 꽤 간단하다고 생각하고 있습니다. 잠깐 동안 쿼리를 캐시하지만 위치 기반 쿼리의 경우 이는 의미가 없습니다. 현재지도에서 사용자 위치를 얻고 DB에서 가장 가까운 25 개의 위치를 ​​가져옵니다. 사용자가 자유롭게지도를 이동할 수 있기 때문에 (iOS) 똑같은 지점을 두 번 치는 기회는 존재하지 않으므로 여기서 잘못된 접근 방식을 사용하고 있다고 생각됩니다.

사용자가 위치에 따라 결과를 얻을 수 있지만 일부 캐싱을 여전히 이용할 수 있도록 데이터와 쿼리를 정렬하는 방법은 무엇입니까? 이것은 가능한가?

답변

1

지도 모음을 동일한 영역에두기 위해지도를 그리드 시스템으로 분할해야 할 수도 있습니다 (체스 보드를 오버레이 생각). 이것은 당신에게 캐시를 키잉하기위한 명확한 (또는 적어도 캐시가 존재하는) 빈을 줄 것이다. "가까운"항목을 찾으려면 큰 사각형의 두 번째 세트를 가질 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그런 식으로 처리하는 것이 좋습니다. 그래도 답변을 수락하기 전에 실제로이 작업을 수행하는 방법에 대한 의견이 있습니까? 마음에 떠오르는 간단한 방법은 제공된 좌표를 반올림하는 것입니다. 이것은 아마도 동일한 결과를 얻을 수있을 것입니다. –

+0

메인 스퀘어에는 문제가 없지만 큰 스퀘어는 가장자리에 문제가 발생할 수 있으므로 조심해야합니다 (예 : 다음 주요 스퀘어에 있기 때문에 가까운 항목을 포함하지 않음). – Chriseyre2000