В контексте базы данных я столкнулся с горизонтальной масштабируемостью как одним из преимуществ баз данных NOSQL. Что означает этот термин?
Как бы это сравнить с вертикальным масштабированием ?
В контексте базы данных я столкнулся с горизонтальной масштабируемостью как одним из преимуществ баз данных NOSQL. Что означает этот термин?
Как бы это сравнить с вертикальным масштабированием ?
Ответы:
Горизонтальное масштабирование
Горизонтальное масштабирование по существу строится, а не вверх. Вы не идете и не покупаете больший более мощный сервер и переносите на него всю свою нагрузку, вместо этого вы покупаете 1+ дополнительных серверов и распределяете нагрузку между ними.
Горизонтальное масштабирование используется, когда у вас есть возможность запускать несколько экземпляров на серверах одновременно. Обычно гораздо сложнее перейти с 1 сервера на 2 сервера, чем с 2 на 5, 10, 50 и т. Д.
Решив проблемы запуска параллельных экземпляров, вы можете воспользоваться преимуществами таких сред, как Amazon EC2, облачная служба Rackspace, GoGrid и т. Д., Поскольку вы можете увеличивать и уменьшать экземпляры в зависимости от потребностей, снижая необходимость платить за мощность сервера. Вы не используете только для покрытия этих пиковых нагрузок.
Реляционные базы данных являются одним из наиболее сложных элементов для параллельного выполнения полного чтения / записи.
Я видел, как Дэмиен Кац говорил о CouchDB в StackOverflow DevDays в Остине, и одним из его основных направлений его создания были эти параллельные примеры. Так как это было в центре внимания с самого первого дня, было бы гораздо лучше использовать преимущества горизонтального масштабирования.
Вертикальное масштабирование
Вертикальное масштабирование - это наоборот, наращивание, а не из. Пойдите и купите самое мощное оборудование, которое вы можете себе позволить, и разместите на нем свое приложение, базу данных и т. Д.
Реальный мир
Конечно, оба они имеют свои преимущества и недостатки. Часто комбинация этих двух используется для окончательного решения.
У вас может быть основная база данных, в которую все пишут и читают данные в реальном времени на большом оборудовании. Затем распространил копии базы данных только для чтения для более сложного анализа данных и составления отчетов, где актуальность не так важна Тогда интерфейсное веб-приложение может работать на нескольких веб-серверах за балансировщиком нагрузки.
Горизонтальное масштабирование отлично подходит, когда вам нужно приложение, которое должно обрабатывать большое количество записей и параллельных чтений. Подумайте о веб-сайте, который получает огромное количество трафика и должен регистрировать это, или должен регистрировать большое количество событий.
Я предполагаю, что самый большой плюс в том, что горизонтальное масштабирование может быть сделано с использованием стандартного аппаратного обеспечения, и есть только так много, что вы можете сделать с вертикальным масштабированием и попыткой увеличить существующие ящики.
Традиционные RDBMS здесь терпят неудачу по разным причинам (включая тот факт, что они являются ACID), и решения NoSQL здесь превосходны, потому что их можно легко масштабировать по горизонтали - но это другая история (RDBMS / SQL против NoSQL.)
Некоторые люди в отрасли используют разные термины для обозначения одного и того же: