Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Количественные данные, храним или вытаскиеваем из общей базы? / 18 сообщений из 18, страница 1 из 1
06.06.2010, 09:42
    #36671532
Nekifrovv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
Сайт знакомств, все сообщения у меня хранятся в одной табличке. кто кому во сколько написал, статус прочитано или нет. Сайт развивается, сообщений все больше и больше.

При входе в меню контакты, напротив каждого контакта пишется сколько с этим пользователем сообщений типа Миша 2045(5), Никита 4788(1) где в скобках это не прочитанные письма. Сейчас письма считаются (count)ом. так вот вопрос, не сильно ли вытаскивание этих количественных данных напрягает mysql? Может быть хранить количественны данные в отдельной табличке одним числом для каждого контакта и иногда делать перерасчет? Как это будет выглядеть на практике когда сообщений будет, скажем, на 5 гигабайт.

Спасибо.
...
Рейтинг: 0 / 0
06.06.2010, 10:38
    #36671551
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
имхо, лучше хранить к-ва и изменять при получении/прочтении сообщения.
Зачем постоянно считать одно и то же?
Хотя предусмотреть процедуру принудительного пересчета тоже не помешает - как административный способ исправить возникшие расхождения.
...
Рейтинг: 0 / 0
06.06.2010, 11:39
    #36671604
Nekifrovv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
locky,

Спасибо за ответ.
1:0 в пользу хранения количества

Кто еще чего-нибудь добавит ?:)
Охото сделать сразу так чтобы переделывать не пришлось )
...
Рейтинг: 0 / 0
06.06.2010, 12:31
    #36671647
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
Nekifrovv1:0 в пользу хранения количества

лучше счетчик поменяйте, собирайте голоса за постоянный расчет количества при помощи запроса. А то так и застынете на 1:0. Не разводить же для пополнения счетчика тысячи страниц...
...
Рейтинг: 0 / 0
06.06.2010, 12:52
    #36671660
Nekifrovv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
iscrafm,

Если честно, не понял ответ.
...
Рейтинг: 0 / 0
06.06.2010, 13:51
    #36671691
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
Nekifrovviscrafm,

Если честно, не понял ответ.
Вы собираете голоса в пользу хранения количества. Но собирать нужно в пользу постоянного расчета, как наиболее нетипичного случая
...
Рейтинг: 0 / 0
06.06.2010, 19:22
    #36671899
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
Вы собираетесь денормализовать вашу табличку сообщений.
Несколько моментов - я абсолютно уверен что табличка сообщений индексирована по пользователю, так что колоссальных выгод вы не получите.
Плюсы денормализации -
1 улучшено время отклика
2 уменьшено количество логических чтений
если у вас СЕЙЧАС с этим проблемы то игра стоит свеч

Минусы -
1 потенциальная дырка - возможность неправильных результатов
если цена неправильных результатов небольшая, или временной лаг несущественнен (открыл пользователь свои сообщения, быстро пересчитали их количества) в худшем случае соврем на первом показе. Либо можно пересчитывать расхождения в момент наименьшей загрузки системы.
2 добавочная работа по обновлению агрегатов - просто проследите чтобы не было конкуренции
3 изменение программы и все неприятности с этим связанные. Оптимизация ради оптимизации - зло
...
Рейтинг: 0 / 0
07.06.2010, 18:02
    #36673979
Nekifrovv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
Всем спасибо за советы.
...
Рейтинг: 0 / 0
07.06.2010, 21:55
    #36674257
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
Варианты:
1) COUNT. Работает хорошо только тогда, когда все нужные индексы влезают в память (кэш индексов) и подсчет идет только по ним, без обращения к таблицам. Однако, хорошие проекты обычно растут быстрее, чем среднестатистический объем памяти на сервере.
2) Хранение. Лучше с точки зрения чтения даже в случаях, когда кэшей недостаточно для хранения всей базы в памяти. Но хуже с точки зрения записи, т.к. нужно модифицировать больше данных при добавлении нового сообщения.
3) Гибридный вариант. Хранить одно число за все предыдущее время до начала очередного расчетного периода. Например, до начала текущих суток. Все, что в пределах текущего расчетного периода считать COUNT-ом. Оба величины складывать. Вариант, имхо, обладает плюсами обоих предыдущих вариантов, но сложнее в реализации.
...
Рейтинг: 0 / 0
08.06.2010, 00:53
    #36674409
Vinny the POOH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
Я бы посоветовал хранить количество, например, в профайле пользователя, инкрементируя его при добавлении ему нового сообщения, и периодический (например - при открытии пользователем раздела "сообщения") их пересчёт. Причина - большое соотношение количества операций чтения/записи.
...
Рейтинг: 0 / 0
08.06.2010, 01:00
    #36674417
Last1Cmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
miksoft +1 к 3му
...
Рейтинг: 0 / 0
08.06.2010, 08:44
    #36674587
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
Nekiforovvтак вот вопрос, не сильно ли вытаскивание этих количественных данных напрягает mysql?
Ну если Вы так хотите, мы все дружно придём к вашему mysql и повыспрашиваем, что именно его напрягает и насколько :)

lockyимхо, лучше хранить к-ва и изменять при получении/прочтении сообщения.
Насколько я видел, в комбинации MySQL+ISAM это отличный способ быстро и чётко получить неконсистентные данные. Я допускаю, что это исключительно кривые руки разработчиков, но, судя по тому, что это уже несколько лет не могут поправить несколько меняющихся разработчиков, проблема не совсем тривиальна.

Ну а конструктивно - в последних сообщениях Винни и miksoft назвали, как я полагаю, наилучшие возможные варианты.
...
Рейтинг: 0 / 0
08.06.2010, 10:55
    #36674851
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
softwarerНасколько я видел, в комбинации MySQL+ISAM это отличный способ быстро и чётко получить неконсистентные данные.
Точно? Потому как это ж вроде совершенно штатная операция, которая встречается кругом и везде и т.п.
...
Рейтинг: 0 / 0
08.06.2010, 11:54
    #36675017
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
lockyТочно? Потому как это ж вроде совершенно штатная операция, которая встречается кругом и везде и т.п.
В проекте, который я регулярно наблюдаю уже больше года, постоянно видно, что update data set value=value+1, выполняемый одновременно с двух рабочих мест, даёт результат +1 вместо +2.
...
Рейтинг: 0 / 0
08.06.2010, 11:57
    #36675026
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
softwarerlockyТочно? Потому как это ж вроде совершенно штатная операция, которая встречается кругом и везде и т.п.
В проекте, который я регулярно наблюдаю уже больше года, постоянно видно, что update data set value=value+1, выполняемый одновременно с двух рабочих мест, даёт результат +1 вместо +2.Речь точно об ISAM? или таки о MyISAM?
...
Рейтинг: 0 / 0
08.06.2010, 12:01
    #36675041
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
miksoftРечь точно об ISAM? или таки о MyISAM?
Я не настолько понимаю в MySQL, чтобы ответить. Я в данном случае выступаю с позиций наблюдательного пользователя - вижу проект на mysql с нетранзакционным движком, вижу, что время от времени, когда пользователи слишком одновременно нажимают на кнопку, идёт глюк, вижу, что этот глюк уже кучу лет не могут толком исправить, даже ругаться перестали.
...
Рейтинг: 0 / 0
08.06.2010, 12:08
    #36675062
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
softwarermiksoftРечь точно об ISAM? или таки о MyISAM?
Я не настолько понимаю в MySQL, чтобы ответить. Я в данном случае выступаю с позиций наблюдательного пользователя - вижу проект на mysql с нетранзакционным движком, вижу, что время от времени, когда пользователи слишком одновременно нажимают на кнопку, идёт глюк, вижу, что этот глюк уже кучу лет не могут толком исправить, даже ругаться перестали.У MyISAM такого быть не должно. А ISAM давно уже deprecated.
А подзапросы эта версия MySQL поддерживает? Их поддержка началась примерно в то же время, когда ISAM стал deprecated.
...
Рейтинг: 0 / 0
08.06.2010, 12:16
    #36675082
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Количественные данные, храним или вытаскиеваем из общей базы?
miksoftА подзапросы эта версия MySQL поддерживает?
Ну, если соберусь поискать там дырку для sql injection, заодно и проверю :)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Количественные данные, храним или вытаскиеваем из общей базы? / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]