Производительность: запись в хранилище данных и запись в журнал запросов - PullRequest
2 голосов
/ 14 июня 2009

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

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

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

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

Thanks: Henning

Ответы [ 2 ]

4 голосов
/ 14 июня 2009

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

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

2 голосов
/ 15 июня 2009

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

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

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