Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методы и средства интеграции независимых баз данных в распределенных телекоммуникационных сетях. Монография

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
запрос следующим образом. Вначале следует извлечь данные из отношения, стоящего в правой части оператора JOIN, а затем - из отношения, стоящего в левой части с ограничением на атрибут, по которому происходит соединение. Аналогичная оценка может быть выполнена для определения целесообразности извлечения вначале данных из отношения в левой части оператора.
Стоит отметить, что при использовании рассмотренной оптимизации могут применяться средства, подобные предложенным в [36]. То есть, в план запроса могут вставляться условные операторы, определяющие необходимость применения вышеописанной стратегии. Если после выбора информации из одной части оператора JOIN зафиксировано несоответствие ожидаемых статистических показателей (например, намного большее количество значений атрибута, по которому происходит соединение, чем предполагалось на стадии генерации плана), СИД может выполнить независимое извлечение данных из второй части оператора (если оптимизатор СИД предусмотрит подобную стратегию заранее).
В работе [35] описывается алгоритм оптимизации запросов, основанный на применении операции SEMIJOIN, подобный предлагаемой оптимизации операций JOIN. Однако предложенный нами алгоритм отличается от используемого в [35] тем, что эффективность принимаемых решений проверяется на стадии выполнения. Это является важным в условиях недостоверной (устаревшей) статистики об ИД. Такая ситуация является достаточно типичным явлением в СИД, интегрирующей независимые ИД (с недоступной другим ИД внутренней статистикой), в отличие от распределенных СУБД (где каждый узел системы имеет доступ к актуальной статистике всех других узлов
системы).
81
2.4. Резюме по разработанным методам обработки и
оптимизации запросов в распределенной сети
Таким образом, в настоящей главе показано, что
использование модели
данных, основанной на логике предикатов, в системе интеграции данных облегчает перевод запросов к глобальной схеме в запросы к локальным схемам, эффективно выполняющиеся реляционными СУБД.
При этом процесс подсоединения новых источников данных к системе интеграции данных может быть упрощен и сделан более «прозрачным» для приложений при использовании разработанного метода, основанного на использовании предикатов с именованными аргументами.
Получение требуемого постановкой задачи неполного уверенного ответа на запрос пользователя к распределенной совокупности источников данных, представленный в виде выражения реляционной алгебры и программ реляционного исчисления, обеспечивается путем использования метода непосредственного выполнения запросов, отличающегося от существующих возможностью распараллеливания операций извлечения информации из источников данных с учетом зависимостей между ними и возможностью исключения из рассмотрения медленных и недоступных источников данных.
Дальнейшая оптимизация с целью уменьшение времени получения неполного уверенного ответа на запрос пользователя к распределенной совокупности источников данных, представленный в виде выражения реляционной алгебры и программ реляционного исчисления, обеспечивается использованием оригинального оптимизированного метода выполнения запросов. Этот метод отличается от метода непосредственного выполнения запросов специальными процедурами выделения групп взаимно независимых операций. При этом между такими группами могут существовать зависимости по порядку их выполнения. Это позволяет выполнять параллельную обработку подзапросов запроса С учетом независимости
82
операций в группах выполняется параллельная обработка подзапросов для независимых с учетом зависимостей между ними, анализа текущих сбоев и объединения обращений к одним и тем же данным в разных частях обрабатываемого запроса.
В целом же совокупность рассмотренных методов позволяет
существенно увеличить эффективность выполнения запросов к СИД.
83
3. АЛГОРИТМЫ ОБРАБОТКИ ЗАПРОСОВ В СИСТЕМЕ ИНТЕГРАЦИИ ДАННЫХ, ПРЕДНАЗНАЧЕННОЙ ДЛЯ
РАБОТЫ В РАСПРЕДЕЛЕННОЙ СЕТИ
В настоящей главе описываются алгоритмы обработки запросов, разработанные для использоваться в СИД, предназначенной для интеграции данных в распределенной телекоммуникационной сети.
Рассматриваемые алгоритмы служат для перевода запросов с расширения ЯЗ Datalog - DISGO QL в выражения РА и РИ, а затем для окончательного перевода данных конструкций в SQL­запросы к СУБД. Также в данной главе описываются алгоритмы оптимизации запросов на основании некоторых заранее заданных правил и алгоритмы сбора и поддержания статистики, используемой при оптимизациях, рассмотренных в пунктах 2.3.2,
2.3.2 второй главы и доказывается корректность предложенных алгоритмов обработки
запросов.
3.1. Построение графа взаимосвязанности выражений
Как отмечалось во второй главе (пункт 2.2.1), DISGO QL является
отрицания. Запрос на DISGO QL состоит из преамбулы и основной части. Преамбула содержит необходимую для обработки запроса дополнительную информацию: имена переменных, значения которых необходимо возвратить пользователю (выражение «must» запроса); URI используемых пространств имен; определения неявных предикатов; параметры, влияющие на механизмы обработки запроса. Основная часть запроса является логическим утверждением,
расширением языка запросов Datalog без явного
представленным в виде конъюнкции предикатов.
Граф MCIG является внутренним представлением программы на DISGO QL. Граф такого вида был предложен в работе [45] для обработки Datalog-программ. Построение графа взаимосвязанности
84
выражений для каждого обрабатываемого запроса выполняет модуль построения графа MCIG.
Прежде чем дать определение графа, определим используемые термины. Для этого рассмотрим вид программы на языке Datalog. Программа состоит из правил вида и запроса
, где , , - множества аргументов предиката. Заметим, что правило является альтернативной записью импликации , что равносильно
. Определим граф CIG, представляющий подобную программу. Определим терм как переменную, константу или функцию n>0 аргументов, причем аргументы также представлены термами. Атомом назовем предикат с n>0 аргументами, которые представлены термами, возможно, не уникальными (в нашем примере атомами будут являться ,
, ). Литералом назовем атом или отрицание атома.
Определим правило как набор литералов, объединенных операцией дизъюнкции, причем максимум один из литералов может являться атомом, остальные литералы должны являться отрицанием атомов (запросу соответствует правило , в таком правиле может
не быть термов, являющихся атомами).
В соответствии с [45] граф CIG представляет из себя четверку CIG=(N,E,S,R), где N - вершины графа, E - его дуги, S - подстановки, R - правила. Такой граф соответствует программе на DISGO QL, в которой отсутствуют определения ПИА или обращения к ним. Любому литералу в правиле программы соответствует вершина графа. Дуга <a,b> соединяет две вершины a и b, если они имеют унифицируемые атомы и противоположные знаки (то есть один из предикатов находится в голове правила (допустим, предикат a), другой — в хвосте, и при определенных условиях на переменные предикатов a и b предикат b можно выразить через предикат a). Знак отрицания имеют предикаты, находящиеся в хвосте правила (так как
). Каждой дуге <a,b> сопоставляется подстановка —
85
наиболее общий унификатор a и b. Правила представляют собой отображение, разбивающее множество вершин на подмножества, соответствующие правилам и основной части программы.
Далее используется модифицированное определение: в определение добавлено дополнительное отображение из множества дуг во множество условий Q, при которых переход по дуге возможен. Таким образом, модифицированный граф CIG (MCIG) представляет собой пятерку (N,E,S,R,Q), где N - вершины графа, E - его дуги, S ­подстановки, R- правила, Q - условия.
В совокупности с рассматриваемой далее модификацией процедуры унификации предложенное определение MCIG дает возможность унифицировать предикаты вне зависимости от результатов процедуры проверки на вхождение [46] и позволяет обрабатывать большее количество запросов. В процессе унификации во множество Q включаются условия вида x=f(x,...), которые в дальнейшем переводятся в выражения РА WHERE.
Для построения графа MCIG необходимо провести предварительную «нормализацию» пользовательской программы, то есть расширить ее предикатами, определенными в глобальной схеме, и избавиться от используемых ПИА. Данная нормализация проводится в несколько шагов.
Вначале программа дополняется правилами, рекурсивно выбираемыми из глобальной схемы, которые определяют предикаты, имена и пространства имен (ПИ) которых совпадают с именами и ПИ предикатов, используемых в программе.
Затем происходит обработка ПИА. С обработанными ПИА можно работать почти так же, как и с обычными предикатами. Данная обработка происходит следующим образом: для каждого необработанного предиката в хвосте правила пользовательской программы ищутся ПИА, определенные в глобальной схеме или в самой программе. ПИА может определяться в глобальной схеме явно или неявно (посредством правила) или неявно задаваться в
86
пользовательской программе. При поиске используется следующий критерий: имена и ПИ используемого и определяемого ПИА должны совпадать, количество аргументов используемого ПИА не должно превосходить количество аргументов определяемого ПИА и определяемый ПИА должен определять все аргументы с именами, к которым идет обращение в используемом ПИА. Если не найдено ни одного определяемого ПИА для используемого ПИА, то генерируется ошибка. Когда найдены все определяемые ПИА, соответствующие используемому ПИА, то используемый ПИА заменяется на сгенерированный специальным образом предикат P, задаваемый в ПИ runtime, и в пользовательскую программу добавляются правила, выражающие предикат P через определяемые ПИА. Предикат P сохраняет информацию о именах переменных используемого ПИА, что необходимо для процедуры унификации предикатов (и этим отличается от обычного предиката).
Рассмотрим пример преобразования программы DISGO QL с ПИА (рис. 3.1) в программу без ПИА (В DISGO QL имена атрибутов ПИА указываются в фигурных скобках после имени предиката). Приведенная программа выбирает лекции, которые читает Иванов.
Preamble {
schema="http://www.sfedu.ru/~alp/subjects2#"; must ?n; runtime:Lecture{name,lector}(?n,?l):­Subject{name,lector,type}(?n,?l,"lecture");
} runtime:Lecture{name,lector}(?n,"Иванов")
Рис. 3.1 Исходная программа DISGO QL
Пусть в глобальной схеме определены ПИА Subject{name,lector,type,hrs} и Subject{name,lector,type,hrs,course}, которые определяют информацию о читаемых курсах и отличаются тем, что второй предикат также определяет суммарную
87
продолжительность курса. Тогда при обработке ПИА внутреннее представление данной программы будет преобразовано к представлению, соответствующему программе без ПИА, приведенной на рис. 3.2.
Приведенная на рис. 3.2 программа не содержит необработанных ПИА и может быть обработана практически стандартным образом. Отметим лишь, что в процедуру унификации предикатов необходимо внести некоторые изменения, чтобы учитывать имена атрибутов предикатов и различать, например, предикаты Subject{{name,lector,type,hrs,course}} и Subject{{name,lector,type,course,hrs}}, которые потенциально могут сосуществовать в глобальной схеме.
Preamble { schema="http://www.sfedu.ru/~alp/subjects2#"; must ?n; runtime:Lecture{{name,lector}}(?n,?l):­runtime:Subject%name%lector%type{{name,lector,type}} (?n,?l,"lecture"); runtime:Subject%name%lector%type{{name,lector,type}}(?name,?lector,?type):­Subject{{name,lector,type,hrs}}(?name,?lector,?type,?hrs); runtime:Subject%name%lector%type{{name,lector,type}}(?name,?lector,?type):­Subject{{name,lector,type,hrs,course}}(?name,?lector,?type,?hrs,?course); runtime:Lecture%name%lector{{name,lector}}(?name,?lector):­runtime:Lecture{{name,lector}}(?name,?lector) } runtime:Lecture%name%lector{{name,lector}}(?n,"Иванов")
Рис 3.2. Программа с обработанными ПИА
После «нормализации» программы необходимо выполнить унификацию предикатов. При этом если предикаты унифицируемы, то между вершинами графа MCIG, соответствующим данным правилам, строится дуга. Данная дуга помечается множеством подстановок, которые нужно осуществить, чтобы перейти по ней, и множеством условий, которые должны выполняться для того, чтобы этот переход был возможен. Оба эти множества генерируются в
88
результате работы процедуры унификации предикатов. Таким образом, для построения графа MCIG после подготовки программы необходимо выполнить унификацию для всех определяемых и используемых в программе предикатов.
3.1.1. Алгоритм унификации предикатов в СИД DISGO
Пусть предикат
P находится в хвосте какого-либо правила Datalog-программы, а предикат P' - в голове этого же или другого правила данной программы. Алгоритм унификации предикатов позволяет определить, возможно ли выразить P через P', и какие условия на переменные данных предикатов должны выполняться. В данном подпункте описывается модифицированный алгоритм унификации.
Стандартный алгоритм унификации двух предикатов приведен в работе [46]. Данный алгоритм приходит к заключению, что предикаты не унифицируемы, например, в случае, когда в голове правила программы определен предикат runtime:p(?z,?z), а в в хвосте другого правила этой программы используется предикат runtime:p(?x,f(?x)), где f() - какая-либо функция. Заметим, что на самом деле подстановка предиката p(?z,?z) вместо p(?x,f(?x)) может быть выполнена при условиях ?z=?x, ?z=f(?z).
Разработанный алгоритм унификации обрабатывает подобные ситуации. Основное отличие предложенного алгоритма от известных состоит в том, что он сводит всю работу с отношениями, содержащими условия x=f(x,...) к работе с дополнительным множеством условий Q. Стоит отметить, что подобные условия могут появиться только после замены переменных в предикатах на новые переменные. К отличительным особенностям предложенного алгоритма относятся и проверка равенства имен аргументов при сопоставлении предикатов и некоторые модификации, учитывающие особенности генерации выражений РА по запросу на DISGO QL. Например, при унификации нельзя подставлять функцию вместо переменной в уравнениях, так
89
как это может привести к потере информации о том, как получить значения данной переменной на базе имеющихся отношений.
Заметим, что процедура унификации вызывается таким образом, что первый аргумент всегда имеет знак отрицания (то есть, он находится в хвосте правила). Алгоритм принимает на вход два предиката, которые нужно унифицировать, и определяет возможность унификации. В случае возможности их унификации алгоритм также генерирует множество подстановок S и множество условий Q, при которых унификация возможна. Данный алгоритм представлен на рис. 3.3.
Рис. 3.3 Алгоритм унификации предикатов
В ходе обработки аргументов предикатов в основном цикле алгоритма также происходят некоторые замены обрабатываемых переменных и функций на значения парных констант и переменных во множестве Q, в аргументах обрабатываемых предикатов и функций.
90
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]