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

Распределенные базы данных

Секционирование (partitioning)

Содержание

Типы секционирования

Содержание

Секционирование

  • Разбиение таблицы на фрагменты
    • Хранятся в разных местах
    • Возможно, на разных компьютерах (шардинг)
    • Уменьшение числа чтений
  • Типы секционирования
    • Вертикальное
    • Горизонтальное

Вертикальное секционирование

  • Разрезание «по столбцам»
    • Проекция/соединение
  • Преимущества
    • Отделение «частых» данных от «редких»
    • Защита информации
    • Автоматическая поддержка для CLOB/BLOB
  • Недостатки
    • Почти не поддерживается
    • Зависимость от представления
    • Необходимость представлений

Пример вертикального секцион.

  • Исходная таблица
    • Students(SId, GId, FirstName, LastName,
          PassSeries, PassNo, PassIssued, Photo)
      
  • Секции таблицы
    • StudentDatum(SId, GId, FirstName, LastName)
      
    • StudentPasses(SId, Series, No, Issued)
      
    • StudentPhotos(SId, Photo)
      
    • create view Students as StudentDatum
          natural join StudentPasses natural join StudenPhotos
      
  • Права доступа
    • StudentDatum, StudentPhotos — все
    • StudentPases — деканат

Горизонтальное секционирование

  • Разрезание «по строкам»
    • Фильтрация/объединение
  • Преимущества
    • Отделение «близких» данных от «дальних»
    • Уменьшение размера секции
    • Встроенная поддержка
    • Прозрачность для пользователя
  • Недостатки
    • Возможное замедление работы

Пример горизонтального секцион.

  • Исходная таблица
    • Points(SId, CId, Points, Date)
      
  • Секции по Date
    • $Points_{2017-1}$ — оценки за весенний семестр 2017
    • $Points_{2017-2}$ — оценки за осенний семестр 2017
    • ...

Методы секционирования

Содержание

Методы секционирования

  • Простые
    • По диапазонам
    • По значениям
    • По хешу
  • По выражению
  • Составные
    • По диапазону и хешу
    • ...

По диапазонам

  • Секция содержит значения из диапазона
    • Задаются границами
  • Пример
    • create table Points (...)
      partition by range(Date) (
          partition pHist   values less than '2017.01.01',
          partition p2017s1 values less than '2017.07.01',
          partition p2017s2 values less than '2018.01.01',
          partition pFuture values less than maxvalue
      );
      

По значениям

  • Секция содержит значения из списка
    • Задаются списками значений
  • Пример
    • create table Points (...)
      partition by list(Term) (
          partition pHist   values in ('t2016-1', 't2016-2'),
          partition p2017s1 values in ('t2017-1'),
          partition p2017s2 values in ('t2017-2'),
          partition pFuture values in ('t2018-1')
      )
      
  • Секция может быть не определена
    • insert into Points (Term) values ('t2008-1');
      

По хешу

  • Разбиение на несколько корзин
    • Хешируется набор столбцов
  • Пример
    • create table Points (...)
      partition by hash(Term)
      partitions 4;
      

По выражению

  • На секции разбиваются значение выражения
    • Любой метод простого секционирования
  • Пример
    • create table Points (...)
      partition by year(Date) (
          partition pHist values less than 2017,
          partition pCurrent values less than 2018,
          partition pFuture values less than maxvalue
      )
      

Составное секционирование

  • Секции разбиваются на подсекции
    • Возможно, по разным атрибутам
  • Пример
    • create table Points (...)
      partition by year(Date)
      subpartition by hash(Term) (
      partition History values less than 2017 (
          subpartition History1, subpartition History2
      ),
      partition Current values less than maxvalue (
          subpartition Current1, subpartition Current2
      ))
      

Управление секциями

Содержание

Изменение состава секций

  • Удаление секции
    • alter table таблица drop partition секция;
      
  • Разбиение секции
    • alter table таблица reorganize секция into (...);
      
  • Перехеширование
    • alter table таблица add partition число;
      
    • alter table таблица coalesce partition число;
      

Отбрасывание секций

  • Оптимизатор «знает» о секциях
    • Где какие данные находятся
    • $=$, in, between, сравнения
  • Пример
    • select * from Points where Date = '2017.01.01'
      
    • Будет использована секция только 2017 года

Секционирование и индексы

  • Типы индексов
    • Локальный индекс — один на секцию
    • Глобальный индекс — один на таблицу
    • Секционированный индекс — разбит на секции по-своему
  • Локальный и глобальный индексы
    • Ускорении при отбрасывании секций
    • Замедление при полном просмотре
  • Секционированный индекс
    • Согласованное секционирование
    • Среднее между глобальным и локальным

Секционирование и ключи

  • Определение секции по ключу
    • Секционируемые столбцы — подключ
    • Подключ всех ключей
  • Операции над значениями
    • «Склейка» значений — разрешена
    • «Разбиение» значений — нежелательно

Репликация

Содержание

Репликация

  • Поддержание одинаковых данных на нескольких узлах
  • Типы репликации
    • Синхронная (распределенные транзакции)
    • Асинхронная
  • Схемы репликации
    • С основной копией
    • Симметричная

Реализация репликации

Содержание

Репликация с основной копией

  • Согласованные изменения
  • Постоянное подключение

Симметричная репликация

  • Противоречивые изменения
  • Автономная работа

Реализация репликации

  • Где есть все данные об изменениях?
    • Протокол транзакций
  • Рассылка протоколов транзакций
  • Гранулярность
    • Операторы
    • Записи

Репликация операторов

  • На копии выполняются те же операторы
  • Преимущества
    • Мало данных
  • Недостатки
    • Операторы должны быть детерминированы
    • Необходимо учитывать взаимный порядок выполнения транзакций

Репликация записей

  • Пересылается информация об изменении записей
  • Преимущества
    • Детерминированность
    • Кросс-репликация
  • Недостатки
    • Большое количество данных

Применения

Содержание

Применения репликации

  • Вертикальное масштабирование
  • Горизонтальное масштабирование
  • Преобразование данных
  • Резервное копирование
  • Доступность данных

Вертикальное масштабирование

  • Асимметричная схема
    • Большое количество чтений
    • Малое количество записей
  • Применение
    • Web-сервера
    • ERP-системы

Горизонтальное масштабирование

  • Симметричная схема
    • Большое количество локальных операций
    • Периодическая синхронизация
  • Применение
    • Географическая распределенность
    • Независимость по данным
    • Непостоянная связь

Преобразование данных

  • Асимметричная схема
    • Периодическая синхронизация
    • При репликации данные преобразуются
  • Применение
    • Изменение формата хранения
    • Консолидация данных
    • Унификация данных

Доступность данных

  • Асимметричная схема
  • Резервное копирование
    • Постоянная синхронизация
    • Резервное копирование с остановкой реплики
  • Доступность данных
    • Назначение новой основной копии

Распределенные базы данных

Содержание

Цели распределения

Содержание

Децентрализация

  • Локальная независимость
    • Узел должен функционировать даже в изоляции
  • Отсутствие центрального узла
    • Нет «уязвимого места»
  • Непрерывное функционирование
    • Надежность
    • Доступность
  • ⇒ Равноправие узлов
    • Выборы временного координатора

Прозрачность

  • Независимость от расположения
    • Программы могут работать на любом узле
    • Удаленный доступ к данным
  • Независимость от фрагментации
    • Программы не знают на каком узле находятся данные
    • Унифицированный доступ к данным
    • Географическое секционирование
  • Независимость от репликации
    • Автоматическое поддержка репликации
    • Выбор узла для обновления

Распределенные транзакции

  • Поддержка распределенных запросов
    • Один запрос получает данные с разных узлов
    • Удаленный доступ к данным
  • Распределенные транзакции
    • Несколько узлов участвуют в единой транзакции
    • Согласованность фиксации и отката

Независимость от окружения

  • Независимость аппаратуры
    • Write once, run anywhere
    • Унифицированное представление данных
  • Независимость от ОС
    • Прозрачная поддержка различных ОС
    • Конвертация данных
  • Независимость от сети
    • Прозрачная поддержка различных сетей
  • Независимость от типа СУБД
    • Прозрачная поддержка различных СУБД
    • Конвертация данных

Распределенные транзакции

Содержание

Распределенные транзакции

  • В транзакции участвует несколько узлов
    • Либо на всех зафиксирована
    • Либо на всех откачена
  • Сбои
    • Участников
    • Коммуникаций

Двухфазная фиксация

Задача двух генералов (1)

  • Одновременная атака ⇒ победа
  • Одиночная атака ⇒ поражение
  • Обмен сообщений
    • Посыльные
    • Могут убить

Задача двух генералов (2)

  • Вероятностное решение
    • Послать гонца со временем
    • Ждать подтверждение
    • При необходимости повторить
  • Отсутствие гарантированного решения
  • Доказательство
    • Пусть существует конечный протокол
      • ⇒ минимальное по включению множество сообщений
    • Пусть последнее сообщение не доставлено
      • ⇒ принять решение нельзя

Обработка сбоев координатора

  • До принятия решения
    • Откат
  • Принятие решение
    • Запись в протокол транзакций
  • После принятия решения
    • Выполнение решения

Обработка сбоев участников

  • До получения решения
    • Запросить у координатора
  • Получение решения
    • Запись в протокол транзакций
  • После получения решения
    • Выполнение решения
    • Отсылка подтверждения
    • Запись в протокол транзакций

Улучшение протокола

  • Когда требуется помнить решение?
    • Между принятием и подтверждениями
  • Протокол предполагаемой фиксации
    • При решении «фиксировать» — «забыть» транзакцию
    • Неизвестная транзакция — фиксировать
  • Протокол предполагаемого отката
    • При решении «откатить» — «забыть» транзакцию
    • Неизвестная транзакция — откатить

Ложная фиксация

  • Протокол предполагаемой фиксации
  • Сбой на первой фазе
    • «Потеря» транзакции
    • Ответы «Фиксировать»
  • Хранение всех участников транзакции
  • Протокол предполагаемого отката
    • Проблемы нет

Проблемы распределенных баз данных

Содержание

CAP-теорема

  • Два свойства из трех
    • Consistency — информация на разных узлах согласована
    • Availability — система отвечает на запросы
    • Partition tolerance — связи между узлами могут обрываться
  • Свойства не бинарные
    • Доказательство верно только для бинарных свойств

Partition tolerance

  • В случае обрыва связи
    • Частичный отказ от Availability ⇒ функционирует одна часть системы
    • Частичный отказ от Consistency ⇒ необходимость объединения состояний
  • Система не разделена
    • Полные Availability и Consistency

Подход BASE

  • Ослабление свойств
    • Basically Available — сбой узла приводит к отказу только для части пользователей
    • Soft-state — изменение состояния без внешнего вмешательства
    • Eventual Consistency — вре́менная несогласованность

Разрешение несогласованности

  • По времени
    • При чтении ⇒ замедляется чтение
    • При записи ⇒ замедляется запись
    • Асинхронная ⇒ требуется специальный процесс
  • Выбор варианта
    • Метки времени
    • Векторные часы

Оптимизация запросов

  • Цели оптимизации
    • Минимизировать время выполнения
    • Минимизировать количество данных
    • Минимизировать количество коммуникаций
  • Средства оптимизации
    • Выбор узлов получения и обработки данных
    • Полусоединения
    • Применение репликации

Управление параллельностью

  • Цели управления
    • Распараллеливание запроса
    • Изоляция транзакций
    • Детектирование распределенных взаимных блокировок
  • Средства управления
    • Распределенные транзакции
    • Распределенные блокировки
    • Стратегия основной копии

Управление каталогом

  • Цели
    • Независимость от расположения
    • Независимость от фрагментации
    • Возможность переноса данных
  • Методы
    • Централизованное хранение
    • Полная репликация
    • Локальное секционирование
    • Секционирование + репликация

Независимость от окружения

Задачи шлюза

  • Реализация протоколов
    • Семантическое взаимодействие
  • Конвертация
    • Данных
    • Запросов
    • Каталога
  • Поддержка
    • Распределенных транзакций
    • Блокировок

Литература

Содержание

Основная литература

  • Дейт К. Введение в системы баз данных (глава 18)

Дополнительная литература