Все таблицы данных распределяются по сети (узлом), где осуществляется их применение. Каналы между узлами – соединения. Все данные в сети делятся на 2 подвида:

  1. Локальные – используются только в своем узле.
  2. Глобальные данные – могут использоваться в любом узле.

Преимущество:

  1. уменьшенное время на доступ наиболее часто используемых программ.
  2. рассширяются объемы данных, в которых можно иметь доступ.
  3. надежность хранения увеличивается

Недостатки:

  1. производительность падает.
  2. запросы обрабатывать сложнее.
  3. управление транзакциями при параллельном доступе усложняется.
  4. возникает проблема обновления при терражировании данных.

Все распределенные базы данных делятся на два типа:

  1. Однородные – те базы данных. У которых все локальные данные управляются СУБД одного типа.
  2. Неоднородные – это такие БД, у которых все локальные данные могут управляться СУБД разного типа и могут иметь разные модели данных.

Все узлы в распределенных БД являются автономными, т.е. полная независимость узла от других узлов.

Задачи РСУБД:

  1. Выполнение запросов.
  2. Обработка транзакций.
  3. Обнаружение распределенных тупиков.
  4. Восстановление РБД.

Каждая таблица имеет: имя, состоящее из:

  1. Полное имя: задается командой CREAT TABL
  2. Системное имя (создается при создании автоматически)
    • имя таблицы
    • № узла создания
    • № узла в котором таблица была размещена после создания (родовой узел)
    • имя создателя.

Существует оператор, который позволяет отправить таблицу на любой из узлов сети: MYGRATE TABLE эту таблицу можно найти по локальному каталогу в котором эта таблица была размещена после создания. Когда запрос обращается к таблице, считывается имя и затем считывается адрес, где находится.

Порядок выполнения запросов в БД

Узел, из которого исходит запрос, называется главным. Узлы, из которых исходит запрос, называется дополнительными.

  1. Происходит разбор команды SQL в главном узле. С заменой полных имен таблиц на системные имена
  2. В главном узле определяется порядок взаимодействия узлов.
  3. Запрос (весь) разбивается на составные части, в каждом из которых будет воспроизводиться в своем узле. Эти части (подзапросы) рассылаются по соответствующим узлам.
  4. На дополнительных узлах происходит проверка прав доступа пользователя, оптимизация запроса в соответствии с имеющимися индексами, происходит комплектация запросов, т.е. генерация машинных кодов.

Архитектура РСУБД

Транзакция в РБД может состоять из нескольких мастей – агентов.
Транзакции состоящая из нескольких агентов называются глобальными.
Транзакция, с которой начинается обработка, называется инициирующая.
ДТ – диспетчер транзакции. Фиксирует начало и конец транзакции, передает информацию о четности планировщику.
Планировщик составляет расписание работы транзакции, устанавливает блокировку по чтению БД.
ДД – диспетчер данных. Выполняет команду чтения и записи над данными, результаты этих операций передаю планировщику. Планировщик передает ДТ, а ДТ передает обратно транзакции.

Протокол двухфазной фиксации

Главная транзакция посылает команду подтранзакции, фиксировать или прервать. Если голосование единогласно, то принимается решение фиксировать и эта команда отправляется подтранзакциям. Если же хотя бы одна подтранзакция обработала с ошибкой, то главная подтранзакция посылает подтранзакциям команду отказ и все данные уничтожаются.
Фрагментация – хранение фрагментов таблицы в разных узлах сети.

Пример:

Категория билетов Станция цена
Красноярск
Новосибирск
Москва
Владивосток

Горизонтальная фрагментация таблицы


Разбиение таблицы на фрагменты по строкам выполняется с помощью команды R:=(R(SELECT * FROMR WHERE Город = “Новосибирск”))
Вертикальная фрагментация – разделение таблицы по вертикали (убираются те данные, которые не нужны).

Стратегия распределения нефрагментированных файлов.

Чтобы оптимально распределить файлы по сети, нужно. минимизировать количество удаленных обращений и максимизировать число локальных обращений.
Алгоритм размещения файла по сети
Cij – объем свободного дискового пространства узла j;
Fi – размер файла i;
Тк – транзакция
N - число узлов

    1. Определяется значение каждой транзакции к каждому файлу Fik.

Ф

Т

1

2

3

1

10

0

0

2

0

10

30

3

5

10

0

    1. Среднее число запусков транзакций на узлах сети. Nij

У

Т

1

2

1

2

1

2

0

2

3

2

0

    1. Вычисляется весовой коэффициент Vij, определяется на какое место нужно отправить файл.

Ф

У

1

2

3

1

30

30

0

2

20

20

60

  1. максимум (Vij) для указанного узла j.
  2. Осуществляется проверка:

Как только файл нашел свой узел, все соответствующие столбцы удаляются из таблицы. Как только свободное дисковое пространство на узле заполнилось, то соответствующие ему строка и столбцы удаляются из таблицы. Таким образом распределяется от файла к узлу.