2009-06-14 2 views
2

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

Какой вариант больше подходит с точки зрения производительности:

  1. действия пользователя Дорожка в App Engine Request Log. т.е. записывать запись журнала для каждого действия пользователя.
  2. Отслеживать действия пользователя в таблице в хранилище данных. Напишите запись для каждого действия пользователя.

Я полагаю, что записи в журнале запросов намного быстрее, чем пишет Datastore. Это верно? Каковы ваши впечатления и предложения?

спасибо: Henning

ответ

4

Я могу подтвердить (через мое собственное эмпирическое наблюдение, только: я не вижу в этом адресованном в официальной документации), что журнальная запись происходит быстрее, чем писать записи для хранения. Размышляя об этом, это имеет смысл: записи журнала всегда добавляются, отсутствуют индексы, нет особых транзакционных проблем (помимо атомарности каждой записи в журнале) и т. Д. И т. Д .; будучи настолько строго ограниченным, имеет смысл, что они могут быть более оптимизированы.

Однако я однажды (очень рано в пред бета-дни более года назад) наблюдал один случай, когда я думал, что должен быть записной книжкой, которую я написал, но просто не мог ее найти; Я не смог воспроизвести наблюдение, возможно, это был сбой в моем коде или исправленная ошибка в GAE, но это заставляет меня задаться вопросом о целостности данных - насколько гарантирована целостность журналов? До тех пор, пока я не увижу что-то в документах явно, я не буду чувствовать, что могу рассчитывать на журналы на 100% -ную целостность - если случайно потерять одну запись в миллионе будет абсолютной трагедией, возможно, более высокие гарантии магазина стоят эффекта.

+2

Согласен. Не установлено, что бревна достаточно надежны для ведения бухгалтерии. Но для базовой статистики я бы использовал их, чтобы избежать квоты хранилища данных и, возможно, индекса. Для меня главной проблемой является создание механизма журналов * off *. Существует много возможностей для потери данных, поскольку журналы находятся в кольцевом буфере. – JasonSmith

2

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

Если вы хотите получить лучшее из обоих миров, следите за API очереди задач, будучи выпущенным очень скоро. :)

+1

Спасибо. На самом деле есть доступ к журналам запросов, вы можете загрузить их с помощью сценария appcfg.py. Поскольку старые журналы удаляются, мне придется их регулярно скачивать. – henning77

Смежные вопросы