Что такое сегментирование базы данных?
Сегментирование баз данных – это хранение большой базы данных на нескольких компьютерах. Одна машина или сервер баз данных может хранить и обрабатывать только ограниченный объем данных. Сегментирование баз данных преодолевает это ограничение, разделяя данные на более мелкие фрагменты или сегменты и сохраняя их на нескольких серверах баз данных. Все серверы баз данных обычно используют одни и те же базовые технологии и работают вместе для хранения и обработки больших объемов данных.
Почему сегментирование базы данных так важно?
По мере роста приложения количество пользователей приложения и объем хранимых в нем данных со временем увеличивается. База данных становится проблемным местом, если объем данных становится слишком большим и слишком много пользователей пытаются использовать приложение для одновременного чтения или сохранения информации. Приложение замедляется и влияет на качество обслуживания клиентов. Сегментирование баз данных является одним из методов решения этой проблемы, поскольку обеспечивает параллельную обработку небольших наборов данных между сегментами.
В чем преимущества сегментирования баз данных?
Организации используют сегментирование баз данных для получения следующих преимуществ:
Уменьшение времени ответа
Извлечение данных в одной большой базе данных занимает больше времени. Система управления базами данных должна выполнять поиск по многим строкам для получения правильных данных. И наоборот, сегменты данных содержат меньше строк, чем во всей базе данных. Таким образом, получение определенной информации или выполнение запроса из сегментированной базы данных занимает меньше времени.
Избегание полного простоя обслуживания
Если компьютер, на котором размещена база данных, выходит из строя, приложение, зависящее от базы данных, также выходит из строя. Сегментирование базы данных предотвращает это, распределяя части базы данных между разными компьютерами. Сбой одного из компьютеров не приводит к завершению работы приложения, поскольку оно может работать с другими функциональными сегментами. Сегментирование также часто выполняется в сочетании с репликацией данных между сегментами. Таким образом, если один сегмент становится недоступным, можно получить доступ к данным и восстановить их из альтернативного сегмента.
Эффективное масштабирование
Растущая база данных потребляет больше вычислительных ресурсов и в конечном итоге достигает емкости хранилища. Организации могут использовать сегментирование баз данных для добавления дополнительных вычислительных ресурсов для поддержки масштабирования базы данных. Они могут добавлять новые сегменты во время выполнения, не закрывая приложение для обслуживания.
Как работает сегментирование базы данных?
База данных хранит информацию в нескольких наборах данных, состоящих из столбцов и строк. Сегментирование базы данных разбивает один набор данных на секции или сегменты. Каждый сегмент содержит уникальные строки информации, которые можно хранить отдельно на нескольких компьютерах, называемых узлами. Все сегменты работают на отдельных узлах, но имеют общую схему или дизайн исходной базы данных.
Например, несегментированная база данных, содержащая набор данных для записей клиентов, может выглядеть следующим образом.
Идентификатор клиента |
Название |
Штат |
1 |
Иван |
Калифорния |
2 |
Ольга |
Вашингтон |
3 |
Пол |
Аризона |
4 |
Ван |
Джорджия |
Сегментирование включает в себя разделение разных строк информации из таблицы и хранение их на разных машинах, как показано ниже.
Компьютер A
Идентификатор клиента |
Название |
Штат |
1 |
Иван |
Калифорния |
2 |
Ольга |
Вашингтон |
Компьютер Б
Идентификатор клиента |
Название |
Штат |
3 |
Пол |
Аризона |
4 |
Ван |
Джорджия |
Сегменты
Разделенные фрагменты данных называются логическими сегментами. Компьютер, на котором хранится логический сегмент, называется физическим сегментом или узлом базы данных. Физический сегмент может содержать несколько логических сегментов.
Ключ сегмента
Разработчики программного обеспечения используют ключ сегмента, чтобы определить, как разбить набор данных на разделы. Столбец в наборе данных определяет, какие строки данных объединяются в сегмент. Разработчики баз данных выбирают ключ сегмента из существующего столбца или создают новый.
Архитектура без совместного использования
Сегментирование баз данных работает на основе архитектуры без совместного использования. Каждый физический сегмент работает независимо и не знает о других сегментах. Только физические сегменты, содержащие запрашиваемые вами данные, будут обрабатывать данные параллельно за вас.
Программный уровень координирует хранение данных и доступ к ним с этих нескольких сегментов. Например, некоторые типы технологий баз данных имеют встроенные функции автоматического сегментирования. Разработчики программного обеспечения также могут писать код сегментирования в своем приложении для хранения или извлечения информации из правильного сегмента или сегментов.
Каковы методы сегментирования базы данных?
Методы сегментирования базы данных применяют разные правила к ключу сегмента для определения правильного узла для конкретной строки данных. Ниже приведены распространенные архитектуры сегментирования.
Сегментирование на основе диапазона
Сегментирование на основе диапазона, или динамическое сегментирование, разделяет строки базы данных на основе диапазона значений. Затем конструктор баз данных назначает ключ сегмента соответствующему диапазону. Например, конструктор баз данных разбивает данные в соответствии с первым алфавитом имени клиента следующим образом.
Название |
Ключ сегмента |
Начиная с A до I |
A |
Начиная с J до S |
B |
Начиная с T до Z |
C |
При записи данных клиента в базу данных приложение определяет правильный ключ сегмента, проверяя имя клиента. Затем приложение сопоставляет ключ со своим физическим узлом и сохраняет строку на этом компьютере. Аналогичным образом приложение выполняет обратное сопоставление при поиске определенной записи.
Преимущества и недостатки
В зависимости от значений данных сегментирование на основе диапазона может привести к перегрузке данных на одном физическом узле. В нашем примере сегмент A (содержащий имена, начинающиеся на букву от A до I) может содержать гораздо большее количество строк данных, чем сегмент C (содержащий имена, начинающиеся на букву от T до Z). Однако его проще реализовать.
Хэшированное сегментирование
Хэшированное сегментирование назначает ключ сегмента каждой строке базы данных с помощью математической формулы, называемой хэш-функцией. Функция хэширования берет информацию из строки и выдает хэш-значение. Приложение использует хэш-значение в качестве ключа сегмента и сохраняет информацию в соответствующем физическом сегменте.
Разработчики программного обеспечения используют хэшированное сегментирование для равномерного распределения информации в базе данных между несколькими сегментами. Например, программное обеспечение разделяет записи клиентов на два сегмента с альтернативными значениями хэша 1 и 2.
Название |
Значение хэша |
Иван |
1 |
Ольга |
2 |
Пол |
1 |
Ван |
2 |
Преимущества и недостатки
Хотя хэшированное сегментирование приводит к равномерному распределению данных между физическими сегментами, оно не разделяет базу данных в зависимости от значения информации. Поэтому разработчики программного обеспечения могут столкнуться с трудностями при переназначении хэш-значения при добавлении дополнительных физических сегментов в вычислительную среду.
Сегментирование каталогов
Сегментирование каталогов использует таблицу поиска для сопоставления информации базы данных с соответствующим физическим сегментом. Таблица поиска похожа на таблицу в электронной таблице, которая связывает столбец базы данных с ключом сегмента. Например, на следующей диаграмме показана таблица поиска цветов одежды.
Цвет |
Ключ сегмента |
Голубой |
A |
Красный |
B |
Желтый |
C |
Черный |
D |
Когда приложение хранит информацию об одежде в базе данных, оно ссылается на таблицу поиска. Если платье синего цвета, приложение сохраняет информацию в соответствующем сегменте.
Преимущества и недостатки
Разработчики программного обеспечения используют сегментирование каталогов, потому что оно гибкое. Каждый сегмент представляет собой значимое представление базы данных и не ограничен диапазонами. Однако сегментирование каталогов завершается неудачей, если таблица поиска содержит неправильную информацию.
Геосегментирование
Геосегментирование разделяет и хранит информацию базы данных в соответствии с географическим положением. Например, веб-сайт службы знакомств использует базу данных для хранения информации о клиентах из разных городов следующим образом.
Название |
Ключ сегмента |
Иван |
Калифорния |
Ольга |
Вашингтон |
Пол |
Аризона |
Разработчики программного обеспечения используют города в качестве ключей сегментов. Они хранят информацию о каждом клиенте в физических сегментах, географически расположенных в соответствующих городах.
Преимущества и недостатки
Геосегментирование позволяет приложениям быстрее извлекать информацию благодаря меньшему расстоянию между сегментом и клиентом, делающим запрос. Если шаблоны доступа к данным в основном основаны на географическом положении, то это работает хорошо. Однако геосегментирование также может привести к неравномерному распределению данных.
Как оптимизировать сегментирование базы данных для равномерного распределения данных
Когда на определенных физических сегментах возникает перегрузка данных, а другие остаются недогруженными, это приводит к появлению точек доступа в базах данных. Точки доступа замедляют процесс извлечения данных из базы данных, что противоречит цели сегментирования данных.
Хороший выбор ключа сегмента позволяет равномерно распределить данные по нескольким сегментам. При выборе ключа сегмента разработчики баз данных должны учитывать следующие факторы.
Кардинальность
Кардинальность описывает возможные значения ключа сегмента. Она определяет максимальное количество возможных сегментов в отдельных столбцово-ориентированных базах данных. Например, если разработчик базы данных выбирает поле данных «да/нет» в качестве ключа сегмента, количество сегментов будет ограничено двумя.
Частота
Частота – это вероятность хранения определенной информации в определенном сегменте. Например, дизайнер базы данных выбирает возраст в качестве осколочного ключа для фитнес-сайта. Большинство записей может попасть в узлы для подписчиков в возрасте 30–45 лет и привести к появлению точек доступа в базе данных.
Монотонное изменение
Монотонное изменение – это скорость смены ключа сегмента. Монотонно увеличивающийся или уменьшающийся ключ сегмента приводит к несбалансированности сегментов. Например, база данных отзывов разделена на три разных физических сегмента следующим образом.
- Сегмент A хранит отзывы клиентов, совершивших 0–10 покупок.
- Сегмент B хранит отзывы клиентов, которые совершили 11–20 покупок.
- Сегмент C хранит отзывы клиентов, которые совершили 21 или более покупок.
По мере роста бизнеса клиенты совершают более «21 или более покупок». Приложение хранит их отзывы в сегменте C. Это приводит к несбалансированному сегменту, поскольку сегмент C содержит больше записей обратной связи, чем другие сегменты.
Каковы альтернативы сегментированию баз данных?
Сегментирование базы данных – это стратегия горизонтального масштабирования, при которой выделяются дополнительные узлы или компьютеры для совместного использования рабочей нагрузки приложения. Организации получают выгоду от горизонтального масштабирования благодаря отказоустойчивой архитектуре. Когда один компьютер выходит из строя, остальные продолжают работать без сбоев. Разработчики баз данных сокращают время простоя за счет распределения логических сегментов между несколькими серверами.
Однако сегментирование – одна из нескольких других стратегий масштабирования базы данных. Изучите некоторые другие методы и поймите, как они соотносятся между собой.
Вертикальное масштабирование
Вертикальное масштабирование повышает вычислительную мощность одной машины. Например, ИТ-команда добавляет ЦП, оперативную память и жесткий диск к серверу баз данных для обработки растущего трафика.
Сравнение сегментирования базы данных и вертикального масштабирования
Вертикальное масштабирование обходится дешевле, но вычислительные ресурсы, которые можно масштабировать вертикально, ограниченны. Между тем, сегментирование, стратегию горизонтального масштабирования, реализовать проще. Например, ИТ-команда устанавливает несколько компьютеров вместо обновления старого компьютерного оборудования.
Репликация
Репликация – это метод, который создает точные копии базы данных и сохраняет их на разных компьютерах. Разработчики баз данных используют репликацию для разработки отказоустойчивой системы управления реляционными базами данных. Когда один из компьютеров, на которых размещена база данных, выходит из строя, другие реплики остаются в рабочем состоянии. Репликация – обычная практика в распределенных вычислительных системах.
Сравнение сегментирования и репликации баз данных
Сегментирование базы данных не создает копии одной и той же информации. Вместо этого оно разбивает одну базу данных на несколько частей и сохраняет их на разных компьютерах. В отличие от репликации, сегментирование базы данных не обеспечивает высокую доступность. Сегментирование можно использовать в сочетании с репликацией для достижения масштабируемости и высокой доступности.
В некоторых случаях сегментирование базы данных может состоять из репликации определенных наборов данных. Например, розничный магазин, который продает товары покупателям из США и Европы, может хранить копии таблиц преобразования размеров на разных сегментах для обоих регионов. Приложение может использовать дубликаты таблицы преобразования для преобразования размера измерения без доступа к другим серверам баз данных.
поддержка разделов;
Разделение – это процесс разделения таблицы базы данных на несколько групп. Разделение бывает двух типов.
- При горизонтальном разделении база данных разбивается на строки.
- При вертикальном секционировании создаются разные разделы столбцов базы данных.
Сравнение сегментирования и разделения базы данных
Сегментирование базы данных похоже на горизонтальное разделение. Оба процесса разбивают базу данных на несколько групп уникальных строк. При разделении все группы данных хранятся на одном компьютере, но сегментирование баз данных распределяет их между разными компьютерами.
Каковы проблемы сегментирования баз данных?
Организации могут столкнуться с этими проблемами при внедрении сегментирования баз данных.
Точки доступа к данным
Некоторые сегменты становятся несбалансированными из-за неравномерного распределения данных. Например, один физический сегмент, содержащий имена клиентов, начинающиеся с A, получает больше данных, чем другие. Этот физический сегмент будет потреблять больше вычислительных ресурсов, чем другие.
Решение
Вы можете равномерно распределить данные, используя оптимальные ключи сегментов. Некоторые наборы данных лучше подходят для сегментирования, чем другие.
Сложность эксплуатации
Сегментирование базы данных является причиной сложности эксплуатации. Вместо управления одной базой данных разработчикам приходится управлять несколькими узлами базы данных. При получении информации разработчики должны запрашивать несколько сегментов и объединять фрагменты информации вместе. Эти операции извлечения могут усложнить аналитику.
Решение
В портфеле баз данных AWS настройка и операции с базами данных в значительной степени автоматизированы. Это упрощает работу с архитектурой сегментированной базы данных.
Затраты на инфраструктуру
Организации платят больше за инфраструктуру, добавляя больше компьютеров в качестве физических сегментов. Затраты на обслуживание могут возрасти, если вы увеличите количество машин в локальном центре обработки данных.
Решение
Разработчики используют эластичное вычислительное облако Amazon (Amazon EC2) для размещения и масштабирования сегментов в облаке. Вы можете сэкономить деньги, используя виртуальную инфраструктуру, которой полностью управляет AWS.
Сложность приложения
Большинство систем управления базами данных не имеют встроенных функций сегментирования. Это означает, что разработчики баз данных и программного обеспечения должны вручную разделять, распространять базу данных и управлять ею.
Решение
Вы можете перенести данные в соответствующие специализированные базы данных AWS, которые имеют несколько встроенных функций, поддерживающих горизонтальное масштабирование.
Как AWS может помочь с сегментированием баз данных?
AWS – это глобальная платформа управления данными, которую можно использовать для построения современной стратегии управления данными. С помощью AWS вы можете выбрать подходящую специализированную базу данных, достичь производительности в любом масштабе, запустить полностью управляемые базы данных и полагаться на высокую доступность и безопасность.
Создайте аккаунт AWS и начните работу с управлением данными в AWS уже сегодня.