Корректность фрагментации.Фрагментация данных не должна выполняться непродуманно, наугад. Существуют три правила, которых следует обязательно придерживаться при проведении фрагментации.
1) Полнота. Если экземпляр отношения R разбивается на фрагменты, например R1, R2, ..., Rn, то каждый элемент данных, присутствующий в отношении R должен присутствовать, по крайней мере, в одном из созданных фрагментов. Выполнение этого правила гарантирует, что какие-либо данные не будут утрачены в результате выполнения фрагментации.
2) Восстановимость. Должна существовать операция реляционной алгебры, позволяющая восстановить отношение R из его фрагментов. Это правило гарантирует сохранение функциональных зависимостей.
3) Непересекаемость. Если элемент данных diприсутствует во фрагменте Ri, то он не должен одновременно присутствовать в каком-либо ином фрагменте. Исключением из этого правила является операция вертикальной фрагментации, поскольку, в этом случае в каждом фрагменте должны присутствовать атрибуты первичного ключа, необходимые для восстановления исходного отношения. Данное правило гарантирует минимальную избыточность данных во фрагментах.
В случае горизонтальной фрагментации элементом данных является кортеж, а в случае вертикальной фрагментации – атрибут.
Типы фрагментации.Существуют два основных типа фрагментации: горизонтальнаяивертикальная.Горизонтальные фрагменты представляют собой подмножества кортежей отношения, а вертикальные – подмножества атрибутов отношения, как показано на рис. 24.
Кроме того, существуют еще два типа фрагментации: смешанная (рис. 25) и производная(представляющая собой вариант горизонтальной фрагментации).
Рис. 24. Различные типы фрагментации: а) горизонтальная; б) вертикальная
Горизонтальная фрагментация. Горизонтальный фрагментэто выделенный по горизонтали фрагмент отношения, состоящий из некоторого подмножества кортежей этого отношения
Горизонтальный фрагмент создается посредством определения предиката, с помощью которого выполняется отбор кортежей из исходного отношения. Данный тип фрагмента определяется с помощью операции выборки реляционной алгебры. Операция выборкипозволяет выделить группу кортежей, обладающих некоторым общим для них свойством, – например, все кортежи, используемые одним из приложений, или все кортежи, применяемые на одном из сайтов. Если задано отношение R, то его горизонтальный фрагмент может быть определен с помощью следующей формулы: σp (R). Здесь р является предикатом, построенным с использованием одного или больше атрибутов отношения.
В одних случаях целесообразность использования горизонтальной фрагмента вполне очевидна. Однако в других случаях потребуется выполнение детального анализа приложений. Этот анализ должен включать проверку предикатов (или условий) поиска, используемых в транзакциях или запросах, выполняемых в приложении. Предикаты могут быть простыми, включающими только по одному атрибуту, или сложными, включающими несколько атрибутов. Для каждого из используемых атрибутов предикат может содержать единственное значение или несколько значений. В последнем случае значения могут быть дискретными или задавать диапазон значений.
Стратегия определения типа фрагментации предполагает поиск набора минимальных (то есть полных и релевантных) предикатов, которые можно будет использовать как основу для построения схемы фрагментации. Набор предикатов является полным тогда и только тогда, когда вероятность обращения к любым двум кортежам одного и того же фрагмента со стороны любого приложения будет одинакова. Предикат является релевантным, если существует, по крайней мере, одно приложение, которое по-разному обращается к выделенным с помощью этого предиката фрагментам.
Вертикальная фрагментация. Вертикальный фрагмент – выделенный по вертикали фрагмент отношения, состоящий из подмножества атрибутов этого отношения.
При вертикальной фрагментации в различные фрагменты объединяются атрибуты, используемые отдельными приложениями. Определение фрагментов в этом случае выполняется с помощью операции проекцииреляционной алгебры. Для заданного отношения R вертикальный фрагмент может быть вычислен с помощью формулы: pal, ..., an (R). Здесь al, …, an представляют собой атрибуты отношения R.
Вертикальные фрагменты определяются путем установки родственности одного атрибута по отношению к другому. Один из способов решить эту задачу состоит в создании матрицы, содержащей количество обращений с выборкой каждой из пар атрибутов. Например, транзакция, которая осуществляет доступ к атрибутам а1, а2 и а4 отношения R, состоящего из набора атрибутов (а1, а2, а3, а4), может быть представлена следующей матрицей:
a1 a2 a3 a4
a1 é 1 0 1 ù
a2 ê 0 1 ê
a3 ê 0 ê
a4 ë û
Эта матрица является треугольной, поскольку диагональ ее не заполняется, а нижняя часть является зеркальным отражением верхней части. Единицы в матрице означают наличие доступа с обращением к соответствующей паре атрибутов и, в конечном счете, должны быть заменены числами, отражающими частоту выполнения транзакции. Подобная матрица составляется для каждой транзакции, после чего строится общая матрица, содержащая суммы всех показателей доступа к каждой из пар атрибутов. Пары атрибутов с высоким показателем родственности должны присутствовать в одном и том же вертикальном фрагменте. Пары с невысоким показателем родственности могут быть разнесены в разные вертикальные фрагменты. Очевидно, что обработка сведений об отдельных атрибутах для всех важнейших транзакций может потребовать немало времени и вычислений. Следовательно, если заранее известно о родственности определенных атрибутов, может оказаться целесообразным обработать сведения сразу о группах атрибутов.
Смешанная фрагментация.В некоторых случаях применения только лишь горизонтальной и вертикальной фрагментации элементов схемы базы данных оказывается недостаточно для адекватного распределения данных между приложениями. В этом случае приходится прибегать к смешанной (или гибридной) фрагментации.
Смешанный фрагмент образуется либо посредством дополнительной вертикальной фрагментации созданных ранее горизонтальных фрагментов, либо за счет вторичной горизонтальной фрагментации предварительно определенных вертикальных фрагментов.
Смешанная фрагментация определяется с помощью операций выборки и проекции реляционной алгебры. Если имеется некоторое отношение R, то смешанный фрагмент может быть определен по формуле sP(pa1, а2, …, an (R)). Здесь р является предикатом, построенным на использовании одного или больше атрибутов отношения R, обозначенных в формулах символами а1, а2, ... , аn.
Производная горизонтальная фрагментация.Некоторые приложения включают операции соединения двух или больше отношений. Если отношения сохраняются в различных местах, то выполнение их соединения создаст очень большую дополнительную нагрузку на систему. В подобных случаях более приемлемым решением будет размещение соединяемых отношений или их фрагментов в одном и том же месте. Данная цель может быть достигнута за счет применения производной горизонтальной фрагментации.
Производный фрагмент – горизонтальный фрагмент отношения, созданный на основе горизонтального фрагмента родительского отношения.
Термин “дочернее” мы будем использовать для ссылок на отношение, содержащее внешний ключ, а термин “родительское” –для ссылок на отношение с соответствующим первичным ключом. Определение производных фрагментов осуществляется с помощью операции полусоединения реляционной алгебры. Если заданы дочернее отношение R и родительское отношение S, то производный фрагмент отношения R может быть определен следующим образом: Ri = R ½><½F Si, 1£i£w.
Здесь значение w – это количество горизонтальных фрагментов, определенных для отношения S, а параметр F задает атрибут, по которому выполняется соединение.
Отказ от фрагментации.Последний вариант возможной стратегии состоит в отказе от фрагментации отношения. Например, если отношение содержит небольшое количество кортежей, которые относительно редко обновляются. Вместо того чтобы попытаться выполнить горизонтальную фрагментацию этого отношения (например, по номеру отделения компании), имеет смысл оставить это отношение не фрагментированным и просто разместить на каждом из сайтов его реплицируемые копии. Это первый этап типовой процедуры определения схемы фрагментации (поиск отношений, которые не нуждаются в фрагментации). Затем следует проанализировать отношения, расположенные на единичной стороне связей типа “один ко многим”, и подобрать для них оптимальные схемы фрагментации. На последнем этапе анализируются отношения, расположенные на множественной стороне тех же связей. Именно они чаще всего являются кандидатами для применения производной фрагментации.