Я пытаюсь внедрить механизм листов карт в Google App Engine.
Данные карты хранятся в базе данных, хранилище данных (большая таблица). Проблема заключается в том, что примерно 20 запросов могут поступить примерно в одно и то же время, чтобы нарисовать 20 плиток на основе одного и того же набора строк в базе данных.
Таким образом, поступает 20 запросов, если я напишу код для чтения из базы данных для каждого запроса, то я буду выполнять 20 одинаковых чтений из базы данных, по одному чтению для каждого вывода изображения плитки. Поскольку каждое чтение является одним и тем же запросом, нет смысла делать один и тот же запрос 20 раз. На самом деле это очень неэффективно.
Кто-нибудь может предложить лучший способ сделать это?
Если я использую memcache, мне нужно поместить данные в memcache, но одновременно поступает 20 запросов на данные, тогда, если я сделаю реализацию nieve, тогда 20 процессов будут записывать в memcache, так как все они идут параллельно параллельно.
Я программирую в бета-версии Google Go версии 1 на Google App Engine, я ссылаюсь на документы по Python, поскольку они более полные.
Ссылки:
Google datastore 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