Что представляет собой фрагментация данных?

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

Ключом к достижению масштабируемости в OnLine XPS является раздельное владение данными. Это означает, что фрагмент таблицы может сканировать и записывать только владеющий им ко-сервер. Хотя физически диски этого ко-сервера доступны и с других ко-серверов, однако такой доступ используется только в ситуациях аварийного переключения. Принцип раздельного владения данными позволяет минимизировать объем дорогостоящих сетевых операций ввода-вывода и значительно сократить сетевой трафик.

OnLine XPS поддерживает несколько методов фрагментации: равномерная, интервальная, по выражению, хешированная.

Равномерная фрагментация. При равномерной фрагментации строки, вставляемые в таблицу, записываются поочередно на разные дисковые фрагменты. Гарантируется равномерное распределение данных по фрагментам. Однако, в силу случайного характера распределения данных, сервер не имеет информации о том, на каком узле находится данная строка; поэтому для выполнения любой выборки из таблицы необходимо выполнять сканирование по всем узлам. Этот тип фрагментации оказывается эффективным лишь в случаях, когда запрос действительно охватывает все строки таблицы.

Интервальная фрагментация. Этот тип фрагментации подразумевает распределение данных на основе диапазонов значений ключа. Например, таблица с данными о клиентах фирмы может быть фрагментирована по первой букве фамилий: от "А" до "Г" - узел 1, диск 1, от "Д" до "Й" - узел 1, диск 2 и т. д.

Интервальная фрагментация полезна при выборках данных по значению или диапазону ключа, поскольку в этих случаях не приходится сканировать заведомо ненужные фрагменты. Например, для выборки данных о клиенте по фамилии Демьянов, достаточно считать только второй фрагмент.

Фрагментация по выражению. Фрагментация по выражению является расширением интервальной. Основой для разбиения данных является значение некоторого выражения, зависящего от значений полей. Выражение задается примерно так же, как в разделе WHERE SQL-инструкций. Пример фрагментации по выражению - разбиение таблицы с данными о клиентах по значению столбца, в котором хранится название города или региона.

Хешированная фрагментация. При хешированной фрагментации разбиение данных производится на основе значения некоторой хешфункции от ключа фрагментации. Преимущество этого типа фрагментации в том, что при правильно подобранной хеш-функции обеспечивается равномерное распределение данных по узлам; в то же время сервер располагает информацией о местоположении строк. Так, если нужно выбрать строку с заданным значением ключа, то, вычислив хеш-функцию от него, сервер определяет, на каком узле хранится строка. Затем, используя локальный индекс таблицы на данном узле, можно быстро найти нужную строку.

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

30.Перечислите проблемы распределенных систем.