Основан 26 Июля 2013 года
freehacks.ru fhacks.me fhacks.pw fhacksnplmzxaaoo.onion
HashFlare

Показано с 1 по 7 из 7
  1. #1
    Trust
    TopicStarter
    Аватар для ul1k317

    Статус
    Offline
    Регистрация
    26.08.2013
    Сообщений
    823
    Репутация
    395 + / -
    Web-программист

    Question Алгоритм - новые сообщения / темы

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

    Самый простой подход на мой взгляд это заносить в отдельную таблицу для каждого пользователя id последних сообщений во всех просмотренных им темах. Соответственно, при следующем захоте мы смотрим если id последнего сообщения в теме больше, чтем то, что у пользователя, значит в этой теме есть новые, и если есть темы id которых нет у этого пользователя, то эти темы новые.

    На сколько это правильно? Есть ли более простые и действенные способы?
    php, mysql, mssql, js, html, css, ajax, administrating, it consulting, etc.

  2. #2
    Аватар для axitpl

    Статус
    Offline
    Регистрация
    06.12.2013
    Сообщений
    293
    Репутация
    79 + / -
    Программист
    Я думаю что есть более простые способы, учитывая ограничения полей БД, например поле TEXT в MySQL ограничено 65536 байтами, да и обрабатывать такое количество данных ресурсоемкая задача, но зависит от количества пользователей.

  3. #3
    Trust
    TopicStarter
    Аватар для ul1k317

    Статус
    Offline
    Регистрация
    26.08.2013
    Сообщений
    823
    Репутация
    395 + / -
    Web-программист
    Цитата Сообщение от axitpl Посмотреть сообщение
    Я думаю что есть более простые способы, учитывая ограничения полей БД, например поле TEXT в MySQL ограничено 65536 байтами, да и обрабатывать такое количество данных ресурсоемкая задача, но зависит от количества пользователей.
    Да нет, таблица будет простая
    id | userId | postId | lastCommentId

    Соответственно для каждого пользователя сколько строк, сколько тем он просмотрел. Т.е. при 2000 тем и 2000 пользователей всего 4 ляма строк будет. Это не много по моим прикидкам.
    php, mysql, mssql, js, html, css, ajax, administrating, it consulting, etc.

  4. #4
    Аватар для axitpl

    Статус
    Offline
    Регистрация
    06.12.2013
    Сообщений
    293
    Репутация
    79 + / -
    Программист
    Цитата Сообщение от ul1k317 Посмотреть сообщение
    Да нет, таблица будет простая
    id | userId | postId | lastCommentId

    Соответственно для каждого пользователя сколько строк, сколько тем он просмотрел. Т.е. при 2000 тем и 2000 пользователей всего 4 ляма строк будет. Это не много по моим прикидкам.
    4-ре ляма, а не 2.
    Ну 4 ляма это немного, на innodb, но ты все равно намучаешься таким решением, эту таблицу надо будет чистить, обновлять индексы, непонятно в какой момент будет происходить перезапись значений lastCommentId, непонятно с какой скоростью будут создаваться новые темы(а для 2к пользователей, каждая тема +2000 записей в БД), да и при заходе 100 человек в один момент времени надо отправить 100 запросов и получить 200к ответов и обработать их.
    На каждый запрос будет количество ответов = количеству тем.

  5. #5
    Trust
    TopicStarter
    Аватар для ul1k317

    Статус
    Offline
    Регистрация
    26.08.2013
    Сообщений
    823
    Репутация
    395 + / -
    Web-программист
    4 ляма. А я как написал?

    При создании новой темы ничего писать не надо. Кроме 1 записи для автора темы.
    lastCommentId перезаписывается в момент просмотра темы.
    При заходе 200 пользователей будет 200 запросов к базе. Которые будут возвращать только новые.
    php, mysql, mssql, js, html, css, ajax, administrating, it consulting, etc.

  6. #6
    Аватар для sata-ata

    Статус
    Offline
    Регистрация
    29.10.2013
    Сообщений
    3,035
    Репутация
    282 + / -
    Программист
    а не много ли данных на одного пользователя будет?
    может ещё добавить "подписан на тему", для сокращения объёма на одного пользоввателя
    и кнопку "все темы/сообщения прочитаны"
    добавить отсечку, типа "после этого сообщения всё прочитано", место экономиться будет очень сильно

    если не понял про отсечку


    Код:
    id_4 текст 4
    id_3 текст 3
    id_2 текст 2
    id_1 текст 1
    как сейчас в базу при прочтении всех тем поподет каждая айдишка, т.е. 4 штуки
    можно сделать
    Код:
    id_4 
    id_men'she_uzhe_prochitano
    2 строчки
    аналогично для новых
    мы типа запоминаем положение (или положения) пользователя в каждой теме, на которую он подписан

    это сильно сократит место и увеличит скорость работы, т.к. не надо искать конкретную айдишку, если она попала в тот или иной диапозон

    как-то так
    знаю, описал сложно и не оч понятно

    [свернуть]
    8AC4F56356469F79B5283364053ACDA49D8EC9FEFDADC2B42F A5B4E979D9222267583F350BF9

    с/delphi/pascal/vbs/vbm/bat
    Ник зареган, суки! [Только зарегистрированные могут видеть это. ]

  7. #7
    Trust
    TopicStarter
    Аватар для ul1k317

    Статус
    Offline
    Регистрация
    26.08.2013
    Сообщений
    823
    Репутация
    395 + / -
    Web-программист
    Цитата Сообщение от sata-ata Посмотреть сообщение
    а не много ли данных на одного пользователя будет?
    может ещё добавить "подписан на тему", для сокращения объёма на одного пользоввателя
    и кнопку "все темы/сообщения прочитаны"
    добавить отсечку, типа "после этого сообщения всё прочитано", место экономиться будет очень сильно

    если не понял про отсечку


    Код:
    id_4 текст 4
    id_3 текст 3
    id_2 текст 2
    id_1 текст 1
    как сейчас в базу при прочтении всех тем поподет каждая айдишка, т.е. 4 штуки
    можно сделать
    Код:
    id_4 
    id_men'she_uzhe_prochitano
    2 строчки
    аналогично для новых
    мы типа запоминаем положение (или положения) пользователя в каждой теме, на которую он подписан

    это сильно сократит место и увеличит скорость работы, т.к. не надо искать конкретную айдишку, если она попала в тот или иной диапозон

    как-то так
    знаю, описал сложно и не оч понятно

    [свернуть]

    допустим есть три темы id1 id2 id3

    в каждой по три сообщения msg1, msg2, msg3

    т.е. пользователь зашел в первую тему и в базе оказалось следующее
    user1 id1 msg3

    если в этой теме появится еще одно сообщение то при заходе пользователя в новые алгоритм будет такой

    если в теме id1 последнее сообщение не msg3 то значит все сообщения после msg3 в этой теме новые.

    если пользователь посетил несколько тем, то в базе будет:
    user1 id1 msg3
    user1 id2 msg3
    user1 id3 msg3

    вот как-то так.
    php, mysql, mssql, js, html, css, ajax, administrating, it consulting, etc.

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Информация на сайте предоставлена исключительно в ознакомительных целях, использование знаний в противозаконных целях преследуется по закону! Администрация не несет ответственности за ваши деяния.