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

Форум MySQL

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

 

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

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

тема: Как строятся высоконагруженные БД
 
 автор: Дмитрий Смаль   (09.03.2011 в 17:52)   письмо автору
 
 

Здравствуйте.

вопрос чисто концептуальный

интересует как строятся базы данных в которых очень много информации и к которым очень часто идут запросы

например взять MySQL то там есть четкое ограничение по количеству одновременных запросов

но ведь все таки как-то такие проблемы решаются
в контакте же есть поиск среди 150 миллионов человек по фильтрам

очевидно надо думать в сторону создания не одной БД а нескольких
чтобы при увеличении количества информации и запросов кидать запросы на разные серверы

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

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

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

  Ответить  
 
 автор: cheops   (09.03.2011 в 18:21)   письмо автору
 
   для: Дмитрий Смаль   (09.03.2011 в 17:52)
 

Есть разные решения, одно из них заключается в использовании репликации, когда вы ставите один сервер на запись, причем снабжая его таблицы типом вроде Archive, для которого INSERT срабатывает очень быстро (минус все ключи, что тоже ускоряет добавление данных), а с этого сервера данные реплицируются на пул других серверов, с типом таблиц для быстрого выполнения SELECT-запросов, например, MyISAM (плюс все ключи, что тоже ускоряет выборку). Таких серверов может быть десятки, они соединяются с персональными Web-серверами, которых тоже может быть десятки. Т.е. многие пользователи разбросаны по многим серверам, да таблицы объемные, но к серверу обращаются не так много посетителей и сервер заточен как раз под эти операции. Такая архитектура позволяет убрать противоречие в оптимизации INSERT и SELECT-запросов.

  Ответить  
 
 автор: Дмитрий Смаль   (09.03.2011 в 19:41)   письмо автору
 
   для: cheops   (09.03.2011 в 18:21)
 

спасибо за ответ
теперь хоть понятно по каким ключевым словам гуглить

  Ответить  
 
 автор: Дмитрий Смаль   (10.04.2011 в 15:01)   письмо автору
 
   для: cheops   (09.03.2011 в 18:21)
 

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

  Ответить  
 
 автор: cheops   (10.04.2011 в 16:16)   письмо автору
 
   для: Дмитрий Смаль   (10.04.2011 в 15:01)
 

В высоконагруженных системах у вас Web-сервера всегда стоят на одном/одних сервере, а базы данных на другом/других. Иначе просто нельзя будет настроить сервер на эффективную работу и базы данных и Web-сервера.

PS Там даже не вопрос передачи возникнет, как правило, результат запросов не очень большой, чтобы вызывать перегрузку сети. Может возникать запаздывание развертывания информации на слейв-серверах, если они менее мощные, чем мастер-сервер (особенно в версиях ниже 5.1, где нет построчной репликации, только позапросная).

  Ответить  
 
 автор: Дмитрий Смаль   (10.04.2011 в 16:51)   письмо автору
 
   для: cheops   (10.04.2011 в 16:16)
 

я правильно понимаю в скриптах к которым обращается пользователь делать прямой коннект к одной из БД и селект запросы (для реплик)?
а в случае с основным серевером инсерт и апдейт запросы?
или же используются другие механизмы?

  Ответить  
 
 автор: cheops   (10.04.2011 в 23:24)   письмо автору
 
   для: Дмитрий Смаль   (10.04.2011 в 16:51)
 

Да, все верно.

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

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