Middle+
74
questionbank

Что такое горизонтальное шардирование?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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

Преимущества горизонтального шардирования:

  • Масштабируемость: Позволяет обрабатывать растущий объем данных и трафика путем добавления новых серверов для хранения шардов.
  • Производительность: Уменьшает объем данных, с которыми работает каждый сервер, что ускоряет выполнение запросов.
  • Доступность: Если один шард становится недоступным, остальные шарды продолжают работать.
  • Уменьшение нагрузки: Распределяет нагрузку на ввод/вывод по нескольким серверам.

Слабые стороны горизонтального шардирования:

  • Сложность: Внедрение и управление шардированием требует значительных инженерных усилий.
  • Распределенные транзакции: Транзакции, охватывающие несколько шардов, сложны в реализации и могут снизить производительность.
  • Ребалансировка: Перераспределение данных между шардами при изменении нагрузки или добавлении новых серверов может быть сложным и ресурсоемким процессом.
  • Запросы между шардами: Запросы, требующие объединения данных из разных шардов (запросы с JOIN), могут быть неэффективными.

Методы шардирования:

  • Шардирование по диапазону: Данные распределяются на основе диапазона значений в ключе шардирования.
  • Шардирование по хэшу: Данные распределяются на основе хэш-значения ключа шардирования.
  • Директорийное шардирование: Таблица сопоставления указывает, на каком шарде находятся определенные данные или диапазоны данных.

Пример концепции шардирования (упрощенно):

Имеется таблица пользователей с большим объемом данных. Вместо хранения всех пользователей на одном сервере, мы можем разделить их на шарды по первой букве фамилии:

  • Шард 1: Пользователи с фамилиями от А до Е
  • Шард 2: Пользователи с фамилиями от Ж до Л
  • Шард 3: Пользователи с фамилиями от М до С
  • Шард 4: Пользователи с фамилиями от Т до Я

Каждый шард хранится на отдельном сервере.

php