Я пытаюсь реализовать механизм картографических плиток в Google App Engine.
Данные карты хранятся в базе данных, хранилище данных (большая таблица). Проблема в том, что примерно в одно и то же время может прийти 20 запросов на отрисовку 20 тайлов на основе одного и того же набора строк в базе данных.
Итак, поступает 20 запросов, если я напишу код для чтения из базы данных для каждого запроса, то я буду выполнять 20 одинаковых операций чтения из базы данных, по одному чтению для каждого вывода изображения тайла. Поскольку каждое чтение — это один и тот же запрос, нет смысла выполнять один и тот же запрос 20 раз. На самом деле это очень неэффективно.
Может ли кто-нибудь предложить лучший способ сделать это?
Если я использую memcache, мне нужно поместить данные в memcache, но одновременно поступает 20 запросов на данные, тогда, если я сделаю наивную реализацию, то 20 процессов будут писать в memcache, так как они все идут одновременно параллельно.
Я программирую в бета-версии Google Go версии 1 на Google App Engine, я ссылаюсь на документ Python здесь, так как он более полный.
Использованная литература:
Хранилище данных Google http://code.google.com/appengine/docs/python/datastore/overview.html
Leaflet JS, который я использую для отображения листов карты http://leaflet.cloudmade.com/
Чтобы уточнить.
Я генерирую изображения плиток из данных в базе данных, то есть запрашиваю данные у базы данных (это не изображение плитки), затем рисую данные в изображение и визуализирую изображение в формате JPEG. Поскольку GAE эффективен для рисования изображений на стороне сервера, http://blog.golang.org/2011/12/from-zero-to-go-launching-on-google.html