Сервер баз данных (или сервер БД) - это важный сегмент в жизни любой компании, который должен обеспечивать целостность, сохранность и доступность данных в режиме 24/7. Что же это за серверы, какие типы БД бывают и какое железо под них необходимо читайте далее.

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

Существует много самых разнообразных современных серверов, повышающих рабочие показатели БД, однако существует большое множество типов баз данных, и какой же сервер нужен для каждого типа?

Виды баз данных

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

Базы данных SQL делятся на несколько видов:

  • MySQL - реляционные open source базы данных, предназначенные для небольших и средних проектов и представляющие собой недорогие и надежные инструменты. MySQL-БД поддерживают большое количество таблиц, имеют множество расширений и плагинов, упрощающих работу с системами. Они просты в установке, могут быть интегрированы в другие БД, и подходят для работы в любых CMS, фреймворки и языках программирования. В основном они используются локальными или удаленными клиентами, позволяя им работать с таблицами разных типов, поддерживающих полнотекстовый поиск или выполняющих транзакции на уровне отдельных записей;
  • PostgreSQL - занимает второе место по востребованности среди open source SQL-БД. Обладает большим числом встроенных функций и дополнений, в том числе для масштабирования в кластер и шардинга таблиц. Используется для работы со сложными данными при высоких требованиях к их сохранности, поскольку стабильна и практически не «ломается». Позволяет работать со структурированными данными, но поддерживает JSON/BSON, что дает некоторую гибкость в схеме данных. Также PostgreSQL предназначена для создания, хранения и извлечения сложных структур данных. Она поддерживает самые различные типы данных (среди них - числовые, текстовые, булевы, денежные, бинарные данные, сетевые адреса, xml и другие);
  • MSSQL - многопользовательский программный продукт, разработанный компанией Microsoft, обладающий высокой производительностью и отказоустойчивостью, тесно интегрированный с ОС Windows. Этот сервер поддерживает удаленные подключения, работает с многими популярными типами данных, дает возможность создавать триггеры и хранимые данные, имеет практичные и удобные утилиты для настройки. В основе языка запросов этой СУБД используется Transact-SQL (совместная разработка Microsoft и Sybase). При этом Transact-SQL - это реализация стандарта ANSI/ISO по SQL (структурированному языку запросов), но имеющая некоторые расширения. MSSQL широко применяется не только в веб-проектах, но и в desktop-программах. Ее используют при работе с реляционными БД различных размеров, начиная от персональных и заканчивая крупными базами данных в масштабе предприятия. Она задействуется в случаях, когда функционала MySQL оказывается недостаточно;
  • Oracle Database - это многомодельная объектно-реляционная СУБД, обычно используемая при выполнении задач по оперативной обработке транзакций (OLTP), обслуживанию хранилищ данных (DW) и для рабочих нагрузок по смешанным (OLTP и DW) базам данных. Она включает в себя табличные пространства, управляющие файлы, журналы и архивные журналы, файлы трассировки изменения блоков, ретроспективные журналы, файлы резервных копий (RMAN). Используя эту БД, можно как автоматизировать обычные бизнес-операции, так и выполнять динамический многомерный анализ данных (OLAP), проводить операции с документами xml-формата и управлять разделенной и локальной информацией.

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

Как подобрать сервер под базу данных?

Специфика работы серверов БД состоит в том, что обработка данных, как правило, происходит транзакционно, то есть СУБД запрашивает информацию небольшими порциями, проводит над ней операции и затем сохраняет. Такая специфика работы определяет ряд требований к серверному оборудованию:

  • для кэширования наиболее интенсивно используемых участков базы данных задействуется большой объем оперативной памяти;
  • дисковая подсистема должна характеризоваться высокой производительностью, то есть способностью обрабатывать большое количество небольших запросов в единицу времени - IOPS (input/output per second);
  • для обработки запросов и операций над данными необходима высокая вычислительная мощность.

На выбор сервера под базу данных также влияют нагрузка на оборудование, зависящая от размеров файлов БД, количество одновременно подключенных к серверу пользователей, интенсивности и особенности работы пользователей (ввод и редактирование, просмотр, формирование «тяжелых» запросов), наличие резидентного ПО, характер задач, выполняемых сервером.

Сервера под базу данных должны соответствовать аппаратным требованиям, зависящим от числа пользователей:

  • для 10 пользователей требуется сервер с частотой процессора не менее 2,2 ГГц, не менее двух ядер на каждый процессор, не менее 4 Гб оперативной памяти типа DDR3, не менее 3 SAS/SATA дисков, имеющими скорость вращения 7200 об/мин.;
  • для 20 пользователей требуется сервер с частотой процессора не менее 2,3 ГГц, не менее четырех ядер на каждый процессор, не менее 6 Гб оперативной памяти типа DDR3, не менее 3 SAS/SATA дисков, имеющими скорость вращения 7200 об/мин.;
  • для 50 пользователей требуется сервер с частотой процессора не менее 2,5 ГГц, не менее восьми ядер на каждый процессор, не менее 16 Гб оперативной памяти типа DDR3, не менее 6 SAS/SATA дисков, имеющими скорость вращения 7200 об/мин.;
  • для 100 пользователей требуется сервер с двумя процессорами частотой не менее 2,8 ГГц, не менее десяти ядер на каждый процессор, не менее 16 Гб оперативной памяти типа DDR4, не менее 10 SAS дисков, имеющими скорость вращения 10000 об/мин.;
  • для 200 пользователей требуется сервер с четыремя процессорами частотой не менее 2,8 ГГц, не менее 8 ядер на каждый процессор, не менее 64 Гб оперативной памяти типа DDR4, не менее 16 SAS дисков, имеющими скорость вращения 10000 об/мин.;
  • для 500 пользователей требуется сервер с четыремя процессорами частотой процессора не менее 3 ГГц, не менее 16 ядер на каждый процессор, не менее 128 Гб оперативной памяти типа DDR4, не менее 24 SAS дисков, имеющими скорость вращения 10000 об/мин.;

Чтобы обеспечить отказоустойчивый доступ к данным, стоит организовать кластер серверов БД с использованием программного обеспечения, предназначенного для конкретной СУБД и с соблюдением всех рекомендаций ее производителя.

Требования к каналам связи серверов зависят от специфики проекта и предполагаемого количества одновременно работающих пользователей. Эти показатели определяются по результатам нагрузочного тестирования проекта.

Например, при одновременной работе с типовым проектом 100 пользователей необходимая ширина канала сервера баз данных:

  • минимальная: 100 Мбит/сек;
  • рекомендуемая: 1 Гбит/сек.

Ширина канала при этом находится в линейной зависимости от количества пользователей.

Что выбрать: SSD или HDD? А может NVMe?

Один из самых важных критериев выбора сервера под БД - это подбор накопителя. Определиться, что лучше, твердотельный SSD или жесткий HDD, довольно сложно.

HDD на текущий момент используются только в качестве хранилищ или в системах, где скорость дисковой подсистемы не особо принципиальна. Но даже в таких серверах БД предпочтительней операционную систему и основные приложения размещать на твердотельных накопителях, чтобы ускорить загрузку и запуск приложений.

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

Главное преимущество SSD перед HDD состоит в том, что «твердотельники» существенно ускоряют работу сервера. Если классический накопитель осиливает чтение данных на скорости до 230 Мб/с, SSD могут прочитать до 700 Мб/с и более. Разница в скорости записи также существенна - SSD записывают 500 Мб/с и более, а HDD, в лучшем случае - 90 Мб/с. Если необходимо быстрое решение задач при большой загрузке оборудования - то стоит остановить свой выбор на SSD.

HDD или SSD для сервера базы данных

Сравниваем IOPS для наиболее популярных SSD.

Кроме того, SSD отличаются от HDD независимостью скорости чтения от фрагментации файлов, меньшими габаритами и весом (SSD могут быть конструктивно выполнены в корпусах гораздо меньших размеров, чем HDD). Однако число циклов перезаписи у твердотельных накопителей меньше, чем у жестких дисков, и стоят SSD дороже.

Также активно «наступает на пятки» HDD-дискам накопитель стандарта NVMe (Non-Volatile Memory Express). Этот стандарт был разработан для максимально полного использования потенциала технологии флэш-памяти. Современные накопители NVMe Gen3 на базе PCI повышают производительность серверов до 5000 Мб/с, то есть в десять раз больше аналогичного показателя для SSD SATA\SAS.

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

Но тотального перехода с HDD и SSD стандарта SATA\SAS на NVMe пока не предвидится, поскольку только на базе жестких и твердотельных накопителей возможна сборка аппаратных RAID-массивов, а RAID нужно строить обязательно, поскольку вероятность выхода из строя дисков очень высока, а время простоев сервера баз данных должно быть равна нулю, либо хотя бы к нему стремиться. Хотя стоит отметить, что компания DELL анонсировала поддержку аппаратного RAID на NVMe накопителях в своём новейшем поколении серверов Gen15. Увы, тестов и обзоров на момент написания статьи ещё нет.

А самый дешёвый SSD не быстрее будет?

Стоимость SSD выше, по сравнению с жесткими дисками, однако экономить на покупке твердотельника на стоит.

Если приобрести самый дешевый SSD, можно свести на нет производительность сервера: накопители перестанут справляться с растущим количеством операций записи, что может привести к задержкам в работе RAID-массивов и к выходу накопителей из строя. Потребительский SSD, на который взвалили такую огромную нагрузку, перейдет в режим чтения Read Only, то есть записать в него информацию станет невозможно.

Также в серверных SSD доступ к ячейкам памяти может производиться через 8-16 каналов, каждый из которых может иметь от 16 до 64 подканалов. В клиентских SSD имеются лишь 2-4 канала с 4-8 подканалами.

Кроме того, если выбрать вместо корпоративного SSD накопитель клиентского класса, то он окажется неподходящим для чтения или записи в условиях нагрузки 24/7. Цикл нагрузки клиентских SSD строится по схеме 20/80 (20% времени в активной работе, 80% - в режиме ожидания или в спящем режиме).

При оценке пригодности SSD для сервера базы данных следует обращать внимание значения IOPS, Latency и DPWD.

Наши рекомендации

Мы рекомендуем использовать кластеры баз данных из нескольких серверов, чтобы обеспечить отказоустойчивость. Надёжными представителями отказоустойчивости являются производители Hewlett Packard Enterprise и DELL. Новые серверы не всегда могут быть по карману, поэтому мы предлагаем нашим клиентам взять сервер на вторичном рынке, при этом в идеальном состоянии и с гарантией 2 года. Например:

Наши рекомендации