Научная статья на тему 'Иерархия данных в задачах проектирования специальных грузоподъемных механизмов и машин'

Иерархия данных в задачах проектирования специальных грузоподъемных механизмов и машин Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
124
18
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГРУЗОПОДЪЕМНЫЕ МАШИНЫ / МОДЕЛИРОВАНИЕ / ИЕРАРХИЧЕСКАЯ СТРУКТУРА / РЕКУРСИЯ / РЕЛЯЦИОННЫЕ СИСТЕМЫ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Бортяков Даниил Евгеньевич, Мещеряков Сергей Владимирович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Problems in designing an object-hierarchical structure for modeling special lifting devices and machines are considered. Basic methods to resolve the recursiveness issue on handling a hierarchy in relational systems are stated

Текст научной работы на тему «Иерархия данных в задачах проектирования специальных грузоподъемных механизмов и машин»

-►

Вычислительные машины и программное обеспечение

УДК 681.3.016

Д.Е. Бортяков, С.В. Мещеряков

ИЕРАРХИЯ ДАННыХ В ЗАДАЧАХ ПРОЕКТИРОВАНИЯ

специальных грузоподъемных механизмов и машин

Задачи проектирования специальных грузоподъемных механизмов и машин (СГПМ) так или иначе связаны с созданием базы данных (БД) объектно-реляционного типа, предназначенной для хранения информации об объектах СГПМ и связях между ними. Объекты в реляционных таблицах БД могут быть как независимыми друг от друга (так называемые «плоские» таблицы), так и вложенными (иерархические данные с логическими связями «предок-потомок»).

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

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

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

Теоретический анализ методов организации иерархии данных

Классическая реализация неограниченной иерархии данных показана на рис. 2. Множеством допустимых ссылок на предков (PARENT_ID) является диапазон значений первичного ключа (ID) плюс одно пустое значение (NULL), используемое для обозначения отсутствия родительского объекта:

V = К} и P = {v: veP v v0},

(1)

V = {у^ ур ..., ,

где V - множество значений ссылок на предков; Р - диапазон значений первичного ключа, Р = {1, ..., к}; к - максимально допустимое значение Р; у0 - значение, обозначающее отсутствие родительского элемента, у0 = 0.

Структура со ссылкой на предка имеет целый ряд недостатков:

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

наличие рекурсии при вычислении уровня вложенности объекта;

сложность получения потомков, особенно непрямых;

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

удаление и переподчинение иерархических объектов тоже крайне проблематично, поскольку надо обеспечить целостность ветви потомков, чтобы в таблице не осталось объектов-«сирот».

Например, для иерархии систем изменения вылета стреловых кранов (см. рис. 1) все механизмы-потомки третьего поколения (гидрав-

я о к

л &

§

я о

ч

и

а н о

& а

о

К

о К

TBL NAME

ГО

NAME PARENT ID

INTEGER <pk>

VARCHAR (254) INTEGER <fk>

ID = PARENTJD

Рис. 2. Модель со ссылкой на предка и неограниченной иерархией

лический, реечный, винтовой, шпренгельный и т. д.) можно получить посредством следующего рекурсивного SQL-запроса:

SELECT * FROM TBL_NAME WHERE PARENT ID IN

Л/ГС W/UCD С

(2)

(SELECT ID FROM TBL_NAME WHERE PARENT_ID IS NULL))

Проблему быстрого получения уровня вложенности можно решить добавлением в структуру со ссылкой на предка (см. рис. 2) нового поля (LEVEL) для хранения уровня иерархии объекта, как показано на рис. 3.

Тогда SQL-запрос (2) на выборку всех механизмов изменения вылета стреловых кранов третьего поколения не содержит рекурсию:

SELECT * FROM TBL_NAME WHERE LEVEL = 3

(3)

Другой модификацией структуры со ссылкой на предка (см. рис. 2) является иерархия с хранением границ ветви (рис. 4). Эта реализация отличается наличием двух полей (ID_LOW и ГО_НЮН) для указания начала и конца диапазона первичных ключей, где содержатся все потомки.

С ростом размера таблицы данных возникает опасность того, что модификация одного объекта иерархии или целой ветви повлечет за собой перегенерацию всех первичных ключей. Однако в SQL-запросе рекурсия отсутствует. В следующем примере иерархии СГПМ (см. рис. 1) выбираются все уравновешивающие устройства:

SELECT * FROM TBL_NAME (4) WHERE ID_LOW >= 1 AND ID_HIGH <= 3

Несмотря на отсутствие рекурсии в SQL-запросах, модели (рис. 3 и 4) по-прежнему содержат рекурсивную связь ID = PARENT_ID. Поэтому данные решения половинчатые. На больших наборах данных, какими являются СГПМ, рекурсия приводит к значительному снижению производительности и даже отказу в обслуживании сервера БД, что совершенно недопустимо в системах масштаба предприятия.

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

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

Ограничение 1. Конечное число уровней вложенности.

Ограничение 2. Максимальное число непосредственных потомков.

Ограничение 3. Фиксированное количество объектов одного уровня.

Например, иерархия объектов СГПМ (рис. 1) может быть ограничена 5 уровнями. Для каждого уровня вложенности можно создать отдельную таблицу, позволяющую хранить неограниченное число потомков. На рис. 5 приведен пример трехуровневой структуры.

Полный путь от объекта до корня дерева определяется составным первичным ключом.

Рис. 3. Модель иерархии с хранением уровня вложенности

Ю = PARENTJD Рис. 4. Модель иерархии с хранением границ ветви

Рис. 5. Потабличное представление иерархии данных

могут

(5)

На примере иерархии (рис. 1), для объекта второго уровня с ID = 4 (тип металлоконструкции), у которого предок первого уровня имеет ID = 2 (стреловая система), все прямые потомки (шпрен-гельные, балочные, комбинированные) быть получены посредством SQL-запроса:

SELECT * FROM TBL_NAME3 WHERE PARENT_ID = 2 AND PARENT_ID2 = 4 В случае добавления уровня вложенности потребуется создать новую таблицу аналогично описанию TBL_NAME2, что является недостатком потабличного метода, поэтому он применим при ограничении 1.

Другая безрекурсивная структура, с фиксированным числом потомков, основана на ограничении 3 и позволяет хранить иерархические данные в виде реляционного отношения с набором атрибутов:

R (av av а^ bv bv ср с2\ (6)

где а1, а2, ..., ап - информация об объекте первого, второго, ..., n-го уровня иерархии; n - максимальное количество потомков; b1 - уровень вложенности объекта; b2 - смещение (номер столбца) с описанием объекта, 1 < b2 < n; c1 - уровень вло-

женности предка; c2 - смещение (номер столбца) с описанием предка, 1 < c2 < n.

Иерархический объект определяется уровнем вложенности и смещением (номером столбца), где содержится наименование объекта. Аналогично этому, ссылка на предка состоит из номера предыдущего уровня иерархии и смещения (номера столбца) с описанием родителя. В табл. 1 приведен пример иерархии, в которой можно хранить максимум три потомка.

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

Таблица 1

Иерархия с неограниченной глубиной и конечным числом потомков

TBL_NAME

LEVEL INTEGER

OFFSET SMALLINT

NAME1 VARCHAR (254)

NAME2 VARCHAR (254)

NAME3 VARCHAR (254)

PARENT LEVEL INTEGER

PARENT_OFFSET SMALLINT

Таблица 2

Иерархическая модель данных с поразрядным ключом

TBL_NAME

Ш DECIMAL (5)

NAME VARCHAR (254)

личество потомков каждого уровня фиксировано или меняется достаточно редко.

Еще одна структура - с поразрядным ключом (табл. 2) основана на стандартных типах данных. Первичный ключ (ID) кодируется таким образом, что десятичный разряд числа означает уровень вложенности, а цифра в этой позиции - номер объекта на данном уровне, например '034' - третий объект второго уровня, предок которого четвертый объект первого уровня.

Числовой тип DECIMAL(5) задает глубину иерархии 5 и максимальное количество потомков каждого уровня 9. Символьный тип CHAR позволяет увеличить максимальное число потомков до 254 и более. Поразрядный ключ ограничивает как вложенность (ограничение 1), так и число потомков (ограничение 2), поэтому применим при равномерном распределении элементов по уровням.

Задача выборки потомков облегчается тем, что в первичном ключе содержится информация о полном пути к объекту. У потомков совпадают младшие разряды, например для предка с ID = 32 все объекты-потомки будут иметь первичные ключи из следующего ряда:

P = {132, 232, 332, ...}. (7)

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

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

Проведенный анализ методов организации иерархии позволяет сделать вывод о том, что практическое применение рекурсивных моделей неэффективно на больших наборах данных, таких, как СГПМ. Ошибки иерархии (зацикливание, объекты-«сироты») диагностируются ненадежно, особенно на этапе промышленной эксплуатации. В результате происходит снижение производительности и даже отказ в обслуживании сервера БД.

Безрекурсивные методы иерархии более эффективны по сравнению с традиционными и апробированы на практике [3]. Иерархию СГПМ всегда можно ограничить по глубине или количеству элементов каждого уровня достаточно большим числом. В зависимости от принятых ограничений в каждом конкретном случае практической реализации выбирается та или иная иерархическая модель данных.

СПИСОК ЛИТЕРАТУРЫ

1. Бортяков, Д.Е. Математическая модель системы изменения вылета портальных кранов [Текст] / Д.Е. Бортяков, А.Н. Орлов // Изв. вузов. Сер. Машиностроение. -1990. -№ 5. -С. 86-91.

2. Голованов, М. Иерархические структуры данных в реляционных БД [Электронный ресурс] / М. Голованов // RSDN Magazine. -2002. -№ 0. -Режим доступа: http://rsdn.ru/article/db/Hierarchy.xml

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3. Mescheryakov, S. Performance Comparison of Various Hierarchical Structures in Database Systems [Электронный ресурс] / S. Mescheryakov // Proc. of the 30th International Conf. for the Resource Management and Performance Evaluation of Enterprise Computing Systems. -USA. Las Vegas. -2004. -Режим доступа: http:// www.cmg.org/proceedings/2004/

i Надоели баннеры? Вы всегда можете отключить рекламу.