Что СЛИШКОМ БОЛЬШОЕ для базы данных? - PullRequest
8 голосов
/ 11 сентября 2010

У меня есть приятель, который запускает веб-приложение для людей, выставляющих автомобили на продажу.Есть несколько тысяч клиентов, которые используют его, и у каждого клиента есть сотни, а иногда и тысячи строк в базе данных (некоторые из них работают в течение 5 лет, продавая сотни автомобилей каждый месяц, и десятки строк на продажу (комментарии, сообщения,так далее)).Он запустил эту систему в одной базе данных SQL Server на одном физическом сервере с 20 ГБ или ОЗУ и парой процессоров за все время, без проблем.Это какое-то чудо?

Так же, как и большинство программистов, я не администратор баз данных и просто обожаю, благодаря ORM и т. Д. Везде, где я смотрю, люди говорят о необходимости осколка или получения отдельногосервер базы данных для крупных пользователей веб-приложения.Почему это?Действительно ли неэффективно иметь большую БД с множеством или строками?Должен ли я планировать использовать Кассандру или что-то в этом роде, или я могу рассчитывать на хорошее расширение с помощью Postgres?

Ответы [ 6 ]

9 голосов
/ 11 сентября 2010

Лично я не думаю, что вы описали такую ​​большую базу данных. Сервер (20 гигабайт оперативной памяти?;)) Звучит прилично. Это больше об использовании и дизайне. Если база данных проиндексирована и хорошо спроектирована, она может вырасти намного, намного больше на текущем оборудовании.

Прежде чем приступить к какому-либо переключению, я просто посмотрю на архивирование бесполезных данных и оптимизацию запросов, если есть опасения по поводу проблем с производительностью.

5 голосов
/ 11 сентября 2010

Причина разделения и разделения серверов БД заключается в том, что в какой-то момент будет дешевле использовать несколько более дешевых компьютеров, чем одну дорогую. Цена на оборудование не зависит от производительности линейно, и как только вы достигнете определенной точки, будет гораздо дешевле получить вдвое больше машин, чем получить машину, которая в два раза быстрее.

3 голосов
/ 11 сентября 2010

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

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

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

Также важно подумать о времени восстановления серверов и планах восстановления.
Что произойдет, когда ваша машина умрет, вы можете заменить ее в оговоренное время?Можете ли вы восстановить данные из резервных копий за это время?

SQL Server или другие базы данных корпоративного класса не должны иметь проблем с базами данных 10 или 100 ГБ, если они не слишком плохо спроектированы.(У нас есть несколько машин с такой мощностью / использованием, которые вообще не борются.).

3 голосов
/ 11 сентября 2010

У вас не должно быть проблем с сервером SQL, Oracle или любой современной реляционной или нереляционной базой данных. Я управлял базами данных с сотнями миллионов записей и терабайтами данных.

2 голосов
/ 11 сентября 2010

Базы данных чрезвычайно эффективны для хранения и извлечения реляционных данных (то есть данных, которые структурированы и имеют ссылки на другие данные) - это то, для чего они предназначены.Честно говоря, 99% людей, извергающих информацию о магазинах с ценными бумагами и Кассандре, и тому подобное, понятия не имеют, что они делают.Сервер баз данных отлично подходит для хранения больших объемов данных, особенно если вы готовы потратить немного усилий на его правильную настройку.

Тем не менее, существуют варианты использования Cassandra et.и др.- если у вас в основном неструктурированные данные о ключе / значении, или вам не нужна согласованность или вы хотите разделить на избыточность, возможно, стоит исследовать это.хорошо с приличным сервером базы данных - не переключайтесь, пока вы не определите почему вам нужно переключиться.Переключение - это хорошо, просто убедитесь, что вы переключаетесь, потому что оно лучше отвечает вашим потребностям, а , а не , потому что это "крутая вещь в масштабе сети"

2 голосов
/ 11 сентября 2010

На мой взгляд, это ничего.Наличие десятков миллионов строк в нескольких таблицах с размером базы данных, превышающим 10 ГБ, не вызвало проблем для MS SQL Server.Конечно, это не слишком быстро с таким большим количеством данных, но в остальном он работает просто отлично.

И, чтобы ответить на вопрос, слишком большой - настолько большой, что это вызывает проблемы.И когда это начнет вызывать проблемы, зависит от структуры таблицы и ваших требований к производительности.

...