SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 26.03.2010 13:23:30

Coder2010
Участник
Зарегистрирован: 26.03.2010
Сообщений: 2

Большая база - проблемы, предостережения, выбор сервера

Требуется создать на сайте поиск предложений от десятка фирм. Предложения предполагалось импортировать с сайтов фирм, используя XML-шлюзы. Начал делать и голова пошла кругом от объемов.

Лишь у одной фирмы насчитывается порядка 8 тыс. категорий и в каждой порядка 30 - 80 тыс. наименований. Сделал пробную загрузку лишь 200 категорий с одной фирмы, размер базы MySQL уже получил 460 Мб. Нетрудно посчитать, что все предложения фирмы - это база порядка 20 Гб. А если еще и десяток фирм учесть, то 200 Гб!

Посмотрел ограничения. Для MySQL 3.23+ база может быть до 8 миллионов терабайт. (2 ^ 63). Т.е. в этом смысле вроде бы никаких проблем. Но какое железо нужно для того чтобы ворочить такую базу? И какую структуру лучше сделать?

Сейчас структура довольно простая:
1. Список предложений в одной таблице BIGINT-значений. Каждое предложение содержит лишь ссылки (десяток цифр) на разные справочники. 
2. Собственно, справочники, отдельные таблицы (INT-значений в каждой). 

Поиск должен будет представлять собой форму для отбора предложений по параметрам. Отправляя запрос, предполагается, что результат должен появляться через несколько секунд. А что-то я не уверен теперь что это реально.

Выборка - это постранично разбитый список. Для построения выбранной страницы списка потребуется обращение к справочникам, т.е. сложный запрос MySQL.

Буду благодарен выслушать любые советы! Может кто-то делал подобное и поделится опытом, что требуется для реализации подобной задачи.

Неактивен

 

#2 26.03.2010 14:21:01

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

Re: Большая база - проблемы, предостережения, выбор сервера

Слишком общие слова, но, если грамотно сделать базу, то может оказаться не так уже плохо.
Нормальные индексы — и будет работать. Скорее всего, прийдется шардировать.

3.23 — это *очень* старый сервер. Столь же старый, сколь BIGINT *большое* число. В обычный
INT UNSIGNED влезает 4 млрд строк. Даже если у Вас будет 10 тысяч категорий по 100 тысяч
наименований — это 1 миллион строк на фирму. Т.е. Вы сможете обслужить до 4000 таких
фирм. Кажется, хватит smile

Неактивен

 

#3 26.03.2010 15:03:14

Coder2010
Участник
Зарегистрирован: 26.03.2010
Сообщений: 2

Re: Большая база - проблемы, предостережения, выбор сервера

Спасибо за ответ.

Поисковая форма на сайте должна содержать примерно те же поля на которые ссылаются предложения, т.е. оптимизировать (создать индексы) под любой из видов запроса вроде как не реально. Разве что продумать наиболее частые запросы и создать оптимальные индексы для них.

Ссылку на вестию 3.23 я нашел на википедии. Так то конечно, будет последняя версия базы.

Насчет INT и BIGINT. Я отталкивался от документации:

INT[(M)] [UNSIGNED] [ZEROFILL]
Целое число нормального размера. Диапазон со знаком от -2147483648 до 2147483647.

BIGINT[(M)] [UNSIGNED] [ZEROFILL]
Большое целое число. Диапазон со знаком от -9223372036854775808 до 9223372036854775807.

А, хотя если без знака, то для INT, от 0 до 4 294 967 295.

По максимуму 8 000 кат. * 80 000 наим. * 10 фирм = 6 400 000 000 т.е. не хватает уже. Да плюс еще какие-то предложения могут устаревать и удаляться из базы не сразу.

Мне тут вот какая мысль пришла в голову. Допустим база 200 Гб. Скорость чтения с жесткого диска не более 100 мб/сек. Пусть даже какой-то супер реид на сервере, то все равно не более 500 мб/сек. Т.е. теоретически запрос по базе в 200 Гб может занять 400 секунд. Многовато... Одним сервером всяко похоже не обойтись.

Неактивен

 

#4 26.03.2010 16:22:15

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

Re: Большая база - проблемы, предостережения, выбор сервера

Хм, и правда, как я так считал? Видимо, где-то лишнюю тысячу упустил smile

Неактивен

 

Board footer

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