Лучший дизайн для создания исторических отчетов по GAE - PullRequest
2 голосов
/ 23 февраля 2010

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

Например, отчет, который показывает 100 лучших пользователей на основе количества представлений, которые они сделали за данный день.

  1. Для такого отчета. Если у меня 50 000 пользователей, каков наилучший способ создания ежедневного отчета?
  2. Как создать ежемесячный и годовой отчет с такими данными?

Если это не очень хороший дизайн, то как поступить с таким дизайнерским решением, когда метрики отчета не ясны во время проектирования БД и к тому времени, когда станет ясно, что у нас уже есть огромные данные с ограниченными параметрами (полями).

Пожалуйста, совет.

1 Ответ

0 голосов
/ 23 февраля 2010

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

С выпуском версии 1.3.1 SDK у вас теперь есть доступ к курсорам запросов , что значительно упрощает создание отчетов на основе большого количества пользователей. , Вы можете использовать appengine cron jobs , чтобы поместить работу в очередь задач , чтобы вычислить числа для отчета.

Поскольку любой заданный вызов вашей задачи вряд ли будет завершен в то время, когда AppEngine позволяет ему выполняться, вам придется передавать курсор запроса от одного экземпляра к другому, пока он не завершится.

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

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