Вопрос: Алгоритм - что посещалось на сайте, а что нет?...

MOVe

Guest
Вопрос: Алгоритм - что посещалось на сайте, а что нет?...

Подскажите, пожалуйста, если конечно есть супермэны, которым это под силу.

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

Чтобы было понятнее, напишу на примере форума. Есть 5 разделов, в каждом 10 тем. Эти 5 разделов при входе отмечены как непрочитанные. Заходим в них, темы также отмечены как непрочитанные, заходим в любую из них, выходим, она отмечается как прочитанная. И это всё запоминается до следующих посещений форума.

По дате последнего посещения можно проверять, но это только на текущую сессию. Если человек закроет окно, то все данные обнулятся, так как в дату последнего посещения запишется текущая дата и время. А мне нужно, чтобы постоянно оставалось в "памяти", что он что-то посмотрел, а куда-то забыл зайти, то есть оставил "на потом".

Если для каждого из, например, 1000 пользователей запоминать дату каждого посещения в 20 разделах и 100 подразделах в нём, получится 2 000 000 записей в базу данных... Это слишком много. Да и при удалении любого раздела нужно следить за этими данными в БД.

Поэтому ищу алгоритм. Данные могу хранить в БД, но только не такое количество. Есть мысли? Уже голову сломал.

Кстати, в phpBB 3 версии уже реализовали эту функцию, но как??? Вот это главный вопрос. Советовать скачать её из CVS и прочесать исходники не нужно, до этого я сам догадался, но мне нужен именно алгоритм.

Головоломка :) Может просто кто-то знает ссылку на какую-нибудь статью? Я порылся и пока ничего не нашёл...
 

alexhemp

Новичок
Никакой головоломки. Для таких целей были придуманы cookie.
 

MOVe

Guest
Куки не помогут. Я не могу хранить 18Кб информации в куках :)! Может я не правильно объяснил? В таком случае мне в куках нужно хранить: количество разделов * количество подразделов * длину строки даты... Например: 10 * 200 * 16 / 1024 = 31,25 Кб данных...

Это не алгоритм :) Такое даже школьник придумает. А мне нужен ёмкий объём данных... Головоломка не решена :)
 

Фанат

oncle terrible
Команда форума
мне нужен ёмкий объём данных...
поясни-ка, что ты хотел этим сказать.

Головоломка не решена
решена, и весьма успешно много где применяется.
но если ты будешь продолжать закрывать на решение глаза, то помочь тебе никто не сможет
 

MOVe

Guest
Так я и прошу, подскажите :)! Неужели я задал вопрос, чтобы "поумничать" и закрыть глаза на варианты? Ёмкий объём, это на каждого пользователя, ну, пусть по 10 записей, ну, по 50, но не больше. Головоломка-то решена, но как? Я решения не знаю и спрашиваю :)!

Граждане, предложите пожалуйста варианты алгоритмов :) Например, отличных от моего :)!

Да, и как быть с тем, что разделы и подразделы могут удаляться. Как из сохранённых данных удалять лишнее?

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

Фанат

oncle terrible
Команда форума
на каждого пользователя, ну, пусть по 10 записей, ну, по 50, но не больше. Головоломка-то решена, но как? Я решения не знаю
ты сам его описал.
а теперь говоришь, что не знаешь
Ёмкий объём, это на каждого пользователя, ну, пусть по 10 записей, ну, по 50, но не больше
чем вызвано такое ограничение?
Как из сохранённых данных удалять лишнее?
запросом вида DELETE FROM

вооще, проблема высосана из пальца.
я понимаю - форум с десятками тысяч сообщений.
а тут каких-то несчастных 2000.
Давно бы уже сделал.
Таблица в пару мегабай его пугает, видите ли.
 

MOVe

Guest
Автор оригинала: Фанат
Таблица в пару мегабай его пугает, видите ли.
Так меня больше всего пугает обработка такого количества запросов базой данных! :)
И без этого их хватает на странице... Но спасибо за ответы :)!
 

Фанат

oncle terrible
Команда форума
Вот... Ещё вариант созрел...
это не вариант, а бред.
Ты еще скажи, что 10 цистерн - это лучше, чем сто бутылок, потому, что МЕНЬШЕ.

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

-~{}~ 16.02.05 13:47:

Так меня больше всего пугает обработка такого количества запросов базой данных!
не понял.
а о каком количестве запросов здесь говорится?
какая конкретная цифра?
 

MOVe

Guest
Автор оригинала: Фанат
Боюсь, в форум для продвинутых ты зря свой вопрос задвинул.
по возможностям восприятия ты сейчас на краю корзины.
:) А я боюсь, что вообще не на тот форум зашёл :) Я не хочу меряться напором струи. Я всего лишь задаю конкретный вопрос.

По твоему 2 миллиона записей всего лишь от 1 000 пользователей это мизер? Скажи мне пожалуйста, какова производительность базы данных PostgreSQL при обработке ежесекундно по 2 миллиона записей? Может я всегда слишком требователен к программному обеспечению? Я действительно не знаю, каково это критическое число.

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

Да, не хотелось бы первый раз зайти на форум и увидеть такое отношение. Я понимаю, что Вы, Фанат, гений и гуру, но Вы можете человеческим языком говорить, или нам обязательно с первой встречи показывать свою крутость ;)?

Сразу же вопрос. А что, если пользователей будет не 1 000, а 10 000?

И вообще, может мне кто-нибудь, в том числе и Фанат сказать свой алгоритм работы этой программки? Или только критиковать будем :)?

По моим наблюдениям, базы данных у нас "вешаются" (загружают проц) при обработке гораздо меньших объёмов данных...
 

Фанат

oncle terrible
Команда форума
По-моему?
по-моему, во-первых, 1 000 пользователей никогда не дадут 2 миллиона записей.
Во-вторых, цифра в 2М не представляется мне гигантской.
В-третьих, ты не ответил на вопросы, которые тебе задали.
А это очень некультурно.
Скажи мне пожалуйста, какова производительность базы данных PostgreSQL при обработке ежесекундно по 2 миллиона записей?
нормальная производительность. пара метров в памяти под индексы всегда найдется.
По моим наблюдениям, базы данных у нас "вешаются" (загружают проц) при обработке гораздо меньших объёмов данных...
вот с этого и надо было начинать.
почитай что-нибудь по оптимизации БД - откроешь для себя много нового.
И вообще, может мне кто-нибудь, в том числе и Фанат сказать свой алгоритм работы этой программки? Или только критиковать будем
по-моему, у тебя совсем шарики за ролики заехали.
без обид, но ты производишь такое впечатление.
я тебе уже 20 раз объяснял, что у меня алгоритм именно такой, как ты описал.
я этот вариант не критикую, а наоборот - поддерживаю.
а ты пишешь, что я критикую. Ты внимательно вообще, ответы читаешь?
 

MOVe

Guest
Автор оригинала: Фанат
По-моему?
по-моему, во-первых, 1 000 пользователей никогда не дадут 2 миллиона записей.
Во-вторых, цифра в 2М не представляется мне гигантской.
1. Думаю дадут даже ещё больше, так как разделов на сайте, дневников, объявлений и всего остального слишком много. Но это тот максимум, который стоит предусмотреть сразу.
2. Мне до этого момента казалось, что это как раз гигантская цифра...
В-третьих, ты не ответил на вопросы, которые тебе задали.
А это очень некультурно.
Вообще, вроде отвечал, просто не цитировал.
вот с этого и надо было начинать.
почитай что-нибудь по оптимизации БД - откроешь для себя много нового.
Мммм... Вообще-то, у меня нет оснований не доверять нашему админу :)
по-моему, у тебя совсем шарики за ролики заехали.
без обид, но ты производишь такое впечатление.
Гм... :) Ну, возможно, к каждому новому человеку нужно привыкать. Я, честно говоря, рассчитывал получить короктий ответ, а не разводить дискуссию. Твой ответ я прочитал и принял к сведению и спросил у всех остальных: "нет ли ЕЩЁ каких алгоритмов" :) Которые оперируют намного меньшими объёмами. Ведь всегда есть человек, который на эти грабли уже наступал и выбрал самый оптимальный.
я тебе уже 20 раз объяснял, что у меня алгоритм именно такой, как ты описал.
Спасибо, без обид, - а кроме тебя на этом форуме грамотные люди есть :)? Я без всяких намёков. Просто хотелось бы из нескольких вариантов проанализировать. Хотя, первоначальный вариант проще во всех отношениях...
я этот вариант не критикую, а наоборот - поддерживаю.
а ты пишешь, что я критикую. Ты внимательно вообще, ответы читаешь?
Друже, не серчай! Я критику на второй вариант имел ввиду...

Фу-ф... Теперь, надеюсь, я не похож на "ненормального", который несёт чушь :)? Если ещё не всё объяснил, то мне попостить проблемы не составит. Главное, не держите на меня зла! Я никому ничего плохого сделать не хочу. Просто мне нужно выяснить актуальный вопрос!
 

Фанат

oncle terrible
Команда форума
1. Думаю дадут даже ещё больше, так как разделов на сайте, дневников, объявлений
понятно.
лавры дамочки ру не дают спокойно спать очередному медиа-магнату.
Значит, ты утверждаешь, что вся тысяча посетителей будет читать все две тысячи дневников? Ты точно уверен в своих прогнозах?
может быть, тебе начала еще годик посидеть на таком сайте, а потом уже браться за свой, а?
у меня нет оснований не доверять нашему админу
А АДМИН-ТО ЗДЕСЬ ПРИ ЧЁМ???
он за тебя запросы пишет?
Я, честно говоря, рассчитывал получить короктий ответ
Чтобы получить короткий ответ, надо ОЧЕНЬ ХОРОШО ПОДУМАТЬ над вопросом.
Если же вопрос показывает непонимание автором множества вещей, то ответ неотвратимо растянется.
Я критику на второй вариант имел ввиду...
А чем тебя критика-то не устроила?
может быть, ты не подумал над критикой? может быть, тебе стоит подумать над критикой? может быть, ты сообразишь задуматься о том, что в плане объема данных ты не выиграешь НИЧЕГО, а вот в плане управляемости потеряешь всё?

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

MOVe

Guest
Уф... Как тяжело с тобой общаться :) Ладно...
лавры дамочки ру не дают спокойно спать очередному медиа-магнату
Да не, расслабься :) У меня всего лишь городской сайт - для горожан.
может быть, тебе начала еще годик посидеть на таком сайте, а потом уже браться за свой, а?
Да не, сайт я уже давно написал. Мне нужно только "не прочитанное" отмечать.
А АДМИН-ТО ЗДЕСЬ ПРИ ЧЁМ???
он за тебя запросы пишет?
Нет, он настраивает всю систему.

Можно я на остальные вопросы отвечать не буду :)? Это не покажется некультурным?
 

Фанат

oncle terrible
Команда форума
Да не, расслабься У меня всего лишь городской сайт - для горожан
окей, расслабился.
но все равно хочу получить ответ на вопрос - с какой стати сто процентов посетителей сайта будут читать сто процентов материалов на нем?
Вот ты, прежде, чем задать этот свой вопрос - сколько прочел ответов на аналогичные вопросы?
А почему считаешь, что люди будут поступать по-другому?
Нет, он настраивает всю систему
отлично.
а почему ты тогда сваливаешь на него свои проблемы с БД?
Если ты на машине врежешься в столб - тебе тоже будет виноват завод, который машину собрал, а не твое неумение водить машину?
Можно я на остальные вопросы отвечать не буду
Ради бога.
ответы-то нужны тебе ,а не мне.
в частности, ответ на вопрос, зачем запрашивать из БД пару метров вместо того, чтобы запросить несколько десятков байт
 

MOVe

Guest
Автор оригинала: Фанат
но все равно хочу получить ответ на вопрос - с какой стати сто процентов посетителей сайта будут читать сто процентов материалов на нем?
Вот ты, прежде, чем задать этот свой вопрос - сколько прочел ответов на аналогичные вопросы?
А почему считаешь, что люди будут поступать по-другому?
Кстати, извини, я по данному форуму полазил и не нашёл ответа на этот вопрос. Это я написал в самом первом сообщении, иначе прочитал бы всё там. Я вообще не любитель на новых форумах регистрироваться. Просто реально подумал, что здесь есть люди, которые готовы ради идеи помочь ближнему :) Почему считаю, что будет много данных? Да я просто беру максимальное значение за основу. Конечно, не всё может быть настолько серьёзно, насколько я думаю.
в частности, ответ на вопрос, зачем запрашивать из БД пару метров вместо того, чтобы запросить несколько десятков байт
Да само собой я не буду извлекать всю информацию! Но ведь движок БД будет её обрабатывать да и хранить. Ладно, с этим замяли ;)
 

Фанат

oncle terrible
Команда форума
Почему считаю, что будет много данных? Да я просто беру максимальное значение за основу
стоп.
здесь две стоти тысяч топиков.
ты просмотрел от силы десяток. топиков.
почему ты считаешь, что посетители твоего сайта будут смотреть больше? почему ты закладываешься на максимум, когда и 10% от него достичь в принципе нереально?
Да само собой я не буду извлекать всю информацию
а придется.
если у тебя все посещения раздела лежат в здоровенном блобе, то и вытаскивать тебе придется не 8 байт по 1 теме, а весь блоб.

я смотрю, тебе все должны - админ должен настраивать, чтобы все летало, БД должна хранить только то, что тебе нужно.
а ты тогда зачем нужен?
 

MOVe

Guest
Автор оригинала: Фанат
а ты тогда зачем нужен?
Чтобы задавать тупые вопросы в этом форуме :) Хорошо, сейчас пойду искать ответ на свой вопрос. Надеюсь, кто-то уже что-то подобное спрашивал.
 

Фанат

oncle terrible
Команда форума
неправильный вывод.
ты нужен для того, что я тебе велел сделать с самого начала - почитать что-нибудь про оптимизацию БД, тобы она у тебя не тормозила на меньших объемах данных.
Это за тебя не сделает ни админ, ни БД.
Это обязанность программисат, как ни печально
 

MOVe

Guest
А, я понял :) Тут просто принято так с людьми разговаривать. Нашёл похожую тему (всё-таки ;)). Прочитал 3 страницы, автора понимаю полностью, что он хочет сделать тоже полностью понимаю, а вот ответы на его вопрос вообще ни в какие ворота :) Такое чувство, что отвечающие совершенно о разных вещах говорят. Причём считают себя очень крутыми :) А я уж было занервничал. Первый раз себя идиотом почувствовал. Ща, если доберусь наконец-то по ссылке, может сюда отпишусь, что же всё-таки в конце истории было. Кстати, не очень гуд на людей так сразу наезжать. Всё же нужно ещё и уважать людей.

Кстати, в ваших правилах написано следующее:
"Уважайте форум и его участников, будьте вежливы КО ВСЕМ (данное правило касается и пользователей, и модераторов); ",
"Если Вы нашли ответ на свой вопрос сами, а не c чьей-то помощью - вместо того, чтобы писать "Все, решил.", опишите КАК Вы решили. При поиске по форуму очень неприятно видеть топик по своей проблеме, но без решения;"

Не знаю, напишу ли сюда результат (уже просто не очень хочется), но вот первое цитированное правило всё же соблюдать стоит. Это небольшой вывод от сегодняшнего дня :)
 
Сверху