SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.09.2011 23:38:41

blood_shadow
Участник
Зарегистрирован: 02.09.2011
Сообщений: 6

Формирование рейтинга

Еще вопрос - есть БД которая содержит несколько таблиц, в каждой таблице представлены
разные классы автомобилей, просмотр осуществляется с помощью программы, от количества просмотров
через эту программу (допустим в течении 15 минут) для автомобиля формируется рейтинг
Как такое реализовать?

Спасибо

Неактивен

 

#2 03.09.2011 00:51:16

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Формирование рейтинга

Если можете влиять на код программы — пусть она просто складывает куда-то
статистику просмотров. Если нет — прийдется придумывать какой-то хитрый
способ (обработка журналов, использование проксирования для подсчета, еще
что-то). Триггер на SELECT повесить, к сожалению, нельзя.

Неактивен

 

#3 03.09.2011 10:58:49

blood_shadow
Участник
Зарегистрирован: 02.09.2011
Сообщений: 6

Re: Формирование рейтинга

paulus написал:

Если можете влиять на код программы — пусть она просто складывает куда-то
статистику просмотров. Если нет — прийдется придумывать какой-то хитрый
способ (обработка журналов, использование проксирования для подсчета, еще
что-то). Триггер на SELECT повесить, к сожалению, нельзя.

я немного придумал как, короче заведу отдельную колонку `rating` каждый раз когда буду делать
SELECT , буду добавлять единицу, не знаю как только такое реализовать:
1. можно ли как-то прицепить таймер к колонке этой таблицы, который будет обнулять ее каждые 15 мин.?
2. нет ли какого-то счетчика доступа к ячейке, то есть если получил доступ с помощью SELECT к конкретной
ячейке счетчик прибавил единицу к представлении ячейки, или такое реализуется с помощью UPDATE?

Неактивен

 

#4 03.09.2011 21:08:17

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Формирование рейтинга

Таймер можно сделать внешним, но тогда у Вас раз в 15 минут информация будет
резко становиться неверной?

Счетчика доступа нет, нужно придумывать какое-то независимое решение.

Неактивен

 

#5 03.09.2011 21:23:46

blood_shadow
Участник
Зарегистрирован: 02.09.2011
Сообщений: 6

Re: Формирование рейтинга

paulus написал:

Таймер можно сделать внешним, но тогда у Вас раз в 15 минут информация будет
резко становиться неверной?

Счетчика доступа нет, нужно придумывать какое-то независимое решение.

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

Давайте разберем по кусочкам остановимся на формировании самого рейтинга:
допустим у меня есть колонка `rating` могу ли я сказать БД (с программы) чтобы она инкрементировала значение в
этой колонке (ф-ция и т.д)?

Неактивен

 

#6 04.09.2011 00:20:32

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Формирование рейтинга

Вы не можете делать триггеры на SELECT. Поэтому это будет какое-то внешнее
по отношению к базе решение.

Неактивен

 

#7 04.09.2011 00:44:07

blood_shadow
Участник
Зарегистрирован: 02.09.2011
Сообщений: 6

Re: Формирование рейтинга

paulus написал:

Вы не можете делать триггеры на SELECT. Поэтому это будет какое-то внешнее
по отношению к базе решение.

наверно неправильно выражаюсь, я не про триггеры говорю, вот как можно сделать:
Посылаю запрос SELECT из него получаю значение `rating`, далее посылаю UPDATE со значением (rating + 1)
это будет работать, но до тех пор пока несколько программ одновременно запросят SELECT и сделают
UPDATE с не обновленным значением, мне нужно послать такой UPDATE чтобы БД сама добавила (rating + 1),
так можно сделать? либо это будет не UPDATE, а вызов какой-то ф-ции

Неактивен

 

#8 05.09.2011 11:50:11

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Формирование рейтинга

Если Вы можете менять приложение — всё куда проще smile

UPDATE tablename SET rating = rating + 1 WHERE ...

Выбирать это значение совершенно не нужно.

Неактивен

 

#9 08.09.2011 02:20:14

blood_shadow
Участник
Зарегистрирован: 02.09.2011
Сообщений: 6

Re: Формирование рейтинга

paulus написал:

Если Вы можете менять приложение — всё куда проще smile

UPDATE tablename SET rating = rating + 1 WHERE ...

Выбирать это значение совершенно не нужно.

Спасибо, с этим разобрались, а как прицепить таймер к БД? чтобы обнулял конкретный столбец всех таблиц каждые 15 мин?

Неактивен

 

#10 08.09.2011 08:42:59

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Формирование рейтинга

Если 5.0-, то внешним приложением (например, cron). Если 5.1+, то можете посмотреть
в сторону EVENTов.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson