Мультисайтинг. Базы данных.

Главные вкладки

Аватар пользователя LavrenovNN LavrenovNN 29 июня 2009 в 0:12

Интересен такой вопрос!?
Поставил мультисайтинг, с 25 поддоменнами - на одну базу данных, с разными префиксами и с объединением нескольких таблиц, пока юзеров и переводы, далее, хочу объединить блоки, редактор, возможно форум.
Вот такой вопрос!
Если разделить базы данных, то есть на каждый поддомен, по отдельной базе - то не замедлит ли, работу друпала одновременное подключение к нескольким базам одновременно? Сколько база данных (mysql), сможет поддерживать таблиц внутри одной базы?

И ещё, поначалу были большие тормоза - в админке, думал, что что-то не так сделал. В отчёте по состоянию было "Статус HTTP запроса Неудача", поставил в сеттинге $conf['drupal_http_request_fails'] = FALSE; И всё прекрасно заработало (может кому пригодиться...). Связано -это с тем, что домен 3-го уровня - ещё некоректно работает с DNS (хотя активировал его, уже полдня назад), между тем - домен 3-го уровня активированный пару дней назад, работает без проблем! Так что, в принципе запись $conf['drupal_http_request_fails'] = FALSE; можно через пару дней убрать.

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

Комментарии

Аватар пользователя dmbaturin dmbaturin 29 июня 2009 в 3:40

Вопрос довольно непростой.
Работу друпала как такового это не замедлит, по крайней мере если php работает в режиме cgi или модуля веб-сервера, потому как в этих случаях на каждый запрос создается отдельный процесс, а расходы на соединение с БД со стороны веб-сервера невелики.
Работу самого сервера баз данных это замедлить может, на каждое соединение будет создан тред. Вообще это все сильно зависит от того, как именно у тебя организована работа с БД.
Количество таблиц и размер базы вообще сейчас упирается не в возможности СУБД, а в размер жесткого диска и возможности файловой системы.
Если все ваши сайты используют какие-то общие данные и у вас один физический сервер баз данных, то большого смысла разделять их нет. Если предполагается что когда-нибудь на каждый сайт будет свой сервер, то разделять лучше сейчас.
И да, если хотите строить большие и сложные БД, уходите с MySQL на PostgreSQL, не пожалеете Smile
P.S. Что касается DNS, то он тормозной, на многих серверах кэш может достаточно долго, так что все закономерно.

Аватар пользователя LavrenovNN LavrenovNN 29 июня 2009 в 6:57

dmbaturin wrote:

И да, если хотите строить большие и сложные БД, уходите с MySQL на PostgreSQL, не пожалеете Smile

А я думал, что Друпал пока не очень работает с PostgreSQL (краем глаза, где-то у вас читал о проблемах, но не вникал). Обязательно изучу этот вопрос, тем более, что mysql - сейчас "под крышей" , и не известно, что завтра будет! В то время, что с PostgreSQL совсем другая история!

Аватар пользователя LavrenovNN LavrenovNN 29 июня 2009 в 6:50

Благодарю за хороший ответ!
Хотя, в Друпале - нет разделения чёткого админки и фронтенда, то может на всякий случай, в сеттинге оставить строку $conf['drupal_http_request_fails'] = FALSE; на всякий случай?
Интересно! А для чего это сделано?
И ещё! Как всё-таки реально разделить базы данных? В какой параметр, занести подключение во 2-ю базу данных? Я сколько не искал, толком так и не понял!

Аватар пользователя dmbaturin dmbaturin 29 июня 2009 в 9:01

>В какой параметр, занести подключение во 2-ю базу данных?
Увы, только модификацией исходного кода. Но столь навороченные и нагруженные системы, где в этом есть реальная необходимость, на мой взгляд, лучше делать не на друпале.

В принципе, работает с постгресом. С ним, действительно, совсем другая история, и по функциональности он очень сильно превосходит MySQL.

Аватар пользователя LavrenovNN LavrenovNN 29 июня 2009 в 9:28

Значит, как я понял PostgreSQL сильнее и по функциональности и по скорости! Ладно! Этот вопрос постараюсь досконально изучить, о чём обязательно отпишусь!

Аватар пользователя Dock@drupal.org Dock@drupal.org 29 июня 2009 в 10:10

Тоже когда-то ставил перед собой такой вопрос. Есть портальчик один с мультисайтингом, пока посещаемость никакая, ибо работы ещё над ним много и в открытых источниках его нет. Сейчас порядка 20 сайтов крутится на одной базе, в конечном итоге количество сайтов должно дорасти до 170. Пока нагрузки не вижу, но для перестраховки решил использоваться гуглевский поиск вместо встроенного, т.к. боюсь что переиндексирование такого количества сайтов будет чересчур прожорливым. Может прикручу другой поисковый движок, если захочется. Сервер БД mysql 5.0.27. Думаю 25 подсайтов будет крутиться нормально, хотя все зависит от количества страниц в каждом из них. Единственное с чем надо будет подумать - крон.

Аватар пользователя LavrenovNN LavrenovNN 29 июня 2009 в 10:55

Я так понимаю ... . Индексация максимально возможная пройдет, в один момент времени. Количество одновременных запросов на сайт в этот момент времени, будет не больше величины количества страниц (даже если один подсайт 100 страниц, то 20*100=2000 ). Получается, поисковик, теоретически может сделать кратковременную нагрузку на сайт , 2000 запросов. В принципе, должно выдержать, тем более, если применять кеширование.

Аватар пользователя LavrenovNN LavrenovNN 29 июня 2009 в 21:57

Вроде и блоки объединил (делается один, а на каждом сайте располагается по разному, таблица boxes). Полёт нормальный...!