Използвам картографска услуга, която при даден геоокръг (дефиниран чрез координати и радиус) връща набор от места в тази област. Искам да кеширам резултатите, върнати от тази картна услуга.
Очаквам моя кеш да съхранява две таблици:
- Таблица Места с места, върнати от услугата.
- Таблица Кръгове от области, чиито места са били кеширани в таблицата Места.
След това, при даден произволен нов кръг C, искам ефективно да тествам кеша за това дали областта на C е изцяло покрита от кръговете в таблицата Кръгове< /em>. Ако C е покрит изцяло, имам кеширане и не е необходимо да се консултирам с картографската услуга. Ако C не е покрит изцяло, трябва да се консултирам с картографската услуга и да кеширам резултата.
В1: как мога да съхраня набор от географски кръгове, така че да мога ефективно да тествам дали обединението на техните области покрива изцяло произволен нов кръг?
Дори и с решение за Q1, може да имам проблем с производителността, когато пропускът в кеша е много лек и правя заявка към картографската услуга, която едва добавя към моята кеширана област. За да разреша това, искам да мога да намеря примерна точка в C, която не е покрита от кръговете, за да я използвам като център за заявка за картографска услуга. Ще повтарям този процес, докато C не бъде напълно покрит.
В2: как мога да съхраня набора от географски кръгове, така че и в случай, че площта им не покрива изцяло даден кръг C, да мога ефективно да генерирам примерна точка в C, която не е покрита?
Очаквам да използвам нещо като PostgreSQL с PostGIS, за да внедря моя кеш, но приветствам други предложения.