Инженер Гудков К.С.
Государственный научно-исследовательский институт
авиационных систем, Россия
Выделение изменений в версиях открытых баз данных при построении
автоматизированной системы импорта внешних справочников
В работах [1, 2] был предложен механизм управления
нормативно-справочной информации в корпоративных информационных системах. Он
включает в себя:
· создание консолидированной базы данных нормативно-справочной информации
(КБД НСИ);
· создание автоматизированной системы импорта данных внешних справочников
(АСИВС);
· создание гетерогенной системы репликации данных.
При таком подходе внешние справочники, извлекаемые из открытых баз
данных, импортируются КБД НСИ при помощи АСИВС, а затем экспортируются
территориально удалённым участкам корпоративной информационной системы при
помощи гетерогенной системы репликации данных. Было показано [3], что процесс
импорта данных описывается следующей формулой:
Функция осуществляет перенос внешних справочников во внутренний
формат данных АСИВС. В авторской реализации АСИВС в качестве такого внутреннего
формата выбран CSV. Функция сравнивает предыдущую и текущую версию
справочников и выделяет произошедшие в справочниках изменения. Функция видоизменяет таблицы КБД НСИ в соответствии с изменениями,
выделенными при помощи . Вычисление каждой из этих функций
программное. Задача данной работы – предложить алгоритм для вычисления .
Открытые базы данных содержатся на WEB-сайтах и доступны для скачивания. На одном из компьютеров локальной
сети, в которой расположена КБД НСИ, устанавливается АСИВС. АСИВС имеет внутренние
папки OLD, NEW, CHANGES, в которые помещаются справочники, преобразованные к формату CSV. Рассмотрим процесс выделения изменений на примере произвольного
справочника . Перед выполнением в папке NEW располагается текущая версия , а в папке OLD – предыдущая. Папка CHANGES – пустая. Предлагается следующий алгоритм выделения изменений:
· Данные предыдущей версии справочника в виде текстовых строк заносятся в
красно-чёрное дерево [4].
· Для каждого кортежа текущей версии справочника проверяется его наличие в
красно-чёрном дереве. Если он есть в красно-чёрном дереве, то никаких действий
не предпринимается. Если его нет, то кортеж добавляется к файлу добавленных
строк в составе папки CHANGES.
· Данные текущей версии справочника в виде текстовых строк заносятся в
красно-чёрное дерево.
· Для каждого кортежа предыдущей версии справочника проверяется его
наличие в красно-чёрном дереве. Если он есть в красно-чёрном дереве, то никаких
действий не предпринимается. Если его нет, то кортеж добавляется к файлу
удалённых строк
в составе папки CHANGES.
Возникает вопрос: «Насколько эффективен
предложенный алгоритм?». Для ответа на него был выполнен теоретический анализ
при помощи теории сложности и практический анализ при помощи компьютерного
моделирования с дальнейшим использованием методов прикладной математической
статистики. Основная операция в составе предложенного алгоритма – это поиск в
заданной структуре данных. Рассмотрим следующие альтернативные структуры
данных, которые могли бы быть использованы в алгоритме:
·
красно-чёрное дерево;
·
AVL-дерево [5];
·
хэш-таблица;
·
бинарное дерево поиска;
·
линейный список.
С точки зрения теории сложности операция поиска для
каждой из рассматриваемых структур данных относится к классу сложности P. Поиск элемента в линейном списке занимает время порядка . В худшем случае такое же время затрачивается
и в случае использования бинарного дерева поиска. Однако, в среднем, на поиск
элемента в бинарном дереве поиска затрачивается время . Таким образом, алгоритм, использующий
бинарное дерево поиска, более быстрый, чем алгоритм, использующий линейный
список. Поиск элемента в AVL-дереве и в
красно-чёрном дереве занимает время порядка . Проверка содержания элемента в
хэш-таблице в худшем случае требует времени порядка , а в среднем ‑ . Следовательно, с точки зрения теории
сложности наилучшая производительность может быть достигнута при использовании
хэш-таблицы,
AVL-дерева и красно-чёрного дерева. Выбор конкретной структуры
данных зависит от специфики исходных данных.
Ранее в работе указывалось, что данными для
алгоритма служат CSV-строки, соответствующие кортежам таблиц баз данных. Определим структуру
данных, работающую наиболее быстро для этого типа данных. Для этого было
реализовано 5 алгоритмов (по одному для каждой из структур данных), выполняющих
. Они были запущены для выделения
изменений в справочниках административно-территориального деления. В
результате, было получено 5 массивов значений, содержащих времена работы каждого
из алгоритмов на фиксированных обрабатываемых данных. Следовательно, данные
экспериментов для анализа носят количественный характер (времена работы
алгоритмов), а критерий разбиения на группы ‑ качественный (тип
используемого алгоритма). После логарифмического преобразования данные прошли
тест на гомогенность дисперсии Левена и тест на нормальность д’Агостино.
Следовательно, к ним можно применить дисперсионный анализ. В соответствии с
критерием Фишера была показана значимость различий между группами. При помощи
критериев Ньюмана-Кейлса и Тьюки был определён следующий предпочтительный
порядок структур данных: красно-чёрное дерево, AVL-дерево, хэш-таблица, бинарное дерево поиска, линейный
список. Данный порядок согласован с теоретическими результатами, полученными
при помощи теории сложности.
В работе был представлен алгоритм выделения
изменений в версиях открытых баз данных, используемый при построении
автоматизированной системы импорта внешних справочников. Предложенный алгоритм
базируется на использовании красно-чёрного дерева, предложенного Байером в 1972
году. Эффективность алгоритма была показана сравнением с альтернативными
структурами данных: AVL-деревом, хэш-таблицей, бинарным деревом поиска и линейным списком. Для
доказательства эффективности были использованы методы теории сложности и
прикладной математической статистики.
Литература:
1. Бондаренко А.В., Гудков К.С. Создание таблиц нормативно-справочной
информации на основе разнородных внешних справочников. // Модели и методы
обработки информации: Сб.ст. МФТИ. – 2009. – С.148-152.
2. Гудков К.С. Управление внешней нормативно-справочной информацией в
распределённых информационных системах. // Материалы XVI Международной
конференции студентов, аспирантов и молодых учёных "Ломоносов-2009",
секция "Вычислительная математика и кибернетика". – 2009. – С.23.
3. Гудков К.С. Моделирование импорта данных разнородных внешних
справочников в консолидированную базу данных нормативно-справочной информации.
// Актуальные проблемы гуманитарных и естественных наук: Сб.ст. – 2009. –
С.11-14.
4.
Bayer
R. Symmetric binary B-trees: Data Structure and maintenance algorithms. // Acta
Informatica. – 1972. – P.290-306.
5. Адельсон-Вельский Г.М., Ландис Е.М. Один алгоритм организации
информации. // Доклады АН СССР. – 1962. – №2(146). – С.263-266.