Раздел (база данных) - Partition (database)

А раздел является делением логического база данных или его составные элементы на отдельные независимые части. Разделение базы данных обычно выполняется для обеспечения управляемости, спектакль или же доступность[1] причины или по Балансировка нагрузки. Это популярно в системы управления распределенными базами данных, где каждый раздел может быть распределен по нескольким узлам, при этом пользователи на узле выполняют локальные транзакции в разделе. Это увеличивает производительность для сайтов, на которых проводятся регулярные транзакции с определенными представлениями данных, сохраняя при этом доступность и безопасность.

Критерии разделения

Текущий high-end системы управления реляционными базами данных предусмотреть разные критерии для разделения базы данных. Они принимают ключ разделения и назначить раздел на основе определенных критериев. Некоторые общие критерии включают:

  • Разделение диапазона: выбирает раздел, определяя, находится ли ключ разделения в определенном диапазоне. Примером может быть перегородка для всех ряды где "почтовый индекс" столбец имеет значение от 70000 до 79999. Он распределяет кортежи на основе интервалов значений (диапазонов) некоторого атрибута. Помимо поддержки запросов с точным соответствием (как при хешировании), он хорошо подходит для запросов диапазона. Например, запрос с предикатом «A между A1 и A2» может быть обработан единственным узлом (ами), содержащим кортежи.
  • Разделение списка: разделу назначается список значений. Если ключ разделения имеет одно из этих значений, выбирается раздел. Например, все строки, в которых находится столбец Страна либо Исландия, Норвегия, Швеция, Финляндия или же Дания может построить перегородку для Скандинавские страны.
  • Композитное разбиение: позволяет использовать определенные комбинации вышеупомянутых схем разделения, например, сначала применяя разделение по диапазону, а затем по хешу. Последовательное хеширование можно рассматривать как сочетание хэша и разбиения на разделы, где хеш уменьшает пространство ключей до размера, который может быть указан.
  • Циклическое разбиение: простейшая стратегия, обеспечивающая равномерное распределение данных. С п перегородки, я-й кортеж в порядке вставки назначается разделу (я мод п). Эта стратегия позволяет осуществлять последовательный доступ к отношению параллельно. Однако прямой доступ к отдельным кортежам на основе предиката требует доступа ко всему отношению.
  • Разбиение хэша: применяет хэш-функция некоторому атрибуту, который дает номер раздела. Эта стратегия позволяет обрабатывать точно совпадающие запросы по атрибуту выбора только одним узлом, а все остальные запросы обрабатывать все узлы параллельно.

Методы разбиения

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

  • Горизонтальное разделение включает размещение разных строк в разных таблицах. Например, клиенты с Zip коды Менее 50000 хранятся в CustomersEast, а клиенты с почтовыми индексами больше или равными 50000 хранятся в CustomersWest. Две таблицы разделов - это CustomersEast и CustomersWest, а Посмотреть с союз могут быть созданы поверх них обоих, чтобы обеспечить полное представление обо всех клиентах.
  • Вертикальное разделение включает создание таблиц с меньшим количеством столбцов и использование дополнительных таблиц для хранения оставшихся столбцов.[1] Как правило, эта практика известна как нормализация. Однако вертикальное разделение расширяет и разделяет столбцы, даже если они уже нормализованы. Этот тип разделения также называется «разделением строк», поскольку строки разделяются по столбцам и могут выполняться явно или неявно. Отдельные физические машины могут использоваться для реализации вертикального разделения: например, хранение редко используемых или очень широких столбцов, занимающих значительный объем памяти, на другой машине, является методом вертикального разделения. Распространенной формой вертикального разбиения является разделение статических данных от динамических данных, поскольку первые быстрее доступны, чем вторые, особенно для таблицы, в которой динамические данные используются не так часто, как статические. Создание представления для двух вновь созданных таблиц восстанавливает исходную таблицу со снижением производительности, но доступ только к статическим данным покажет более высокую производительность. А столбчатая база данных можно рассматривать как базу данных, которая была вертикально секционирована до тех пор, пока каждый столбец не будет сохранен в своей собственной таблице.

Смотрите также

Рекомендации

  1. ^ а б «Алгоритмы вертикального разделения для проектирования баз данных» Авторы: Шамкант Навате, Стефано Кери, Джио Видерхольд и Джингли Доу, Стэнфордский университет, 1984 г.