Анализ и исследование эффективности запросов
на выборки объектов метамодели из базы данных.
Руководство любой быстрорастущей компании
рано или поздно сталкивается с проблемой систематизации информации и
автоматизации процессов, участвующих в обработке этой информации. Если на
начальном этапе развития компании возможна ситуация, когда сотрудники
используют стандартные офисные приложения, то со временем рост объемов
информации ставит перед компанией задачу создания современной корпоративной информационной системы.
При создании крупных корпоративных информационных систем возникают проблемы
построения и анализа производительности их хранилищ данных. Эти
проблемы являются актуальными в тех ситуациях, когда реляционное хранилище
данных фиксированной структуры неприемлемо с точки зрения гибкости системы и по
причине огромного числа сложно связанных объектов.
Существуют различные подходы к проектированию
структуры реляционного хранилища данных под объектные структуры.
Стандартный подход - хранение каждой сущности предметной
области («объектного типа») в отдельной таблице БД. Такой подход имеет
недостаток с точки зрения гибкости: он плохо позволяет моделировать типичную
для современных систем ситуацию с наследованием сущностей (типов); к тому же
все изменения структуры данных предметной области (которые очень часто
возникают в ходе эксплуатации) приводят к необходимости менять схему БД. Однако
помимо недостаточной гибкости, стандартный реляционный подход плохо себя
проявляет с точки зрения производительности некоторых запросов с участием
большого числа разных типов.
Необходимость постоянного ввода новых и
изменения существующих типов сущностей в больших программных системах, а так же
высокие требования к гибкости и универсальности моделей данных привела к
широкому использованию метамоделей данных (моделей моделей данных) в
современных программных системах.
Этот подход с метамоделями предполагает явное
хранение метаданных об «объектных типах» и их атрибутах, а также (в предельном
случае) хранение в одной таблице всех объектов и хранение в одной таблице
значений всех (точнее, всех однотипных) атрибутов различных объектов.
Дополнительными возможностями подхода является связь «многие ко многим» между
атрибутами и объектными типами, а также атрибутные схемы и их наследование (в
то время как стандартные объектные надстройки поддерживают только наследование
объектных типов и поля-ссылки).
Однако такой подход при всех очевидных плюсах
имеет и ряд серьезных технических проблем.
Итоговая производительность программной системы
высоко “чувствительна“ к модели хранилища данных и используемым метаданным.
Особая вычислительная сложность возникает при построении систем автоматизации
предприятий связи. Эти системы отличает как высокая размерность объекта
автоматизации (сеть оператора должна быть описана с точностью до физических и
логических портов оборудования), так и сложный функционал объектов сети
(коммутаторы и др). На сети оператора
связи выполняются сложнейшие технологические операции, которые к тому же должны
очень быстро выполняться ввиду большого объема подобных операций.
Ввиду того, что подход с метамоделями имеет
много вариантов объектной структуры (отличающихся по нескольким критериям),
теоретически возможно существенно улучшать производительность за счет подбора
оптимальных вариантов. Однако до сих пор эта проблема решалась лишь выборочно,
в коммерческих приложениях, без четкого понимания того, какие именно параметры
модели и как влияют на производительность системы. Таким образом, проблема,
решаемая в данной работе, заключается в строгом количественном исследовании
производительности запросов к хранилищам данных различных типов.
Для каждого из подходов (с метамоделью и без)
были проведены серии экспериментов по измерению времени выполнения фиксированного
набора sql-запросов при различных объемах тестовых данных, а также при
структурах модели различной сложности.
Для проведения экспериментов с объемом данных
была выбрана следующая иерархическая структура объектов: I
объектов верхнего уровня, J уровней иерархии, K
потомков у каждого объекта на каждом уровне иерархии..
При такой структуре
общее число объектов равно:
В этой серии экспериментов, варьировался один из
параметров I, J, K
при фиксированных двух других. Эксперимент состоял в измерении времени
выполнения запроса на выборку всей иерархии потомков при различных I, J и
К для случая с метамоделью и без нее.
Каждая серия экспериментов проводилась следующим
образом:
1.
Очистка
тестовых таблиц (предварительно отключив индексы при удалении большого числа
объектов)
2.
Восстановление
индексов
3.
Выполнение
скрипта наполнения БД при новых значениях варьируемых параметров
4.
Выполнение
скрипта из набора тестовых скриптов. Замер времени
5.
Занесение
результатов в таблицу
Реализация тестовых запросов на SQL
проиллюстрировала большое преимущество подхода с метамоделью: код запросов
оказывался на порядок компактнее, чем в случае без метамодели. Сравнение
скорости запросов в этих случаях привело к следующим выводам.
Уменьшение производительности в случае метамодели
имеет порядок 5-7 раз, что является приемлемым для практических приложений;
однако это относится к случаю, когда запросы не используют отношение
«родитель-потомок» между выбираемыми объектами.
При использовании иерархической структуры
объектов уменьшение производительности достигает 10–102, что уже
является неприемлемым.
Литература:
1.
Ларман
К. Применение UML и
шаблонов проектирования. 2-е изд. М.: Изд. дом «Вильямс», 2002. 624 с.
2. Грабер М. Mastering
SQL Изд.: «Лори», 2007. 672 с.
3. Дж.Дейт К, Дарвен Х. Основы будущих
систем баз данных.., Изд.: «Янукс-К», 2004г. 652 с.