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

ВЫВОДЫ

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

ПЕРЕЧЕНЬ ССЫЛОК

1. Арзякова О. Н., Агарков Г. А., Кормышев В. М. Управление финансовыми ресурсами государственного вуза в рыночных условиях (информационное и математическое моделирование) // Университетское управление: практика и анализ. - 1998. - № 4(7). - С. 49-51.

2. Башарин Г. П. Начала финансовой математики. - М.: Инфра-М, 1997. - 160 с.

3. Вендров А. М. Методы и средства моделирования бизнес-процессов // Информационный бюллетень «Jet Info». - 2004. - № 10(137). - С. 1-32.

4. Данич В. Денежно-финансовые и товарные потоки // Бизнес-информ. 1999. - № 13-14. - С. 43-48.

5. Минко Е. П., Слипченко Е. В. Математические модели финансовых потоков, возникающих в процессе дея-

тельности многоуровневых бизнес-структур // Радиоэлектроника и информатика. - 2003. - № 1. - С. 140-143.

6. Пуртов В. Ф., Слипченко Е. В. Управление финансовой деятельностью иерархических бизнес-структур // Теория и техника передачи, приема и обработки информации: Материалы 9-й Международной конференции (19-22 сентября). - Туапсе-Харьков: Харьковский национальный университет радиоэлектроники, 2003. -С. 441-442.

7. Слипченко Е. В. Исследование влияния экономических факторов на рентабельность деятельности бизнес-структур // Автоматизированные системы управления и приборы автоматики. - 2002. - Вып. 119. - С. 16-21.

8. Слипченко Е. В. Оптимальное управление оборотными средствами с учетом специфики банка // Радиоэлектроника и информатика. - 2004. - № 2 - С. 140-144.

9. Слипченко Е. В. Статистический анализ влияния экономических факторов на рентабельность деятельности бизнес-структур в Харьковской области // Радиоэлектроника и информатика. - 2002. - № 2. - С. 119-122.

10. Слипченко Е. В., Пуртов В. Ф. Управление финансовыми потоками иерархических бизнес-структур // Теория и техника передачи, приема и обработки информации: Материалы 10-й Международной конференции (1-4 октября). - Туапсе-Харьков: Харьковский национальный университет радиоэлектроники, 2004. - С. 315-316.

Надшшла 22.05.06

Вивчена iepapxinna структура 6Í3Hec-npou,ecie. Budiëe-ний клас типових i елементарних 6Í3Hec-npou,ecie. Для них сформулъоват тиnoвi завдання оптимального управ-лтня оборотними коштами i запропоноват конкретт ал-горитми ïx рШення.

The hierarchical structure of business-processes is studied. The class of business-processes of models and elementary is selected. For them the typical tasks of optimum management circulating assets are formulated and the concrete algorithms of their decision are offered.

УДК 004.65:330.47

М. К. Демин

МЕТОДЫ ПРЕДСТАВЛЕНИЯ ИЕРАРХИЧЕСКОЙ ИНФОРМАЦИИ В РЕЛЯЦИОННЫХ БАЗАХ ДАННЫХ ИНФОРМАЦИОННО-УПРАВЛЕНЧЕСКИХ АРХИТЕКТУР

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

ВВЕДЕНИЕ

База данных информационно-управленческих архитектур (ИУА) должна хранить и обрабатывать большое количество иерархической информации. Традици-

© Демин М. К., 2007

онно обработка данных, носящих иерархический характер, организуется при помощи рекурсивных процедур. Многие современные реляционные СУБД обеспечивают возможность использования рекурсии в хранимых процедурах (InterBase, Oracle). Следовательно, в таких СУБД возможна обработка иерархической информации стандартными методами. Но производительность в таких случаях может оказаться неудовлетворительной. Исследование эффективности различных методов представления иерархической информации в задачах характерных для БД ИУА ранее не проводилось.

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

Наиболее распространенным является метод представления иерархической информации, основанный на хранении матрицы смежности в виде таблицы:

ШБЕЛБ РАИЕЫТ_т

где КОБЕ_ТБ - идентификатор (код) узла иерархии, РАКЕЫТ_ТБ - код родительского узла.

В [1] описано применение данного метода и отмечена возможность использования рекурсивных хранимых процедур для извлечения иерархической информации. В [2] описана структура реляционной БД ИУА, в которой для представления иерархической информации использовался именно этот метод. Его использование возможно только в том случае, если СУБД поддерживает рекурсивные хранимые процедуры. Иначе для обработки иерархической информации потребуется отдельное клиентское приложение, которое будет использовать временные таблицы или курсоры [3].

Метод вложенных множеств был предложен Джо Селко в [4]. Его проще всего объяснить при помощи рис. 1.

Таблица, содержащая информацию о дереве, будет следующей:

ШБЕЛБ ЬЕЕТ_ ШОНТ_

Дерево обходится в прямом порядке. Считается, что каждый узел посещается дважды (на спуске и на возврате). Начинается обход при значении счетчика 1. При каждом посещении узла счетчик увеличивается на 1. При первом посещении узла значение счетчика помещается в столбец БЕЕТ_, а при втором в столбец ШСНТ_. Возможность анализа иерархической информации обеспечивает, то что для всех дочерних узлов некоторого элемента дерева выполняются следующие условия: ЕЕЕТ_дОЧернего > ЕЕЕТ_р0дительского

и РТСНТ < РТСНТ

и дочернего родительского.

Строковый метод представления иерархий описан в [5]. Таблица, содержащая информацию о дереве для данного метода:

ШБЕЛБ НИ_РО8

Рисунок 1 - Метод вложенных множеств представления иерархической информации

Рисунок 2 - Строковый метод представления иерархической информации

Здесь значением атрибута НИ_РО8 является строка, по которой можно восстановить позицию элемента в иерархии. Эта строка состоит из идентификаторов родительских узлов и идентификатора самого элемента, разделенных точками. Для дерева, представленного на рис. 1, соответствующие значения строки НИ_РО8 указаны на рис. 2.

Здесь полагается, что код узла а - 1, Ь - 2, и т. д.

Так как точки являются разделителями идентификаторов, то целесообразно их использовать исключительно в этом качестве. Т. е. точки в начале и в конце строки можно опустить (например, вместо значения «.1.2.5.6.» использовать «1.2.5.6»). Тем более что от этого реализация методов работы с иерархической информацией не усложняется.

Аналогичный метод применялся в [6], но там вместо идентификаторов узлов в строке, определяющей позицию в иерархии, использовалась локальная нумерация в пределах родительского узла. Следует отметить, что в этом случае гораздо сложнее обеспечить автоматический контроль целостности данных.

ПОСТАНОВКА ЗАДАЧИ

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

МЕТОДЫ И АЛГОРИТМЫ РЕШЕНИЯ

Вначале остановимся на таких немаловажных факторах, влияющих на выбор метода, как сложность

реализации, возможность осуществления автоматического контроля целостности данных и требования, предъявляемые этими методами к СУБД.

Наиболее простым в реализации является метод хранения матрицы смежности. Автоматический контроль целостности данных в этом случае легко реализуется при помощи триггеров. Так, при вставке элемента можно проверять присутствует ли в таблице родительский элемент. В приведенном нами примере организации данных для этого метода того же самого можно добиться использованием внешнего ключа. Но ввиду многослойности ИУА в реальной БД родительский элемент может присутствовать в таблице, определяющей подчинение, но относиться к другой иерархии. В таком случае необходимо использование триггера. При удалении элемента можно удалять все дочерние узлы, т. е. узлы, у которых РАКЕЫТ_ГО равно N0-БЕ_ГО, удаляемого элемента. Для таких элементов вызовется тот же триггер, и будет произведено рекурсивное удаление поддерева.

При использовании этого метода СУБД должна поддерживать рекурсивные хранимые процедуры.

Следует отметить, что производительность выборки иерархий, осуществляемой при помощи только рекурсивных хранимых процедур, в случае, если хранятся большие объемы иерархической информации, оказывается недостаточной даже для простого извлечения иерархий и передачи их клиенту. Поэтому метод был оптимизирован следующим образом (на примере БД ИУА, описанной в [1]).

Таблица 8иВ^СТТ0^ в которой храниться информация о подчинении узлов, была модифицирована и приняла вид:

NODE_ID PARENT_ID TH_ID ENT_ID

Т. е. был добавлен столбец ЕКГ_ГО, что позволило переносить (копировать) информацию об извлекаемой иерархии во вспомогательную таблицу перед началом работы рекурсивной хранимой процедуры. После извлечения информации данные из вспомогательной таблицы удаляются. Это повысило производительность, так как рекурсивная часть алгоритма стала работать только с необходимыми данными из вспомогательной таблицы. Все эти действия оформлены в виде хранимой процедуры и выполняются в рамках отдельной транзакции. Поскольку изменения, вносимые в пределах транзакции, не видны другим транзакциям до ее подтверждении, и данные, вносимые во вспомогательную таблицу удаляются до подтверждения транзакции, то метод можно использовать и в многопользовательских системах.

При извлечении иерархий целиком механизм рекурсии можно и не использовать, но в таком случае ус-

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

В дальнейшем будет рассматриваться именно указанная модификация метода.

При использовании метода вложенных множеств не предъявляется каких-либо особых требований к СУБД, но он является наиболее сложным в реализации. Приведем для примера хранимую процедуру, осуществляющую переподчинение узла (реализация для СУБД FireBird). Замечание: автор метода в своих статьях [2] не приводит процедуру переподчинения узла. Приведенный пример является разработкой автора данной статьи.

CREATE PROCEDURE RESUBJECT_TREE ( SUB_TREE_ROOT INTEGER/^ереподчиняемыш узел*/, NEW_PARENT INTEGER/*ero новый родитель*/) AS

DECLARE VARIABLE SUB_TREE_LEFT INTEGER; DECLARE VARIABLE SUB_TREE_RIGHT INTEGER; DECLARE VARIABLE NEW_PARENT_RIGHT INTEGER; DECLARE VARIABLE SUB_TREE_NODES_COUNT INTEGER; DECLARE VARIABLE RIGHT_DIFF INTEGER; begin

select left_, right_ from «Personnel» where «Personnel».name = :sub_tree_root into :sub_tree_left, :sub_tree_right;

select count(*) from «Personnel»

where left_ >= :sub_tree_left and right_ <= :sub_tree_right

into :sub_tree_nodes_count;

/*шаг 1*/

update «Personnel»

set left_ = left_ + 1000,

right_ = right_ + 1000

where left_ >= :sub_tree_left and right_ <= :sub_tree_right; /*шаг 2*/ update «Personnel»

set right_ = right_ - 2 * :sub_tree_nodes_count where right_ > :sub_tree_right and left_ < 1000;

update «Personnel»

set left_ = left_ - 2 * :sub_tree_nodes_count where left_ > :sub_tree_right and left_ < 1000;

/*шаг 3*/

select right_ from «Personnel» where «Personnel».name = :new_parent into :new_parent_right;

update «Personnel»

set left_ = left_+2 * :sub_tree_nodes_count where left_ > :new_parent_right and left_ < 1000;

update «Personnel»

set right_ = right_ + 2 * :sub_tree_nodes_count where right_ >= :new_parent_right and right_ < 1000; /*шаг 4*/

right_diff = sub_tree_right + 1001 - new_parent_right - 2 *

sub_tree_nodes_count; update «Personnel» set left_ = left_ — :right_diff, right_ = right_ — :right_diff

where left_ >= :sub_tree_left + 1000 and right_ <= :sub_tree_right + 1000; end

На первом шаге переподчиняемая часть дерева исключается из рассмотрения путем прибавления к значениям LEFT_ и RIGHT_ большого числа (здесь 1000, число должно быть больше чем максимальное количество элементов в иерархии умноженное на 2). Вся иерархическая информация переподчиняемой части дерева сохраняется.

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

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

На четвертом шаге происходит приведение значений LEFT_ и RIGHT_ элементов перемещаемого поддерева в соответствие с новой структурой иерархии. Делается это путем вычитания из LEFT_ и RIGHT_ специального значения, зависящего от количества элементов поддерева, а также его старой и новой позиций.

Дополнительную ясность можно внести при помощи схемы (рис. 3). Здесь элемент b ставится в подчинение элементу c.

Организация контроля целостности данных также возможна при помощи триггеров. Например, при удалении узла требуется удалять также все элементы, для которых

выполняется условие ^^_элемента > ^^_удаляемого

и ШЖТ_элемента < ИЖТ_удаляемого. В случае органи-

Рисунок 3 - Переподчинение узла при использовании метода вложенных множеств

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

Отметим возможность использование для столбцов LEFT_ и RIGHT_ вещественных типов данных. В этом случае вставка элемента и переподчинение узлов может осуществляться без обновления значений LEFT_ и RIGHT_ всего дерева. Но так как число значимых цифр при машинном представлении вещественных чисел является конечным, то в этом случае структура дерева не может быть произвольной. Чтобы сохранить преимущества использования вещественных типов данных необходимо вводить ограничения на максимальное количество дочерних элементов и максимальную глубину дерева. Для БД ИУА такие ограничения получаются слишком жесткими, поэтому описанная модификация метода в дальнейшем не рассматривается.

Строковый метод представления иерархической информации по сложности реализации занимает промежуточное положение между двумя предыдущими. Для использования этого метода необходимо, чтобы СУБД предоставляла развитые возможности работы со строками. Необходимость наличия таких возможностей продемонстрируем примером. Функция переподчинения элемента при использовании строкового метода (реализация для СУБД FireBird):

CREATE PROCEDURE RESUBJECT_TREE_V2 ( SUB_TREE_ROOT INTEGER /*переподчиняемый узел*/, NEW_PARENT INTEGER /*его новый родитель*/ ) AS

DECLARE VARIABLE NODE_HR_POS VARCHAR(100); DECLARE VARIABLE NODE_HR_POS_LEN VARCHAR(100); DECLARE VARIABLE NEW_PARENT_HR_POS VARCHAR(100); begin

select hr_pos from hierarhy where name = :SUB_TREE_ROOT into :node_hr_pos;

select hr_pos from hierarhy where name = :NEW_PARENT into :new_parent_hr_pos;

new_parent_hr_pos = rtrim(new_parent_hr_pos); node_hr_pos = rtrim(node_hr_pos); node_hr_pos_len = strlen(node_hr_pos);

update hierarhy

set hr_pos = :new_parent_hr_pos II '.' Il substr(hr_pos, :node_hr_pos_len, strlen(hr_pos)) where hr_pos like :node_hr_pos Il '%'; end

Здесь strlen - определяет длину строки, substr - извлекает подстроку, rtrim - удаляет завершающие пробелы, кроме того используется операция конкатенации строк.

Замечания относительно организации контроля целостности данных аналогичны таковым по предыдущему методу.

Из представленных трех методов этот наиболее требователен к памяти. Так для описания одной дуги в БД ИУА при использовании первого метода необходимо 12 байт, при использовании второго - 16, а для третьего метода - более 100. Для первичных ключей чаще всего используется четырехбайтовое целое, его максимальное значение: 2 147 483 647. В строковом представлении такое значение может занимать до 10 байт. Прибавим 1 байт на разделитель. Получится, что максимальный объем используемой для описания одной дуги памяти равен максимальной глубине иерархии, умноженной на 11. Объем используемой памяти можно сократить, заменив для столбца HR_POS тип char на varchar, но это зачастую приводит к снижению производительности, так как каждая строка таблицы будет занимать различный объем памяти, что замедляет извлечение информации.

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

Для анализа эффективности была создана база данных, структура ее аналогична описанной в [2], но иерархическая информация представляется сразу тремя методами. БД была заполнена тестовой информацией, включающей 4000 иерархий. Размеры иерархий варьируются от 2 до 300 элементов, средний размер иерархий - 26 элементов, максимальная глубина - 8, максимальное количество дочерних элементов - 9 (среднее -5). Тестовая БД реализована с использованием СУБД FireBird 1.5. Конфигурация тестовой платформы: Athlon 64 3000+, 512 M ОЗУ, HDD Sumsung SpinPoint 2504c 7200 SATA II.

РЕЗУЛЬТАТЫ

0,14

0,12

I 0,1

t о.

о

10 0,08

о

(С 0,06

V

а СП U.U4

0,02

0

------Матрица /

смежности /'

-Вложенные i

множества f

----Сторэковый метод /

/

/

s

i ^-1-.-.-i-i-

10 20 30 60 100 150 Количество элементов

200 250

Рисунок 4 - График зависимости времени выборки от размера иерархии

тельность. Но чем больше иерархия, тем сильнее отстает метод хранения матрицы смежности. При размере иерархии 250 элементов он в 25 раз медленнее метода вложенных множеств. В тоже время строковый метод показывает лишь немногим меньшую эффективность. Из графика (рис. 4) видно, что метод хранения матрицы смежности непригоден для работы с большими иерархиями.

Таблица 1 - Время выборки иерархий в зависимости от количества элементов

Количество элементов в иерархии Время выборки, мсек

Метод хранения матрицы смежности Метод вложенных множеств Строковый метод

6 3,83 3,27 3,28

10 4,29 3,29 3,29

20 5,34 3,43 3,49

50 10,05 3,71 3,82

100 24,35 4,28 4,63

150 48,89 4,94 5,46

200 83,93 5,46 6,18

250 126,43 5,87 6,81

Приведем результаты определения времени извлечения одной иерархии. Эти тесты выполнялись 100 раз, в таблице 1 указаны средние значения.

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

При извлечении иерархий небольшого размера (до 8 элементов) методы показывают сходную производи-

С целью проверки эффективности обработки больших массивов иерархической информации на стороне сервера был выполнен еще один тест на выборку данных. Время работы хранимой процедуры, выполняющей извлечение 1000 иерархий представлены в следующей таблице 2.

Таблица 2 - Время выборки иерархий 1000 иерархий

Время выборки, сек

Метод хранения матрицы смежности Метод вложенных множеств Строковый метод

При первом запуске 232,277 50,955 54,585

При последующих запусках 221,306 2,774 2,912

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

Здесь же можно отметить влияние оптимизации на производительность метода хранения матрицы смежности. Так в случае использования оптимизированного метода время выполнения этого запроса составило 232,277 сек, а неоптимизированного 1081,784 сек.

Далее приведем результаты тестов переподчинения и удаления поддерева (табл. 3 и 4).

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

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

ВЫВОДЫ

В статье были проанализированы возможные методы представления иерархической информации в реля-

ционных базах данных, на примере их использования в БД ИУА. Получил дальнейшее развитие метод вложенных множеств. Был проведен эксперимент по сравнительному тестированию указанных методов.

Если в проектируемой БД объем иерархической информации будет незначительным и СУБД поддерживает рекурсивные хранимые процедуры, то можно порекомендовать метод хранения матрицы смежности как наиболее просто реализуемый. В современных условиях, когда в основном не требуется жесткой экономии памяти, оправданным будет использование строкового метода, по соображениям простоты реализации и более высокой производительности в задачах модификации данных. Метод вложенных множеств можно порекомендовать использовать в случае, если требуется максимальная скорость выборки данных либо при необходимости экономии памяти.

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

Направлениями дальнейших исследований могут являться анализ статистических характеристик производительности предложенных методов, влияние методов представления иерархической информации на эффективность БД ИУА в целом. Кроме того, при заполнении БД тестовой информации учитывался тот факт, что число подчиненных не должно быть больше девяти, а оптимальный охват контролем - пять подчиненных [7]. Необходимо уточнить эту характеристику иерархий на основании результатов мониторинга ИУА.

ПЕРЕЧЕНЬ ССЫЛОК

1. Ковязин А. Мир InterBase: Архитектура, администрирование и разработка приложений баз данных в InterBase / Firebird / Yaffil / А. Ковязин, С. Востриков. -СПб.: Питер, 2005. - 496 с.

2. Демин М. К. Реляционные модели и базы данных многослойных информационно-управленческих архитектур // Информационные технологи в научных исследованиях и учебном процессе. Спецвыпуск: Сб. науч. тр. -Алчевск: ДонГТУ, 2005. - С. 38-50.

3. SQL Server Books online. Expanding Hierarchies [Electronic resource] / Microsoft. - Electronic data. - [USA], [199-?]. - Access order: http://msdn2.microsoft.com/ en-us/library/aa172799(SQL.80).aspx, free. - Title from screen.

4. Celko J. A Look at SQL Trees / Joe Celko // DBMS online [Electronic resource] / Miller Freeman, Inc. - Electronic mag. - [USA]: DBMS and Internet Systems, 1996. -March. - Access order: http://www.dbmsmag.com/ 9603d06.html, free. - Title from screen.

5. Ben-Gan I. Advanced Transact-SQL for SQL Server 2000 / Itzik Ben-Gan, Tom Moreau. - Berkeley: Apress, 2000. -864 p.

Таблица 3 - Время переподчинения 1000 поддеревьев

Время, сек

Метод хранения матрицы смежности Метод вложенных множеств Строковый метод

2,704 19,317 7,068

Таблица 4 - Время удаления 1000 по ддеревьев

Время, сек

Метод хранения матрицы смежности Метод вложенных множеств Строковый метод

288,387 12,199 4,909

6. Дании В. Н. Реляционные модели и базы данных информационно-управленческих архитектур / В. Н. Да-нич, Н. А. Митина, И. С. Хрестина // Вестник ВНУ, Луганск: Изд. ВНУ, 2003. - № 7 (65). - С. 119-131.

7. Байнев В. Ф. Основы теории организаций. Минск: БГУ, 2002. - 87 с.

Надшшла 18.12.06 Шсля доробки 30.01.07

У статт1 анал1зуються можлив1 методы представления 1ерарх1чноЧ шформацп в базах даних тформацшно-управл1нських арх1тектур, наведет результаты тесту-вання ефективност1 цих метод1в у реальных задачах,

oöpanuü Kpaw,iü Memod, nadani çaïaëbni peKOMendau,i'i w,odo çacmocyeanna po3znxnymux Memodie y penxu,iunux ôaçax danux.

Possible methods of representation of the hierarchical information in databases of Information-Administrative Architectures are analyzed in the article. Results of testing of these methods in real tasks are listed. Best method was chosen. General recommendations of using considered methods in relational databases are given.

УДК 004.75

M. Б. Ильяшенко

АЛГОРИТМ НАХОЖДЕНИЯ ГРАФ-ПОДГРАФ ИЗОМОРФИЗМА ДЛЯ ВЗВЕЩЕННЫХ ГРАФОВ И ЕГО ПРИМЕНЕНИЕ

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

ВВЕДЕНИЕ

Задачи распределения нагрузки - это средство более эффективного использования ресурсов вычислительной системы за счет распределения решаемых задач среди вычислительных узлов системы. Существует множество подходов к распределению и балансировке нагрузки, применяемых в зависимости от требований, предъявляемых к вычислительной среде. Основными являются графо-аналитический подход [1-5], подход математического программирования [6, 7] и эвристический подход [8, 9]. Применяются также гибридные методы [10].

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

Построение систем планирования размещения задач в сети позволит производить статическую балансировку нагрузки на уровне планирования загрузки вычислительной сети в целом, в которой каждой пользовательской задаче выделяются (резервируются) ресурсы,

© Ильяшенко М. Б., 2007

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

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

Основными особенностями динамических методов балансировки нагрузки:

- постоянно часть вычислительных ресурсов выделена на процесс, отслеживающий изменения в загрузке узлов вычислительной среды и планирующий перераспределение нагрузки между узлами сети;

- перемещение исполняемых процессов между узлами сети обычно производится на системном уровне, что не всегда возможно или затруднено, например, случае, если сам процесс работает на системном уровне (как в системах контроля и наблюдения процессы, обрабатывающие сигналы с датчиков);

- если распределенная вычислительная среда работает под управлением различных операционных систем, применение единой системы балансировки нагрузки часто бывает затруднено;

- техническая реализация систем балансировки нагрузки в реальном времени более сложна и их работа менее надежна, что является препятствием их примене-