Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Теоретический вопрос о больших записях в таблицы
 
 автор: Maxam   (30.10.2012 в 04:14)   письмо автору
 
 

Доброй ночи.

Хотел узнать, чисто с теоритической точки интересно.

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

Вот тут вопрос. Как эти данные храняться в базе данных MySQL?

Обычно ведь создаётся таблица messages, где:
ИД
автор
кому
сообщение
время
и всё. Получается, что там каждый месяц по миллиону записей добавляется? И Mysql нормально среди них ищет быстро сообщения? Такая таблица одна наверно больше 100 Мб весить только будет.

Как это всё организовывают?

  Ответить  
 
 автор: Sfinks   (30.10.2012 в 23:24)   письмо автору
 
   для: Maxam   (30.10.2012 в 04:14)
 

Во-первых - сильно сомневаюсь, что сайт со 100 000 активных пользователей будет на Мускуле сидеть.
Во-вторых - перенос старых мессаг в архив
В-третьих - что значит поиск? Поиск чего?
Кто кому чего писал? Этот поиск выполняется по целочисленным ключам, что не одно и тоже с "поиском в файле размером 100Мб". Сильно не одно и тоже. На порядки не одно и тоже.
А если вы имеете ввиду полнотекстовый поиск, то врядли "Mysql нормально среди них ищет быстро сообщения". Нормально - наверно. Быстро - никогда!

  Ответить  
 
 автор: Maxam   (31.10.2012 в 01:39)   письмо автору
 
   для: Sfinks   (30.10.2012 в 23:24)
 

>Во-первых - сильно сомневаюсь, что сайт со 100 000 активных пользователей будет на Мускуле сидеть.
А что же, если не Mysql? Какие есть более быстрые базы? Или вообще на файлах?

>Во-вторых - перенос старых мессаг в архив
То есть, без доступа к ним пользователю или как?

>В-третьих - что значит поиск? Поиск чего?
Поиск отдельных сообщений, чтобы их читать и отвечать, например.

  Ответить  
 
 автор: cheops   (03.11.2012 в 14:41)   письмо автору
 
   для: Sfinks   (30.10.2012 в 23:24)
 

>Во-первых - сильно сомневаюсь, что сайт со 100 000 активных пользователей будет на Мускуле сидеть.
Отчего же, не на одном понятно, сервере, но вполне... да у администраторов будет болеть голова по поводу репликации и её сбоев, возможно болеть будет немножко больше, чем если бы использовалась другая база данных. Но это возможно, более того, на MySQL еще и ресурсов меньше потребуется, особенно, если отказать от транзакционных таблиц и использовать MyISAM.

  Ответить  
 
 автор: Sfinks   (03.11.2012 в 14:47)   письмо автору
 
   для: cheops   (03.11.2012 в 14:41)
 

Я не сказал не возможно. Я сказал врядли =) Ну вот так мне кажется, мягко говоря =)

  Ответить  
 
 автор: cheops   (03.11.2012 в 15:20)   письмо автору
 
   для: Maxam   (30.10.2012 в 04:14)
 

Миллион сообщений - это не так много их вполне можно хранить в таблице, однако, сообщений по факту может быть много больше, учитывая что месяцев, чтобы набрать 100000 пользователей нужно не мало. Поэтому вам придется хранить сообщения на разных серверах, да и пользователей тоже. Для этого каждому пользователю и сообщению назначается уникальный хэш (чисел вам не хватит, особенно, если будете использовать 32-битную разрядность). Хэш организуют таким образом, чтобы их него можно было легко вычислить на каком сервере сообщение или пользователь хранятся. Причем желательно организовать его таким образом, чтобы распределение нагрузки было равномерным (т.е. привязываться к первой букве сообщения - идея в принципе не очень хорошая, иначе у вас сервера Т, С будут под нагрузкой, а Й и Ё простаивать). Это все очень интересно и содержит массу подводных камней, но 100 000 активных пользователей, которые что-то пишут - это караул, смело плюсуйте к ним еще пару миллионов, которые ничего не пишут. Вообще таких линейных распределений не бывает, как правило, имеется какая-то ниспадающая зависимость от горстки активно переписывающихся людей к массе неактивных пользователей. Для тестирования - лучше нечто подобное и генерировать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования