SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.03.2010 03:03:47

mikki11
Участник
Зарегистрирован: 14.03.2010
Сообщений: 14

Сайт с высокой посещаемостью

Здравствуйте! Я программист и разработал (пока ещё не запустил) 1 сайтик. Он является автокаталогом (по-типу авто.ру). Смысл тот же: юзеры вбивают объявы о продаже авто. Ну и куча полезных ф-й ко всему этому. Состоит он из следующих частей:
1. www.site.ru - сам автокаталог (15 таблиц)
2. firms.site.ru - каталог фирм (салоны, сервисы, мойки и тд) (7 таблиц)
3. parts.site.ru - каталог запчастей (12 таблиц)
4. top.site.ru - рейтинг автосайтов (5 таблиц)
5. news.site.ru - автоновости (15 таблиц)
6. forum.site.ru - форум автомобилистов (ну а это ipb-форум, около 50 таблиц)

Как видите, 1 главный домен (автокаталог) и 5 поддоменов 3 уровня.
Вся эта байда у меня хранится в 1 базе, общее число таблиц ~100.

Есть маза раздобыть кругленькую сумму на раскрутку. Планирую года через 3 иметь не менее 50.000 уникальных посетителей в сутки. Сервак естественно, буду выделенный покупать. FreeBSD+NgInx+Apache+MySQL, все дела.
Основная нагрузка на mysql однозначно будет из-за постоянной долбёжки поиска. Ну, куча народу будут долбить поиск для поиска тачки, запчасти и тд.
И вот думаю как лучше сделать? Может для каждого поддоменя (форум, запчасти, новости) сделать отдельную базу данных? Но тогда проблема - авторизацию я хочу общую сделать для всех поддоменов. Типа, если чел зарегался в автокаталоге, то те же логин и пасс будут подходить и к форуму, и к запчастям и тд. Но базы-то разные будут! А если все 100 таблиц в 1 держать (как сейчас) - то проблем с общей вторизацией нет. Но вот боюсь мускул ляжет моментально...
Благодарен за любой адекватный совет!
PS: Ораклы и им подобные не предлагать - у меня уже всё под мускул заточено ;smile

Неактивен

 

#2 14.03.2010 03:16:44

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Сайт с высокой посещаемостью

В обной базе таблицы или в разных - для MySQL вообще нет никакой разницы. Можно 1000 таблиц поместить в одну базу, а можно каждую таблицу поместить в отдельную базу (это не запретит делать запросы с JOIN). Производительность будет одинаковой.

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

Неактивен

 

#3 14.03.2010 03:21:26

mikki11
Участник
Зарегистрирован: 14.03.2010
Сообщений: 14

Re: Сайт с высокой посещаемостью

ммм... ну спасибо за помощь. Хотите сказать что мне пока дёргаться не стоит и запускать всё как есть? А потом разберёмся? А я вот слышал - что изначально неверно спроектированная базя - корень всех бед -)

Неактивен

 

#4 14.03.2010 03:29:14

mikki11
Участник
Зарегистрирован: 14.03.2010
Сообщений: 14

Re: Сайт с высокой посещаемостью

Уважаемый админ! А по вашему опыту - на 50.000 уников/сутки сколько нужно серверов для репликации? Штуки 3 где-то?

Неактивен

 

#5 14.03.2010 03:38:54

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Сайт с высокой посещаемостью

Одно другому не противоречит. Проектировать нужно правильно, с учетом производительности. Но база сначала проектируется в нормальной форме, а только потом в нее вносится дублирующая информация, кэширование и.т.д. Безусловно запросы должны быть составлены правильно.

Относительно баз данных, это не имеет значения. Пусть у Вас есть таблицы users, posts и items в одной базе. Тогда запросы будут типа

SELECT ... FROM posts JOIN users ...;
SELECT ... FROM items JOIN users ...;
 


Если разбить на базы auth, forum и cars, то запросы изменятся незначительно:
SELECT ... FROM forum.posts JOIN auth.users ...;
SELECT ... FROM cars.items JOIN auth.users ...;
 


Честно говоря вообще не ясно на что это повлияет.

Сейчас у Вас задача грамотно все разработать и запустить. Я бы обращал внимание на целостность базы в первую очередь (например, на форумах часто бывает, что счетчик сообщений у юзера не совпадает с реальностью или ссылки на темы, которых уже нет по каким-то причинам). С точки зрения разработки нужно обращать внимание на удобство пользователей. После запуска у Вас будет по крайней мере год до того, как сервер встанет (если где-то совсем криво написано, то встанет раньше, но узкое место будет видно за километр и исправить будет легко). Тогда арендуете 2 сервера - один будет под базу, другой под http и это даст еще по крайней мере полгода подумать какая Вам нужна архитектура. Для подавляющего большинства проектов рунет двух серверов достаточно.

Неактивен

 

#6 14.03.2010 03:44:41

mikki11
Участник
Зарегистрирован: 14.03.2010
Сообщений: 14

Re: Сайт с высокой посещаемостью

Спасибо большое за хороший ответ! Проект через пару месяцев запускаю и начинаю крутить потихоньку. Много сил затратил - полтора года писал всё снуля. Думаю труды не пропадут даром. А придёт время - к Вам обращусь (с денюжкой);smile за более конкретными решениями. А то у нас в Рязани знания сисадмина заканчиваются на уровне настройки ipfw... Обратиться даже не к кому...

Неактивен

 

#7 14.03.2010 03:45:23

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Сайт с высокой посещаемостью

50000 уников, а сколько хитов? И что делают эти уники в основном? Если пришли с поиска по конкретной объяве, то будет 150к хитов, если разделить на 8 активных часов в сутках, то получается 5 хитов в секунду, что, в принципе, может обработать один сервер при правильной настройке кэширования.

Сейчас Вы не знаете сколько их них будут выполнять поиск (обычно это несколько процентов), поэтому какую-то реальную оценку дать сложно

Неактивен

 

#8 14.03.2010 03:47:32

mikki11
Участник
Зарегистрирован: 14.03.2010
Сообщений: 14

Re: Сайт с высокой посещаемостью

rgbeast написал:

И что делают эти уники в основном?

Ну а что они могут делать на сайте типа автору? Не tv-трансляции online же смотреть -)))  Тачки искать....

Неактивен

 

#9 14.03.2010 03:58:14

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Сайт с высокой посещаемостью

Я думаю, 50000 посетителей Вы сможете совершенно спокойно держать на обычном MySQL сервере безо всякой репликации и т.п.
Главное - не писать невменяемые запросы и не допускать тупости в структуре таблиц (и в проектировании вообще). Тогда всё будет нормально smile

Неактивен

 

#10 14.03.2010 04:00:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Сайт с высокой посещаемостью

mikki11 написал:

Ну а что они могут делать на сайте типа автору? Не tv-трансляции online же смотреть -)))  Тачки искать....

Это по разному можно делать. Можно на форуме сидеть, тогда на одного уника будет 10 хитов. Можно придти с поиска, прочитать объяву, уйти, тогда будет 2 хита на уник. Можно читать статьи по сайту - будет 7 хитов. Можно попасть на главную, тогда у главной будет 50% всех хитов, Вы ее закэшируете и все (например, на сайте rbc.ru закэшированная главная и основные новости).

Неактивен

 

#11 14.03.2010 11:39:21

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Сайт с высокой посещаемостью

Я бы еще из вашей конфигурации выкинул FreeBSD, Apache и все дела.
Без этих трех компонентов будет работать быстрее wink

Неактивен

 

#12 14.03.2010 13:14:38

mikki11
Участник
Зарегистрирован: 14.03.2010
Сообщений: 14

Re: Сайт с высокой посещаемостью

Спасибо за помощь! Буду теперь осмыслевать smile))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson