Раздел (база данных)
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2014 г. ) |

Раздел — это разделение логической базы данных или ее составляющих элементов на отдельные независимые части. Разделение базы данных обычно выполняется для управляемости, производительности или доступности. [1] причинам или для балансировки нагрузки . Он популярен в системах управления распределенными базами данных , где каждый раздел может быть распределен по нескольким узлам, при этом пользователи на узле выполняют локальные транзакции с разделом. Это повышает производительность сайтов, на которых регулярно выполняются транзакции с использованием определенных представлений данных, сохраняя при этом доступность и безопасность.
Критерии разделения [ править ]
Современные высокопроизводительные системы управления реляционными базами данных предусматривают различные критерии разделения базы данных. Они берут ключ разделения и назначают раздел на основе определенных критериев. Некоторые общие критерии включают в себя:
- Разделение диапазона : выбирает раздел, определяя, находится ли ключ разделения в определенном диапазоне. Примером может быть раздел для всех строк «zipcode» , где столбец имеет значение от 70 000 до 79 999. Он распределяет кортежи на основе интервалов значений (диапазонов) некоторых атрибутов. Помимо поддержки запросов точного соответствия (как при хешировании), он хорошо подходит для запросов диапазона. Например, запрос с предикатом «A между A1 и A2» может обрабатываться единственным узлом(ами), содержащим кортежи.
- Разделение списка : разделу присваивается список значений. Если ключ разделения имеет одно из этих значений, раздел выбирается. Например, все строки, в которых указан столбец
Country
либоIceland
,Norway
,Sweden
,Finland
илиDenmark
может построить раздел для стран Северной Европы . - Составное секционирование : позволяет использовать определенные комбинации вышеуказанных схем секционирования, например, сначала применяя секционирование по диапазону, а затем хеш-секционирование. Согласованное хеширование можно рассматривать как сочетание хеша и разделения списков, при котором хеш уменьшает пространство ключей до размера, который можно перечислить.
- Циклическое секционирование : самая простая стратегия, обеспечивающая равномерное распределение данных. С
n
перегородки,i
кортеж в порядке вставки назначен разделу(i mod n)
. Эта стратегия позволяет осуществлять последовательный доступ к отношению параллельно. Однако прямой доступ к отдельным кортежам на основе предиката требует доступа ко всему отношению. - Хэш-разделение : применяет хеш-функцию к некоторому атрибуту, который дает номер раздела. Эта стратегия позволяет обрабатывать запросы точного соответствия по атрибуту выбора ровно одним узлом, а все остальные запросы обрабатывать всеми узлами параллельно.
Методы разделения [ править ]
Разделение можно выполнить либо путем создания отдельных баз данных меньшего размера (каждая со своими собственными таблицами , индексами и транзакций журналами ), либо путем разделения выбранных элементов, например, только одной таблицы.
Горизонтальное разделение [ править ]
Горизонтальное секционирование предполагает размещение разных строк в разных таблицах. Например, клиенты с почтовыми индексами менее 50 000 хранятся в Customers East, а клиенты с почтовыми индексами больше или равными 50 000 — в CustomersWest. Тогда двумя таблицами разделов будут Customers East и CustomersWest, а для обеих из них может быть создано представление с объединением , чтобы обеспечить полное представление обо всех клиентах.
Вертикальное разделение [ править ]
Вертикальное секционирование предполагает создание таблиц с меньшим количеством столбцов и использование дополнительных таблиц для хранения оставшихся столбцов. [1] Обычно эта практика известна как нормализация . Однако вертикальное секционирование расширяет возможности и секционирует столбцы, даже если они уже нормализованы. Этот тип разделения также называется «разделением строк», поскольку строки разбиваются по столбцам и могут выполняться явно или неявно. Для реализации вертикального секционирования могут использоваться отдельные физические машины: например, хранение редко используемых или очень широких столбцов, занимающих значительный объем памяти, на другой машине является методом вертикального секционирования. Распространенной формой вертикального секционирования является разделение статических данных от динамических, поскольку доступ к первым осуществляется быстрее, чем ко вторым, особенно для таблиц, в которых динамические данные используются не так часто, как статические. Создание представления для двух вновь созданных таблиц восстанавливает исходную таблицу с потерей производительности, но доступ только к статическим данным покажет более высокую производительность. можно Столбчатую базу данных рассматривать как базу данных, разделенную по вертикали до тех пор, пока каждый столбец не будет сохранен в отдельной таблице.
См. также [ править ]
- Индекс диапазона блоков
- Теорема CAP
- Распределение данных в RAID-массивах
- Шард (архитектура базы данных)
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б «Алгоритмы вертикального секционирования для проектирования баз данных» , Шамкант Навате, Стефано Кери, Джио Видерхольд и Джингли Доу, Стэнфордский университет, 1984 г.