В процессе развития бизнеса растёт объём необходимых данных и операций с ними. В определённый момент один сервер перестаёт справляться с нагрузкой, и тогда необходимо масштабирование баз данных. Как осуществляется этот процесс?
Вертикальное масштабирование
Вертикальное масштабирование предполагает наращивание мощностей сервера. Основным преимуществом метода является его простота. Нет необходимости переписывать код при добавлении мощностей, а управлять одним крупным сервером намного проще, чем целой системой. Это же является и основным недостатком — масштабирование ресурсов одного сервера имеет вполне конкретные аппаратные ограничения. Также стоит учесть стоимость такого решения: сервер с кратным объёмом вычислительных ресурсов в большинстве случаев оказывается дороже, чем несколько менее мощных серверов, дающих в сумме такую производительность.
Горизонтальное масштабирование
Горизонтальное масштабирование означает увеличение производительности за счёт разделения данных на множество серверов. Такой способ предполагает увеличение производительности без снижения отказоустойчивости. Существует три основных типа горизонтального масштабирования.
Репликация
Этот термин подразумевает копирование данных между серверами. При использовании такого метода выделяют два типа серверов: master и slave. Мастер используется для записи или изменения информации, слейвы — для копирования информации с мастера и её чтения. Чаще всего используется один мастер и несколько слейвов, так как обычно запросов на чтение больше, чем запросов на изменение. Главное преимущество репликации — большое количество копий данных. Так, если даже головной сервер выходит из строя, любой другой сможет его заменить. Однако как механизм масштабирования репликация не слишком удобна. Причина тому — рассинхронизация и задержки при передаче данных между серверами. Чаще всего репликация используется как средство для обеспечения отказоустойчивости вместе с другими методами масштабирования.
![Репликация баз данных Репликация баз данных](/wp-content/uploads/2020/05/03_scale.png)
Партицирование/секционирование
Данный метод масштабирования заключается в разбиении данных на части по какому-либо признаку. Например, таблицу можно разбить на две по признаку чётности. Причиной для использования партицирования является необходимость в повышении производительности. Это происходит из-за того, что поиск осуществляется не по всей таблице, а лишь по её части. Другим преимуществом этого метода является возможность быстрого удаления неактуального фрагмента таблицы.
![Секционирование баз данных Секционирование баз данных](/wp-content/uploads/2020/05/04_scale.png)
Шардирование/шардинг/сегментирование
Шардинг — это принцип проектирования базы данных, при котором части таблицы хранятся раздельно, на разных физических серверах. Шардинг является наиболее приемлемым решением для крупномасштабной деятельности, особенно если его использовать в паре с репликацией. Но стоит отметить, что это достаточно сложно организовать, так как необходимо учитывать межсерверное взаимодействие.
![Сегментирование баз данных Сегментирование баз данных](/wp-content/uploads/2020/05/05_scale.png)
Резюме
В связи с созданием корпоративных высоконагруженных систем, в которых объём информации и пользователей растёт каждый день, возможность масштабирования системы — один из ключевых факторов при её выборе. Ведь если каждая стадия развития бизнеса будет сопровождаться долгим и сложным процессом оптимизации информационного сопровождения, стоит задуматься о правильности выбора информационной системы.