Отслеживание запросов пользователей путем регистрации их действий в БД в django - PullRequest
0 голосов
/ 22 октября 2011

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

Я думаю написать собственный декоратор и разместить его в каждом представлении, которое я хочу отследить. Однако у меня есть некоторые проблемы с моим дизайном. Прежде всего, разумен ли такой механизм регистрации, или из-за того, что моя таблица журналов будет быстро увеличиваться, это вызовет некоторые проблемы с преформой? Во-вторых, каким должен быть дизайн моего журнала?

Я хочу сохранить ключевые слова, если пользователь вызывает search, просмотреть или сохранить идентификатор элемента, если пользователь вызывает details of item просмотреть. Кроме того, IP-адреса пользователя должны быть сохранены, но как я могу разделить пользователей, если они подключаются через один IP-адрес, как во многих компаниях.

Я рад подробно объяснить, если вы считаете, что мой вопрос неясен.

Спасибо

Ответы [ 2 ]

1 голос
/ 22 октября 2011

Я бы этого не делал.Если это производственная служба, то перед вами работает соответствующий веб-сервер, верно?Apache или nginx или что-то.Это может сделать ведение журнала, и может сделать это хорошо, и может писать в форму, которая не будет раздувать вашу базу данных, и есть множество аналитических инструментов для анализа журнала.

Вам придется дублироватьМногие из этих функций в вашем декораторе, например, когда вы хотите включить или выключить его, или изменить уровень журнала.Единственное, что вы получите, выполнив все это в django, - это возможность сверхтонкого контроля, такого как регистрация только просмотров сообщений в блоге с номерами идентификаторов, превышающими X или что-то еще.Но, как правило, вам не нужен такой уровень детализации, и вы регистрируете все и проводите анализ на этапе анализа.В настоящее время вы не указали причину, по которой вам нужно делать это из Django.

Если вы действительно хотите это в RDBMS, чтение файла журнала apache в Postgres или MySQL или один из этих дорогих довольно тривиально.

0 голосов
/ 22 октября 2011

Следует иметь в виду, что базы данных SQL не дают вам очень хорошей производительности записи (по сравнению с чтением), поэтому, если вы испытываете большие нагрузки, вам, вероятно, следует искать лучшее решение в памяти ( например, какое-то хранилище значений ключей, например redis ).

Но имейте в виду, что, особенно если вы используете решение, отличное от SQL, вы должны знать, что вы хотите делать с собранными данными (просто отобразить что-то вроде «журнала» или выполнить более углубленный поиск). / запрос данных).

Если вы хотите идентифицировать разных пользователей с одного и того же IP-адреса, вам, вероятно, следует искать решение на основе файлов cookie (если вы используете инфраструктуру сеансов django сеансы по умолчанию идентифицируются с помощью файлов cookie - так Вы можете просто использовать сеансы). Другим решением может быть регистрация асинхронно через javascript после загрузки страницы в браузер (что может дать вам больше возможностей для идентификации пользователя и избежать дополнительной загрузки при генерации страницы).

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