книги2 / монография 31
.pdf
ГЛАВА 4. ДИНАМИЧЕСКАЯ РЕПЛИКАЦИЯ ФРАГМЕНТОВ ТАБЛИЦ ДАННЫХ В РАСПРЕДЕЛЕННЫИНЫХ ИНФОРМАЦИОННЫХ СИСТЕМАХ
В течение нескольких предыдущих лет было выполнено большое количество исследований, посвященных разработке эффективных методов улучшения характеристик распределенных систем обработки данных и систем управления распределенными базами данных (РБД). Основной акцент в данных работах уделялся таким характеристикам систем как высокая надежность работы, приемлемое время доступа к данным, высокая производительность, минимизация затрат на функционирование и высокий уровень сохранности данных, используемых в системе.
Из-за больших объемов накопленных цифровых данных возможностей одной централизованной базы данных может не хватить для обеспечения приемлемой производительности, хорошей доступности и сохранности данных в ситуации, когда к базе данных одновременно генерируется множество запросов большим количеством пользователей. Поэтому использование в РСОД распределенных баз данных является эффективным методом для преодоления проблемы производительности и быстрого доступа к данных.
Для еще большего повышения эффективности работы РСОД используется фрагментация таблиц баз данных и оптимальное размещение полученных фрагментов таблиц в узлах системы. В различных работах по данной проблеме представлены разнообразные алгоритмы оптимизации фрагментации таблиц, распределения и репликации фрагментов таблиц на начальном этапе проектирования распределенной базы данных с использованием различных методов, которые влияют на производительность РБД
[2,21,31 – 34,].
Большое количество исследований, выполненных за последние годы в области распределенных систем, использующих базы данных, проводилось в следующих направлениях [2,21,31,32,35 – 37]:
Фрагментирование таблиц данных РБД:
горизонтальное фрагментирование, при котором множество строк таблицы делится на несколько непересекающихся подмножеств строк (фрагментов);
89
вертикальное фрагментирование, когда множество столбцов таблицы делится на несколько подмножеств столбцов (вертикальных фрагментов);
смешанное (гибридное) фрагментирование, при котором используется комбинация первых двух методов фрагментирования.
Размещение таблиц баз данных или их фрагментов в узлах распределенных систем:
не избыточное размещение данных (таблиц данных или их фрагментов), при котором один экземпляр таблицы или фрагмента размещается в одном из узлов распределенной системы;
избыточное размещение, при котором в нескольких узлах распределенной системы размещается соответствующее количество идентичных копий (реплик) таблиц или их фрагментов.
Репликация данных (используется при избыточном размещении данных):
использование алгоритмов создания и удаления реплик для оптимизации работы системы;
миграция реплик из одного узла в другой узел системы;
использование методов обеспечения идентичности и непротиворечивости данных
в репликах одних таблиц и их фрагментов (согласованность реплик).
Кластеризация узлов крупномасштабных распределенных систем и размещение фрагментов таблиц в отдельных логических кластерах системы:
разбиение крупномасштабных распределенных систем на логические непересекающиеся кластеры существенно меньшего размера для минимизации обмена данными между узлами разных кластеров и снижения вычислительной сложности задач поиска оптимального размещения фрагментов таблиц в узлах системы;
поиск оптимального размещения фрагментов таблиц в отдельных кластерах.
90
Одним из эффективных методов повышения эффективности распределенных систем является разбиение таблиц баз данных, используемых в системе, на фрагменты и оптимальное размещение этих фрагментов в узлах распределенной системы. Полученная эффективность работы РСОД в значительной степени будет зависеть от того, насколько эффективен выбранный метод фрагментации таблиц данных и от того, насколько оптимально размещены полученные фрагменты по различным узлам распределенной системы.
При решении проблемы повышения эффективности работы РСОД используются разные критерии эффективности. Например, в работе [35] метод фрагментации и распределения фрагментов используется для увеличения производительности РБД. А в работах [36,37] в динамической модели распределения фрагментов таблиц используется критерий минимизации использования каналов связи для передачи данных.
Основная цель использования фрагментации таблиц заключается в уменьшении объема считываемых данных при поиске информации, необходимой для обработки запросов к исходной таблице данных. Использование подмножества атрибутов в записях фрагментов таблиц вместо полного перечня атрибутов записей оригинальной таблицы приводит к сокращению объема данных, которые считываются с устройств хранения данных, сокращению времени на передачу информации по каналам связи, и в итоге к уменьшению времени отклика системы на запросы. В результате оптимальное размещение фрагментов таблиц по узлам системы позволяет сократить затраты на функционирование РСОД.
4.1. Методы фрагментации таблиц данных
На практике используется два основных метода фрагментации таблиц данных: горизонтальная и вертикальная фрагментация. Горизонтальная фрагментация — это разделение таблицы на подмножества записей этой таблицы такие, что каждое подмножество содержит записи с полным набором атрибутов записей исходной таблицы. Вертикальная фрагментация — это разделение атрибутов записей исходной таблицы на группы атрибутов.
91
4.1.1.Горизонтальная фрагментация таблиц
Горизонтальная фрагментация таблиц РБД заключается в разбиении отношений (таблиц данных) на некоторое множество фрагментов, хранящих подмножества записей исходного отношения. Корректно сформированные фрагменты должны соответствовать следующим критериям [26,30]:
попарное не пересечение фрагментов,
их полнота
обеспечение возможности восстановления исходного (не фрагментированного) отношения/таблицы.
Разбиение таблиц на горизонтальные фрагменты обеспечивает повышение производительности РБД за счет сокращения объемов данных, которые необходимо обработать при реализации запроса к таблице данных.
Используемые на практике методы горизонтальной фрагментации условно можно разбить на две группы. К первой группе относятся методы фрагментации, использующие значения атрибутов записей таблицы. Методы второй группы не используют значения атрибутов записей.
Наиболее часто используются следующие методы из первой группы [35,36]:
-Интервальная фрагментация. В данном методе предусматривается, что множество всех значений атрибута (или группы атрибутов записи), на основе которого делается фрагментация, разбивается на несколько непересекающихся интервалов. Конкретная запись таблицы относится к определенному фрагменту в случае, если значение атрибута записи попадает в соответствующий фрагменту интервал значений.
-Использование хеш-функций для отнесения записей к разным фрагментам. В этом случае значение хэш-функции атрибута или группы атрибутов записи определяет отнесение конкретной записи к определенному фрагменту.
-Использование списков значений. Данный метод заключается
втом, что каждому фрагменту назначается списка значений атрибута (группы атрибутов) записи. Запись относится к определенному фрагменту, если значение ее атрибута входит в список значений соответствующего фрагмента.
92
-Колоночная фрагментация. В этом случае в записи таблицы добавляется виртуальный атрибут. Значение виртуального атрибута каждой записи рассчитывается по заданной формуле в зависимости от значений других атрибутов этой записи. Затем записи таблицы фрагментируются одним из описанных выше методов на основе значений данного виртуального атрибута.
К методам второй группы, не использующим значения атрибутов, можно отнести следующие методы фрагментации записей [21,27,36]:
-Случайное распределение записей таблицы по фрагментам.
-Круговое (циклическое) распределение записей по фрагментам.
4.1.2.Вертикальная фрагментация таблиц
Вертикальное фрагментирование также, как и горизонтальное, является методом повышения производительности РБД. Такое фрагментирование заключается в разбиении отношения (таблицы) на фрагменты, каждый из которых содержит подмножество атрибутов исходного отношения (столбцов таблицы) и первичные ключи отношения. Наличие в вертикальных фрагментах первичных ключей необходимо для того, чтобы выполнялось требование о возможности восстановления оригинального отношения [35,36].
Вертикальное фрагментирование более сложное, чем горизонтальное. Это объясняется существенно большим количеством доступных альтернатив по сравнению с количеством альтернатив при горизонтальном фрагментировании. В силу данного обстоятельства для решения задач вертикального фрагментирования используют эвристические алгоритмы. Существует два типа эвристических подходов для вертикальной фрагментации отношений [27].
Группировка: процесс фрагментирования начинается с отнесения каждого очередного атрибута одному фрагменту, затем на каждом этапе некоторые фрагменты объединяются до тех пор, пока не будут выполнены определенные используемые критерии.
Разделение: процесс разделения начинается с целого отношения и последовательно выбирает предпочтительные фрагменты на основе анализа поведения операций доступа к атрибутам отношения.
Вертикальное фрагментирование может использовать или не использовать репликацию (дублирование) отдельных атрибутов
93
отношения. В первом случае один или несколько атрибутов включаются в несколько вертикальных фрагментов. В ряде случаев такой подход может дать существенный выигрыш при обработке сложных запросов к данным отношения.
С другой стороны, при таком подходе к фрагментации сильно усложняется процесс обновления значений в атрибутах, которые присутствуют в нескольких фрагментах, поскольку затрудняется поддержки в актуальном состоянии фрагментов с реплицированными атрибутами.
Кроме того, в ситуации, когда для обработки запроса к таблице необходимы данные из нескольких вертикальных фрагментов, появляется необходимость выполнения дополнительных операций объединения строк из разных фрагментов, что увеличивает затраты на обработку запроса.
Алгоритмы вертикального фрагментирования можно разделить на два класса [21,36,38].
Алгоритмы, выполняющие фрагментацию на основании близости значений атрибутов. Степень близости атрибутов определяется количеством совместного использования каждой пары атрибутов в запросах к таблице данных. В алгоритмах данного класса используются функции, основывающиеся на эмпирических предположениях о целесообразности того или иного варианта фрагментирования. Такие алгоритмы не обладают высокой точностью, но могут быть полезны в ситуациях, когда нет детальной информации о физических параметрах отношений.
Во второй класс входят алгоритмы, использующие стоимостной подход. В данном случае проводится анализ запросов к данным отношений, затем проектируется логическая и физическая структура отношений при минимизации затрат на обработку запросов.
Есть работы, рассматривающие совместное использование и горизонтального, и вертикального фрагментирования. Этому подходу посвящена, например, работа [38]. В этой работе авторы в дополнение к фрагментации самих таблиц рассматривают также фрагментацию индексов и материализованных представлений.
Алгоритмы горизонтальной и вертикальной фрагментации таблиц данных должны удовлетворять трем критериям корректности
[27]:
94
1) Полнота (Completeness). Если таблица данных R разбивается на фрагменты 1, … , … , , то каждый элемент данных, имеющийся в исходной таблице R, должен находиться как минимум в одном из фрагментов, созданных из таблицы R.
Под элементом данных здесь понимается кортеж таблицы R при ее горизонтальной фрагментации и атрибут кортежа таблицы в случае вертикальной фрагментации.
Выполнение критерия полноты гарантирует, что какие-либо данные не будут потеряны в результате фрагментации исходной таблицы.
2) Возможность восстановления. (Reconstruction). Если таблица данных R разбита на фрагменты 1, … , … , , то должна быть возможность определить оператор реляционной алгебры такой, что он позволит восстановить исходную таблицу R из всех ее фрагментов:
=
=1
3) Непересекаемость (Disjointness). Если элемент данных присутствует во фрагменте , то он не должен одновременно присутствовать и в каком-то другом фрагменте таблицы. Исключением из этого критерия является операция вертикальной фрагментации таблицы. Это объясняется тем фактом, что в случае вертикальной фрагментации таблицы в каждом полученном в результате вертикальном фрагменте должен присутствовать один или несколько атрибутов записи таблицы, входящих в состав первичного ключа исходной таблицы. Это необходимо для того, чтобы была возможность восстановить исходную таблицу на основе ее вертикальных фрагментов, имеющих некоторое количество избыточных данных в виде атрибутов первичного ключа исходной таблицы.
4.2. Метод вертикальной фрагментации таблиц баз данных распределенной системы
В данном параграфе рассматривается комплексный метод проектирования логической структуры фрагментов таблиц данных совместно с синтезом программных модулей, используемых в
95
прикладных процессах, которые используют данные из полученных фрагментов таблиц. Данный метод является модификацией подхода, который был предложен для проектирования и создания информационно-технологического резерва в рамках распределенных систем обработки данных [40]. Метод основывается на результатах анализа предметных областей пользователей.
Предлагаемый метод проектирования логической структуры фрагментов таблиц и синтеза программных модулей состоит из трех этапов.
4.2.1.Этап 1. Анализ предметных областей пользователей
На первом этапе проводится анализ предметных областей пользователей распределенной системы. При этом уточняются входные, промежуточные и итоговые данные таблиц, перечень процедур обработки этих данных, а также последовательности выполнения процедур в процессе обработки запросов пользователей. Каждый запрос пользователей должен быть отнесен к определенному типу запросов, который характеризуется своим набором используемых данных таблиц и множеством процедур их обработки.
Для выполнения работ на этапе анализа предметных областей пользователей целесообразно использовать получившие широкое распространение формальные модели и методы, разработанные в Институте проблем управления РАН [41–43]. Эти модели и методы представляют собой совокупность взаимосвязанных матричных и графовых моделей, которые используются на этапе анализа предметных областей пользователей РСОД и РБД. В результате работ на этом этапе определяется перечень и типы входных, промежуточных и выходных данных, а также множество процедур обработки информации, которые используются при обработке запросов к данным системы. Для представления информационных связей между различными процедурами обработки данных используется формат мультиграфа. При этом процедуры обработки данных это вершины данного графа, а дуги, которые связывают эти вершины, раскрашены множеством информационных элементов, общих для смежных процедур.
96
Задача анализа предметных областей пользователей в графовой интерпретации заключается в разбиении полученного мультиграфа на множество подграфов, имеющих минимальное количество связей между этими подграфами [41].
4.2.2.Этап 2. Синтез программных модулей и логической структуры фрагментов
На данном этапе на основе данных, полученных в ходе выполнения первого этапа, проводится синтез логической структуры фрагментов таблиц и прикладного программного обеспечения, использующего данные этих фрагментов при обработке запросов пользователей. Синтез программного обеспечения производится с учетом принципа модульности. Данный принцип позволяет оптимизировать перечень и взаимосвязи между отдельными компонентами прикладного программного обеспечения и фрагментами таблиц данных распределенной системы [44].
В работе [45] дано определение ряда понятий, которые используются для формализации и описания основных положений процесса анализа и синтеза модульных систем обработки данных. С использованием данных понятий далее будем использовать следующие определения:
Запрос – требование (заявка) пользователя или прикладного процесса на обработку данных фрагментов таблиц. Каждый запрос характеризуется определенным набором обрабатываемых данных, перечнем выходных данных, полученных в результате обработки данных, и ограничением на время, затраченное на обработку данных.
Тип запросов – множество запросов, характеризующееся одинаковыми наборами обрабатываемых данных (перечнем используемых фрагментов таблиц) и множеством процедур их обработки данных. К одному типу запросов относятся запросы, для обработки которых используются одинаковый набор данных (фрагментов таблиц) и одинаковое множество процедур их обработки, которые выполняются в РСОД в одинаковой очередности.
Информационный элемент (ИЭ) – атрибут записи фрагмента таблицы – наименьшая, неделимая часть данных, по отношению к которой допускается ее независимое использование в процессе обработки запросов к данным.
97
Процедура обработки данных – алгоритмическое действие по преобразованию одного атрибута записи фрагмента или группы атрибутов в другой атрибут или группу атрибутов в соответствии с логикой обработки запросов.
Задача РСОД – набор процедур и обрабатываемых ими информационных элементов, необходимых для обслуживания запросов одного или нескольких типов.
При решении задач оптимизации состава фрагментов таблиц, как правило, используются следующие основные критерии оптимизации:
максимум информационной производительности системы при обработке запросов,
минимум времени обработки запросов,
минимум сложности интерфейса между отдельными модулями,
минимум времени обмена данными между оперативной и внешней памятью в процессе обработки запросов,
минимум объема неиспользуемых данных при обмене данными между оперативной и внешней памятью серверов системы.
В качестве исходных данных для синтеза логической структуры фрагментов таблиц используются результаты анализа предметных областей пользователей, которые были получены на первом этапе процесса.
На основе этих данных определяются следующие параметры:
множество задач РСОД по обработке запросов;
множество процедур обработки данных, используемых при решении множества задач РСОД;
включение процедур обработки данных в состав тех или иных программных модулей;
множество атрибутов записей фрагментов таблиц, связанных с процедурами обработки данных и классифицируемых по следующим типам: – входной, промежуточный или выходной элемент данных;
вхождение атрибутов в состав фрагментов таблиц;
варианты взаимодействия процедур обработки данных с атрибутами фрагментов;
98
