Кеширование обработанных данных в Django - PullRequest
0 голосов
/ 22 января 2012

У меня есть много записей измерений энергии, хранящихся в модели.

Моим пользователям часто требуется доступ к отчету об используемой энергии, поэтому модель.менеджер отвечает за запрос большого количества записей, применяет алгоритм, который занимает ~ 2 секунды, что много времени, я тестировал memcachedно безуспешно, потому что через некоторое время кэшированные данные не доступны, но пользователи часто возвращаются, чтобы увидеть те же отчеты.Таким образом, мое потенциальное решение этой проблемы производительности - хранить обработанные данные (не только набор запросов, но набор запросов данных после применения алгоритма) в модели, называемой «Обработанные данные».

Таким образом, когда пользователю предлагается доступ к энергииВ отчете менеджер, отвечающий за оплату, сначала запросит ProccessData, а если ProccessData.objects.filter(field1='field1').exist(): возвращенные данные будут напрямую переданы в шаблон для визуализации.Если требуемые данные ранее не требовались, ответственный менеджер должен применить алгоритм и отправить запрос обратно пользователю.

Это хороший подход?

1 Ответ

1 голос
/ 22 января 2012

Перед тем, как начать что-то подобное, я определенно хотел бы попробовать такие проекты, как django-cache-machine или johnny-cache , они делают кеширование моделей и делают это красиво.

Я думаю, что кэш johnny лучше подходит вашим потребностям, поскольку он никогда не истекает кэширования наборов запросов.

Я не уверен, что вы имеете в виду под "данными кеша недоступны", но выможно легко решить несколькими способами (например, используя постоянный кеш-сервер, например, redis).

Это еще одна вещь, которую я хотел бы попробовать до того, как вы собираетесь реализовать кэширование базы данных, если вам нужно нечто большее, чем кэширование наборов запросов.

Утилиты кеширования Django поставляются с красивым декоратором кеша (@cached) (см. Документы и пример здесь ), который выполняет кэширование на основе параметров

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...