Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подсчет количества просмотров объявлений
Форумы портала PHP.SU » » Вопросы новичков » Подсчет количества просмотров объявлений

Страниц (1): [1]
 

1. alnik-75 - 30 Сентября, 2015 - 09:59:29 - перейти к сообщению
Добрый день, уважаемые участники форума!!!

Хочу услышать ваше мнение по поводу поднятой мною темы.

Вижу два варианта:

1. В таблице Ads с объявлениями создать столбец view. При просмотре объявления делать UPDATE +1 в столбце view. Недостаток - невозможно разделить, когда эти просмотры были.

2. Создать отдельную таблицу view, в которую при просмотре объявления вносить новую запись с указанием id объявления. Тут можно вносить время просмотра, соответственно, есть возможность разбивки по дням, месяцам и т.д. Этот способ и использую я. Сейчас в БД 7500 объявлений. соответственно, записей в таблице view 780 000. Если объявлений будет 100 000, то записей в таблице просмотров уже будет сколько то миллионов. Понятно, можно добавить индексы к id объявления (для выборки количества просмотров конкретного объявления) и date (для разбивки по времени).

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

Заранее выражаю благодарность откликнувшимся
2. DeepVarvar - 30 Сентября, 2015 - 10:32:27 - перейти к сообщению
Архивировать записи статистики старше месяца.
Ибо Пете продающему балалайку плевать на подробнейшую статистику просмотров месячной давности.

Под архивацией я имел ввиду:
CODE (htmlphp):
скопировать код в буфер обмена
  1. https://ru.wikipedia.org/wiki/%D0%90%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F

Т.е. когда кол-во просмотров записаных а-ля "id, date" приводится к виду "id, wiews_count, year_month"
3. alnik-75 - 30 Сентября, 2015 - 10:42:54 - перейти к сообщению
DeepVarvar пишет:
Архивировать записи статистики старше месяца.
Ибо Пете продающему балалайку плевать на подробнейшую статистику просмотров месячной давности.

Под архивацией я имел ввиду:
CODE (htmlphp):
скопировать код в буфер обмена
  1. https://ru.wikipedia.org/wiki/%D0%90%D0%BF%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D1%8F

Т.е. когда кол-во просмотров записаных а-ля "id, date" приводится к виду "id, wiews_count, year_month"


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

Далее, для установления количества просмотров объявления и получения временной статистики делаю выборку из таблиц "wiew" и "просмотры-архив", из которых получаю общее количество просмотров. Из первой таблицы получаю статистику по просмотрам в текущем месяце (сегодня, вчера, за неделю, за месяц), а из второй таблицы получаю количесвто просмотров, имевших место свыше месяца назад. Я так понимаю?
4. Panoptik - 30 Сентября, 2015 - 10:54:28 - перейти к сообщению
никто не мешает вам содержать оба типа данных. иметь столбецы total_views, today_views, week_views, month_views в таблице с сущностью и отдельно хранить детализированный отчет с точностью до секунды, кто, Когда и при каких обстоятельствах просматривал
5. alnik-75 - 30 Сентября, 2015 - 11:06:23 - перейти к сообщению
DeepVarvar пишет:

Т.е. когда кол-во просмотров записаных а-ля "id, date" приводится к виду "id, wiews_count, year_month"

можно и не делать вид "id, wiews_count, year_month", а сделать "id, wiews_count". разбивку по прошлым месяцам и годам можно не делать, а просто знать количество общее.

Далее, проходит время. Из таблицы "wiew" удаляются записи старые, подсчитывается их количество и апдейтится вторая таблица, где к количеству просмотров по айди объявления добавляется количество удаленных из первой таблицы. Правильно мыслю?
6. Flash_PR - 30 Сентября, 2015 - 11:41:03 - перейти к сообщению
Тоже неделю назад делал статистику. Сделал отдельной таблицей, id юзера, ip, откуда пришел, браузер, ОС, и время просмотра конечно. С проблемой кол-ва записей решил, что буду по крону удалять записи старше 1 месяца. На правильность решения не претендую, делал по "наитию" первый раз....
(Добавление)
alnik-75 пишет:
Далее, проходит время. Из таблицы "wiew" удаляются записи старые, подсчитывается их количество и апдейтится вторая таблица, где к количеству просмотров по айди объявления добавляется количество удаленных из первой таблицы. Правильно мыслю?


Если вам обязательно нужно знать кол-во просмотров за все время, то почему сразу не делать апдейт на +1, и подробную запись просмотра? Получится в реальном времени вы знаете количество просмотров. А так только до апдейта.
7. Panoptik - 01 Октября, 2015 - 12:02:17 - перейти к сообщению
удалять данный старше 1 месяца как-то неправильно. тем более вряд ли у вас данных очень много. и даже 10к записей - это мелочь. бд спокойно справляется с миллионами. главное индексы и кеши. Плюс частота обращений к таким запросам будет редкой.
у меня сбор данных идет в миллионах. и я пока ничего не удаляю, да и не собираюсь, мне нужно анализировать срезы всех данных на каждом промежутке времени, по крайней мере за последнее время. для ТС я дал совет. пусть хранит детализированные данные в отдельной таблице, а агрегированные - в столбце за любой удобный период и никаких проблем не будет
8. alnik-75 - 01 Октября, 2015 - 13:55:42 - перейти к сообщению
Panoptik пишет:
удалять данный старше 1 месяца как-то неправильно. тем более вряд ли у вас данных очень много. и даже 10к записей - это мелочь. бд спокойно справляется с миллионами. главное индексы и кеши. Плюс частота обращений к таким запросам будет редкой.
у меня сбор данных идет в миллионах. и я пока ничего не удаляю, да и не собираюсь, мне нужно анализировать срезы всех данных на каждом промежутке времени, по крайней мере за последнее время. для ТС я дал совет. пусть хранит детализированные данные в отдельной таблице, а агрегированные - в столбце за любой удобный период и никаких проблем не будет


Расскажите пожалуйста про кэши
9. Panoptik - 01 Октября, 2015 - 15:16:54 - перейти к сообщению
а чего там рассказывать. все сложные выборки закидываете в кеш на час или сутки и при втором обращении уже не грузите базу сложными выборками а берете готовые результаты из кеша. кеш может быть как в оперативной памяти так и в файле либо бд (поле count_views, today_views тоже своеобразные кеши)

 

Powered by ExBB FM 1.0 RC1