Содержание к диссертации
Введение
1. Состояние и перспективы развития индустрии информационных технологий 16
1.1. Направления информатизации Российской экономики 16
1.2. Проблемы и перспективы развития АСТПП 20
1.3. Развитие аутсорсинга информационных услуг 26
1.4. Тенденция к интеграции информационных потоков 30
1.5. Выводы 38
2. Архитектура и средства построения информационных систем 40
2.1. Характеристика информационных систем как объекта исследования.40
2.2. Основные компоненты и концепции архитектуры «клиент-сервер»...42
2.3. Разделение функций в информационных системах 45
2.4. Типовые технологии создания информационных систем 48
2.5. Методики анализа и моделирования информационных систем 54
2.6. Выводы 63
3. Методы разработки оптимальных структур данных 65
3.1. Оптимальное размещение данных и критерии оптимальности 65
3.2. Варианты организации иерархии данных в реляционных системах .72
3.2.1. Ограничения в иерархических структурах данных 72
3.2.2. Структура со ссылкой на предка и неограниченной иерархией .75
3.2.3. Структура с хранением уровня иерархии 79
3.2.4. Иерархия с неограниченной глубиной и конечным числом потомков 81
3.2.5. Иерархия с потабличным хранением конечного числа уровней...82
3.2.6. Иерархическая структура с поразрядным ключом 85
3.2.7. Иерархическая структура с хранением границ ветви 90
3.2.8. Иерархия с компонентом типа «узел» 91
3.3. Объектно-реляционные технологии создания баз данных 96
3.3.1. Абстракции объектов баз данных 96
3.3.2. Унифицированный подход к обобщению реляционных отношений 101
3.3.3. Метод конструирования объектов реляционной модели 105
3.3.4. Использование встроенных средств объектно-реляционных баз данных 112
3.3.5. Схемы объектно-реляционного представления хранилища данных 119
3.4. Организация единого информационного пространства и проблемы интеграции 129
3.5. Выводы 134
4. Эффективные методы разработки клиентских приложений 136
4.1. Проблемы миграции данных и процедуры их программирования 136
4.1.1. Стратегии реорганизации и перехода на другую архитектуру 136
4.1.2. Перенос данных методом обратного проектирования 138
4.1.3. Поддержка логических типов данных 140
4.1.4. Устранение несовместимости кодировок текста 141
4.1.5. Автоматическое конвертирование форматированных текстов ... 142
4.1.6. Исправление ошибок в датах 145
4.1.7. Синхронизация данных стандартными средствами SQL 148
4.1.8. Обновление данных последовательным сравнением 150
4.1.9. Обновление связки таблица-справочник 152
4.1.10. Синхронизация больших наборов данных 154
4.2. Методы оптимизации SQL-запросов 156
4.2.1. Индексация таблиц данных 158
4.2.2. Логические эквивалентные преобразования запросов 160
4.2.3. Логическая оптимизация операций соединения 163
4.2.4. Семантическая оптимизация запросов 170
4.3. Нетрадиционные способы формирования отчетов 172
4.3.1. Динамическое создание отчетов 172
4.3.2. Формирование произвольных запросов по выбору пользователя 177
4.4. Методы хранения нестандартных типов данных 183
4.4.1. Универсальный метод описания диапазонов данных 183
4.4.2. Хранение большого количества однотипных атрибутов 185
4.4.3. Разделение множества данных на подмножества 187
4.4.4. Репликация подмножества данных 188
4.4.5. Частичные отношения 190
4.4.6. Хранение в базе данных результатов выполнения запросов 192
4.4.7. Денормализация реляционных отношений 192
4.5. Представление графической информации в базах данных 194
4.5.1. Выбор формата графического представления данных 194
4.5.2. Организация совместной работы внешнего приложения и графической среды 199
4.5.3. Управление графическими построениями 201
4.5.4. Параметрическое представление графической информации в
базе данных 204
4.6. Web-технологии разработки интерфейсов Интернет-приложений 207
4.6.1. Технология «спагетти» 209
4.6.2. HTML-шаблоны 210
4.6.3. Технология Custom Tags 211
4.6.4. Шаблоны XML/XSL 212
4.6.5. DOM-конструкторы HTML 213
4.6.6. Элементы API 213
4.7. Средства управления доступом к базам данных 215
4.8. Выводы 219
5. Обеспечение качества информационных систем 222
5.1. Принципы проверки качества и методики тестирования 222
5.2. Сравнительная оценка эффективности вариантов иерархической структуры данных 226
5.3. Оценка производительности и работоспособности систем с различной архитектурой 231
5.4. Выводы 236
6. Практическая реализация методов проектирования баз данных 238
6.1. Автоматизированный учет состояния технологического оборудования 238
6.2. Экспертная система комплексного обследования ГПМ 252
6.3. Программно-аппаратный комплекс защиты информации в БД 256
6.4. Выводы 261
Заключение 263
Список использованных источников 266
- Тенденция к интеграции информационных потоков
- Иерархия с неограниченной глубиной и конечным числом потомков
- Автоматическое конвертирование форматированных текстов
- Сравнительная оценка эффективности вариантов иерархической структуры данных
Введение к работе
Актуальность темы. Перспективы развития современного общества тесно связаны с глобальным использованием информации. Национальные информационные ресурсы являются макроэкономической ценностью, потенциальным источником общественного богатства. Информация как носитель знания стала стратегическим фактором, который воздействует на структуру всей экономики и общественной жизни и в конечном счете определяет темпы развития всего общества.
Информатизация современных предприятий представляет собой экспоненциально нарастающее производство, переработку и использование огромных массивов информации во всех областях применения.
Наряду с ускоренным развитием компьютерной техники, информационные технологии (ИТ) в области создания информационных систем (ИС) и приложений баз данных (БД) совершили за последние годы гигантский скачок вперед. В XXI веке, после решения «проблемы 2000 года» и обновления парка компьютерного оборудования, создание информационных систем и технологий и их внедрение на предприятиях приобрело черты целой ИТ-индустрии с присущими ей особенностями:
интеллектуальная специфика программной продукции, ее виртуальность (за исключением компьютерного оборудования);
высокотехнологичные средства производства, позволяющие быстро и эффективно создавать качественные программные продукты в соответствии с растущими потребностями предприятий;
инновационность отрасли, непрерывное развитие и усовершенствование всех составляющих ИТ-сферы - компьютерного оборудования, телекоммуникационных систем, программного обеспечения (ПО), информационных услуг.
Потребность предприятий в разработке новых эффективных методов проектирования ИС и приложений БД обусловлена многими факторами:
высокими темпами развития индустрии информационных технологий;
увеличением потребительского спроса на программную продукцию;
большим разнообразием видов ПО, которые так или иначе связаны с построением ИС и приложений БД;
увеличением объемов обрабатываемой информации на предприятии, необходимостью ее структуризации и интеграции в единую систему управления и принятия решений;
информатизацией всех уровней современной экономики, включая малые и средние предприятия;
государственной политикой в области информатизации, ИТ-стандартов и информационной безопасности.
Помимо увеличения объемов информации, усложняются и методы ее обработки. Совершенствуются технологии создания ИС и приложений БД на фоне появления новых программно-инструментальных средств и систем управления базами данных (СУБД). Для создания крупных ИС привлекаются трудозатраты в сотни человеко-лет и современная технологическая база, задействованы высококвалифицированные специалисты таких профессий, как аналитики бизнес-процессов, программисты, тестировщики, системные интеграторы, инженеры по внедрению и адаптации программных продуктов.
Объективная потребность контролировать процесс создания сложных ИС, прогнозировать и гарантировать стоимость разработки, сроки и качество результатов привела к необходимости перехода от кустарных способов к индустриальным технологиям и инженерным методам и средствам создания ПО. Поэтому на каждом из этапов жизненного цикла ИС актуально применение эффективных методов и приемов, позволяющих снизить издержки, повысить продуктивность процесса разработки ПО, улучшить качество производимой ИТ-продукции и предоставляемых ИТ-услуг.
Решению различных теоретических и практических проблем построения ИС в технических системах посвятили свои работы ведущие ученые и специалисты A.M. Вендров, А.Ю. Грачев, М. Гутман, Н. Елманова, Д.П. Зегжда, П.Д. Зегжда, Ю.А. Зеленков, Д. Зенкин, В.Х. Инмон, Л. Калиниченко, Г.Н. Калянов, А. Коберн, Е.Ф. Кодд, СБ. Кодд, Л. Козленко, С.Д. Кузнецов, А. Лукутин, И. Лукьяненко, Ю.А. Подколзин, Дж. Рой, Дж.М. Смит, Д.К. Смит, М. Стоунбрейкер, Д.Т. Чанг, П.П.-Ш. Чен, С. Чаудхари и др.
Целью диссертационной работы является разработка методологических и теоретических основ проектирования автоматизированных информационных систем и приложений баз данных масштаба промышленного предприятия.
Для достижения поставленной цели в работе решались следующие основные задачи:
исследование и разработка эффективных методов проектирования баз данных с возможностью интеграции в единую систему сбора и обработки информации на предприятии;
разработка концепции и построение объектно-реляционных моделей технических объектов с произвольным набором атрибутов;
разработка новых методов проектирования иерархических структур данных, отличающихся большей производительностью, и их сравнительная оценка на основе известных критериев качества;
апробация предложенных методов проектирования БД, разработка информационно-управляющей БД производственных объектов на предприятии;
разработка эффективных методов переноса накопленной информации в новые структуры БД на основе анализа проблем интеграции и совместимости данных;
исследование возможности и разработка концепции произвольных запросов к БД и их применение для формирования отчетов;
разработка новых технологий представления в БД графической и другой информации нестандартного типа, ее параметризация и использование для автоматизации документооборота.
Объектом исследования являются информационные системы и приложения баз данных в производственных системах, функционирующие в архитектуре «клиент-сервер».
Предметом исследования являются методы эффективной организации баз данных и их приложений в производственных системах на всех этапах «жизненного цикла» программного продукта - от анализа и проектирования до внедрения и сопровождения.
Методы исследования. Для решения поставленных задач в работе использовались методы объектно-ориентированного проектирования и программирования, аппарат реляционной алгебры, теория множеств, методы оптимизации и математической статистики.
Научная новизна диссертационной работы заключается в следующем:
-
Созданы методологические и теоретические основы проектирования баз данных с интеграцией в единую систему сбора и обработки информации на предприятии. Предложены новые схемы представления данных и организации единого информационного пространства в целях интеграции различных служб предприятия в единую систему управления и принятия решений.
-
Разработана концепция создания информационной модели для задач технического обслуживания объектов производства на примере грузоподъемного оборудования, которая является обобщением существующих моделей и служит основой для проектирования других более сложных иерархических моделей объектов производственных систем.
-
Впервые разработана универсальная структура данных для хранения и обработки информации об объектах производства, которая принципиально отличается от других решений тем, что позволяет без модификации структуры БД неограниченно увеличить количество разнородных параметров, характеризующих техническое состояние объекта, и тем самым повысить эффективность обслуживания производства.
-
Предложены новые иерархические модели, не содержащие рекурсию, преимущество которых по сравнению с известными по критериям производительности и надежности подтверждено результатами вычислительного эксперимента.
-
Предложена новая формализованная методика проектирования информационно-управляющих моделей производственных объектов любой степени сложности для решения задачи единого информационного учета всего парка технологического оборудования, эксплуатируемого на предприятии.
-
Разработаны эффективные алгоритмы и типовые программные модули синхронизации данных между различными подсистемами СУБД, позволяющие исключить потери накопленной информации при ее преобразовании и переносе в новые структуры данных.
-
Предложены новые нетрадиционные методы формирования отчетной документации на основе анализа потребностей современных предприятий в автоматизации документооборота, которые отличаются от известных методов наличием обратной связи с приложением БД, гибкостью изменения старых и создания новых отчетов по результатам произвольных запросов к БД.
-
Предложены новые методы хранения и обработки нестандартных типов данных, которые невозможно реализовать встроенными средствами СУБД. Поставлена и решена задача параметризации технических чертежей производственных объектов и управления графическими построениями путем установления связи между объектами чертежа и их числовыми параметрами, хранимыми в БД.
Положения, выносимые на защиту:
-
Методология проектирования иерархических, объектно-реляционных и многомерных структур данных.
-
Новая информационная модель описания производственных объектов, позволяющая неограниченно увеличивать количество атрибутов и добавлять описания новых классов оборудования без изменения структуры данных.
-
Новые безрекурсивные методы организации иерархии данных и результаты вычислительного эксперимента по сравнительной оценке их эффективности на основе известных критериев качества.
-
Методика проектирования информационных моделей производственных объектов произвольной сложности и разработанная на предприятии база данных автоматизированной системы технической подготовки производства (АСТПП).
-
Эффективные алгоритмы преобразования информации, накопленной в устаревших системах, и ее переноса с минимизацией ошибок в разработанные управляющие структуры.
6. Новые методы автоматизации документооборота посредством
произвольных запросов к БД, параметризации технических чертежей и
управления графическими построениями.
Практическая ценность и реализация основных результатов работы.
В основу диссертации положены научные результаты, полученные лично автором при непосредственной разработке прикладных информационных систем и технологий для предприятий северо-западного региона России: экспертная система комплексного обследования крановых путей CranRoad
(1999-2012 г., ЗАО «РАТТЕ»);
автоматизированное рабочее место инженера-эксперта по обследованию грузоподъемных кранов Cranes (1997-2002 г., ЗАО «РАТТЕ»);
информационные системы документооборота и платежных операций DeloPro (1998-2000 г.), Vouchers (2001-2012 г., ЗАО «РАТТЕ»);
программно-аппаратный комплекс информационной защиты БД от НСД Security Removal Gangster Program on Hard Disk (2000-2001 г., ЗАО «АМН»);
информационно-управляющие системы учета состояния технологического оборудования - сосудов, аппаратов и клапанов SOS, грузоподъемных машин GPM, учета влияния коррозии COR (2000-2005 г., ООО «ПО КИНЕФ»).
Основные теоретические положения диссертации использованы в учебном процессе СПбГПУ:
на кафедре транспортных и технологических систем механико-машиностроительного факультета по дисциплине «Основы автоматизированного проектирования» для студентов по направлению 551800 - «Технологические машины и оборудование», специальностям 170900 - «Подъемно-транспортные и строительные машины» и 220900 -«Автоматизация технологических производств» (2002 г.);
на кафедре информационных машиностроительных технологий механико-машиностроительного факультета по дисциплинам «Машиностроительная информатика» и «Технические средства САПР» в рамках инженерной и магистерской подготовки (1999 г.);
на кафедре информатики Института международных образовательных программ при постановке нового курса «Базы данных» для студентов специальности 080801 - «Прикладная информатика в дизайне» (2003 г.).
Эффективность реализованных методов, алгоритмов и программного обеспечения подтверждена 4 актами о внедрении.
Апробация работы. Основные результаты научных разработок, выполненных автором по теме диссертации, представлены на международных и российских конференциях: «Совершенствование учебного процесса при подготовке инженеров-механиков» (СПбГТУ, 1994 г.), «Вакуумная наука и техника» (Гурзуф, 1994 г.), «Инновационные наукоемкие технологии для России» (СПбГТУ, 1995 г.), «Прогрессивные конструкции и технологии в машиностроении» (СПбГТУ, 1996 г.), «Фундаментальные исследования в технических университетах» (СПбГПУ, 1997, 2002, 2003 г.г.), «Современные научные школы: перспективы развития» (СПбГТУ, 1998 г.), «XXVII неделя науки СПбГТУ» (СПбГТУ, 1998 г.), «XXIX неделя науки СПбГТУ» (СПбГТУ, 2000 г.), «Высокие интеллектуальные технологии образования и науки» (СПбГПУ, 2002 г.), «Оптимизация транспортных машин» (Ульяновск, УлГТУ, 2003 г.), «Научно-технические проблемы прогнозирования надежности и долговечности конструкций и методы их решения» (СПбГПУ, 2003 г.), «Современные проблемы информатизации в системах моделирования,
программирования и телекоммуникациях» (Воронеж, ВорГТУ, 2004 г.), «Формирование профессиональной культуры специалистов XXI века в техническом университете» (СПбГПУ, 2004 г.), «Информационные технологии моделирования и управления» (Воронеж, ВорГТУ, 2004 г.), «Эффективные методы проектирования баз данных для задач управления сервисными производственными системами» (СПбГПУ, 2007 г., МАДИ, 2008 г.), The 30th International Conference for the Resource Management and Performance Evaluation of Enterprise Computing Systems (Las Vegas, USA, 2004), а также на научно-методических семинарах кафедр информатики и информационных машиностроительных технологий СПбГПУ (1999-2009 г.) и института инноватики (2006-2007 г.).
Публикации. Общее количество публикаций составляет 77 наименований. По теме диссертации опубликовано 62 научных работы общим объемом 101 п. л., среди которых 2 монографии, 20 статей (в т. ч. 13 из списка ВАК), 17 докладов на научно-технических конференциях, 12 учебных пособий, 24 работы без соавторов, 2 публикации в США.
Структура и объем работы. Диссертация включает перечень сокращений, введение, 6 глав, заключение, библиографию из 150 наименований и 8 приложений. Основное содержание работы изложено на 295 страницах текста, в т. ч. 21 таблица, 70 рисунков.
Тенденция к интеграции информационных потоков
В отличие от западных поставщиков ПО, делающих упор на концепцию в целом, распространение корпоративных ИС на российских предприятиях обычно начинается с внедрения средств автоматизации отдельных приоритетных процессов, чаще всего финансовый и бухгалтерский учет, управление поставками и сбытом (так называемая «лоскутная» автоматизация [87]). В большинстве случаев это системы разных производителей, и между ними отсутствует взаимодействие, что приводит к дублированию информации, снижению оперативности информационного обмена, увеличению стоимости ПО и обучения пользователей.
Преимущества комплексной ИС неочевидны и их внедрение непросто. Поэтому в будущем можно с уверенностью прогнозировать преимущественное развитие проектных (заказных) программных продуктов в сравнении со стандартным (коробочным) ПО. Несмотря на то, что стоимость заказного ПО в десятки раз больше универсального, затраты на адаптацию к местной специфике могут перекрывать эту разницу, особенно для западных продуктов. Например, стоимость стандартной ИС в версии СУБД Oracle варьируется от 500 тыс. до 1 млн. долларов в зависимости от затрат на адаптацию, в то время как заказ аналогичного проекта у отечественных разработчиков обойдется в 5-8 тыс. долларов при сопоставимой функциональности [9].
Большинство российских предприятий, проявляя общий интерес к новым ИТ, внедряют только небольшие системы автоматизации отдельных подразделений и пока не готовы к комплексной интеграции, требующей больших затрат и кардинального изменения всех информационных процессов. Это подтверждают результаты различных статистических и научных исследований - научно-технологического центра института развития Москвы (табл. 1.2), фонда «Общественное мнение» (рис. 1.8). Примеры успешного внедрения ИС на передовых предприятиях немногочисленны. Иногда внедрение ИС обусловлено субъективным стремлением пройти сертификацию по западным стандартам качества в одной из известных фирм-производителей ПО.
Большинство руководителей крупных предприятий видят преимущества и отдают приоритет не столько техническому вооружению, сколько эффективным комплексным управленческим решениям, учитывающим местную специфику [40,69,76], где программный продукт служит инструментальным средством поддержки принятия решений Decision Support System (DSS).
В современных условиях для эффективного управления предприятием в соответствии с вектором его развития недостаточно периодического планирования и подведения итогов, нужна наиболее полная оперативная информация в любой момент времени о происходящих процессах. Для этого необходимо внедрение интегрированной системы управления ресурсами в масштабе предприятия Enterprise Resource Planning (ERP) на основе единого хранилища данных.
В многопользовательских системах применяются стратегии и средства управления взаимоотношениями с клиентами Customer Relationships Management (CRM) [112]. Центральным компонентом CRM-решений служит накопление информации о всех взаимодействиях поставщика с клиентами. Такая единая БД сама по себе становится объектом продажи и взаимного интереса конкурирующих ИТ-представителей.
Таким образом, вынужденная реорганизация традиционно сложившихся информационных процессов на предприятии - одно из главных препятствий внедрения интеграционных решений.
Еще одной преградой на пути распространения современных сетевых ИТ являются болезненные вопросы информационной безопасности, о которых никогда нельзя забывать и которые приобрели особую значимость в связи с развитием единого мирового информационного пространства Интернет [61]. Среди многих причин, по которым сетевые ИТ являются небезопасными, выделяются главные [130]:
низкий уровень образования, квалификации пользователей в области компьютерной безопасности;
открытость архитектуры, основанной на модели «клиент-сервер», при которой именно серверы более всего подвержены атакам через Интернет со стороны анонимных клиентов;
закрытость исходных кодов владельцев программной продукции и технологий, что не позволяет проводить их тщательное тестирование специалистами по безопасности;
Иерархия с неограниченной глубиной и конечным числом потомков
Ограничение количества потомков позволяет хранить данные в виде реляционного отношения с набором атрибутов: R(aua2, ...,an,bu b2, си с2), где«і - информация о первом элементе уровня иерархии; а2 - информация о втором элементе уровня иерархии; ап - информация о «-ном элементе уровня иерархии; п - максимальное количество потомков; Ь\ - уровень вложенности элемента; Ъ2 - смещение (номер столбца) с описанием элемента, 1 Ь2 п; с\ -уровень вложенности предка; с2 - смещение (номер столбца) с описанием предка, 1 с2 п.
Информация о каждом элементе иерархии определяется его уровнем вложенности и смещением, или номером столбца, в котором содержится наименование элемента. Аналогично этому, ссылка на предка состоит из номера предыдущего уровня иерархии и смещения (номера столбца) с описанием родителя. Ниже приведен пример описания таблицы с максимальным количеством предков 3 (рис. 3.5):
tbl_name level INTEGER offset SMALLINT namel VARCHAR (254) name2 VARCHAR (254) патеЗ VARCHAR (254) parent_ level INTEGER parent_ offset SMALLINT Рис. 3.5. Структура таблицы с неограниченной глубиной иерархии и конечным числом потомков каждого уровня create table tbl_name ( level integer not null, offset smallint not null check (offset 0 and offset 4), namel varchar (254), name2 varchar (254), name3 varchar (254), parentjevel integer, parent_offset smallint check ((parent_offset 0 and parent_offset 4) or (parent_offset is null)), constraint pk_offset primary key (level, offset) )
Операции вставки, удаления и перемещения элементов иерархии выполняются стандартными средствами SQL, не требующими введения триггеров, поскольку все необходимые ограничения прописаны в структуре таблицы. Недостатки данной иерархической структуры очевидны:
избыточность атрибутов иерархических данных (аь а2, ..., а„), многие из которых остаются неиспользованными;
при изменении максимального количества потомков придется добавлять столбец таблицы, что крайне неудобно, и вообще частая модификация структуры таблиц БД в процессе эксплуатации приложения нежелательна;
несмотря на то, что в описание таблицы введены правила проверки допустимости значений смещения (1 Ь2 п, 1 с2 п), они полностью не исключают вероятность появления ошибок иерархии.
Область применения таблиц с произвольной глубиной иерархии и конечным числом потомков ограничивается задачами, в которых можно установить фиксированное максимальное количество потомков каждого уровня или оно меняется достаточно редко.
3.2.5. Иерархия с потабличным хранением конечного числа уровней
Для каждого уровня вложенности используется отдельная таблица, позволяющая хранить неограниченное число потомков. Для случая трехуровневой иерархии описание структуры будет иметь вид (рис. 3.6):
tblJeveH id name INTEGER VARCHAR (254) pk id = parent_ d / " ""„ -, -s, s, , / i; tb_level2 \ id = parentjd idname parent idi : . INTEGERVARCHAR (254)-. INTEGER pk pk,fk id = parent_ id2 \ tbljevel3
idname parent parent id , id2 INTEGER VARCHAR (254). INTEGER INTEGER pk pk,fk pk,fk
В данной структуре уровень вложенности элемента однозначно определяется таблицей, в которой он хранится. Каждая таблица позволяет хранить неограниченное число потомков. Полный путь от любого элемента до корня иерархии определяется составным первичным ключом таблицы. Для увеличения глубины (количества уровней) иерархии необходимо определить дополнительные таблицы аналогично описанию tbl_level2.
Запрос на выборку непосредственных потомков произвольного элемента иерархии имеет общий вид: select from таблица потомков where ссылка на предка 1-го уровня = первичный ключ предка 1-го уровня and ссылка на предка 2-го уровня = первичный ключ предка 2-го уровня and ссылка на предка n-го уровня = первичный ключ предка n-го уровня
Например, выборка прямых потомков элемента второго уровня с id = 5, у которого предок первого уровня имеет id = 7, может быть получена с помощью запроса: select from tbl_level3 where parentjd = 7 and parent_id2 = 5
Все потомки данного элемента, прямые и непрямые, располагаются в таблицах, подчиненных таблице предков, и в каждой из них содержится ссылка на первичный ключ предка. Полный список потомков может быть получен объединением следующих запросов:
select id, 2 as level from таблица потомков 2-го уровня where parentjd = первичный ключ предка 1-го уровня union select id, 3 as level from таблица потомков 3-го уровня
where parentjd = первичный ключ предка 1-го уровня
Дополнительное поле level необходимо в запросе для того, чтобы исключить потерю записей при возможном дублировании первичных ключей в разных таблицах, а также для идентификации таблицы и уровня иерархии.
Операции вставки, удаления и перемещения выполняются стандартными операторами SQL в соответствующей таблице. При удалении элемента иерархии можно ввести дополнительный триггер для удаления всех потомков аналогично триггеру в структуре со ссылкой на предка (раздел 3.2.2). 3.2.6. Иерархическая структура с поразрядным ключом
Поразрядный ключ ограничивает и вложенность, и число потомков. Ниже приведено описание структуры таблицы с глубиной иерархии 5 и максимальным количеством потомков каждого уровня 9 (рис. 3.7):
Первичный ключ формируется таким образом, что позиция десятичного разряда числа (от 1 до 5) означает уровень вложенности, а цифра в этой позиции (от 1 до 9) - номер элемента на данном уровне, например:
1 - 1-й элемент 1-го уровня иерархии;
2 - 2-й элемент 1-го уровня иерархии;
00034 - 3-й элемент 2-го уровня, предок которого 4-й элемент 1-го уровня.
В зависимости от того, какой разряд кодирует первый уровень иерархии, различают структуру с поразрядным правым ключом (как в приведенном примере) и поразрядным левым.
Автоматическое конвертирование форматированных текстов
Другим способом решения проблемы несовместимости кодовых страниц является хранение в БД текстов в определенном формате Richtext Format (RTF). К тому же это позволяет получать печатные отчеты с текстовой информацией вместе с параметрами форматирования (стиль абзаца, тип шрифта, размер кегля).
Можно, конечно, хранить текстовые объекты целиком в полях BLOB таблиц БД. Но тогда открытие и редактирование документов будет возможно только путем вызова внешнего приложения, посредством которого создавался документ (чаще всего MS Word). Это является принципиальным недостатком, поскольку хранимая на сервере БД информация будет зависеть от настроек локали, а версии внешнего приложения на разных клиентских машинах могут отличаться и быть несовместимыми (например, документ, созданный посредством MS Word ХР и сохраненный в БД, может вызвать ошибку открытия на локали с установленным MS Word 97).
В следующем примере продемонстрировано использование стандартного компонента DBRichEdit системы программирования Delphi для преобразования формата RTF в текст ASCII. Это позволяет хранить форматированный текст RTF в полях CLOB таблиц БД и в то же время оперировать им как с обычным текстом, используя в программе все возможности работы со строками.
Экранная форма для реализации предложенного метода показана на рис. 4.2. Для представления текста в обоих форматах RTF и ASCII используется свойство PlainText компонента DBRichEdit. Когда оно установлено в логическое значение истина, содержимое контейнера DBRichEdit трактуется как текст ASCII, в противном случае на экранной форме отображается текст RTF, позволяя задать параметры форматирования. Свойства DataSource и DataField связывают компонент DBRichEdit с соответствующим полем CLOB таблицы БД.
Установка свойства Visible экранной формы и ее компонентов в логическое значение истина или ложь позволяет регулировать право пользователя на редактирование текста с клавиатуры. Более того, запрет визуализации (Visible=false) значительно увеличивает быстродействие операций обмена данными с сервером БД.
Ниже приведено словесное описание алгоритма использования компонента DBRichEdit для сохранения форматированного текста в поле CLOB таблицы БД.
Алгоритм 2:
Шаг 1. Открыть соответствующий SQL-запрос. Свойство DBRichEdit.PlainText должно быть изначально установлено в логическое значение ложь.
ТІ Таг 2. Дать возможность отредактировать текст в соответствии с предпочтениями пользователя.
Шаг 3. Запретить отображение набора данных в компонентах экранной формы стандартным методом DataSet.DisableControls. Этот шаг полезен также для ускорения операций обмена данными с сервером БД.
Шаг 4. Установить свойство DBRichEdit.PlainText в логическое значение истина. Теперь содержимое контейнера DBRichEdit трактуется как текст ASCII независимо от кодировки на сервере БД.
Шаг 5. Сохранить измененный текст в таблицу БД, используя стандартный метод DataSet.Post набора данных.
Шаг 6. Установить свойство DBRichEdit.PlainText обратно в логическое значение ложь.
Шаг 7. Закрыть набор данных.
Описанные методы преобразования кодовой страницы и включения параметров форматирования текста (алгоритмы 1 и 2) можно объединить. Это позволит хранить в полях CLOB таблиц БД текстовую информацию одновременно в разных кодировках (Windows-1251, DOS-866, KOI-8, RTF). При извлечении данных для каждой записи будет выполнено необходимое конвертирование текста. Ниже приведено словесное описание алгоритма сохранения в БД текстовой информации с мультикодировкой.
Алгоритм 3:
Шаг 1. Открыть соответствующий SQL-запрос для доступа к БД.
Шаг 2. Назначить свойства DataSet.DisableControls и DBRichEdit.PlainText, как описано в алгоритме 2 шагами 2-4.
Шаг 3. Выполнить конвертирование текста через внешние файлы ASCII посредством функции Win2DOS, как описано в алгоритме 1 шагами 4-8.
Шаг 4. Если возникла ошибка обращения к внешнему файлу, вывести сообщение и перейти к шагу 6, иначе перейти к шагу 5.
Шаг 5. Сохранить изменения в БД, как описано в алгоритме 2 шагами 5-6.
Шаг 6. Закрыть набор данных и удалить временные внешние файлы ASCII.
Программистам и опытным пользователям хорошо известно, что при работе с датами всегда возникают проблемы. Достаточно вспомнить огромные усилия по технической адаптации аппаратуры и программ для работы с датами XXI века. По разным оценкам [84], мировые затраты на решение «проблемы 2000 года» составили от 300 до 500 млрд. долларов и 200 млн. человеко-дней, а в России 30 млрд. долларов или 7,5% от ВВП.
Типичной ошибкой разработчиков файл-серверной структуры DBF была замена неполных дат и времени представлением вещественных чисел с фиксированной точкой. Например, неполная дата формата «месяц, год» представлена числовым типом с точностью F(5,2). В такие поля с большой долей вероятности попадают некорректные значения, портирование которых в новые структуры становится вообще невозможным, и такие данные можно считать потерянными.
После детального анализа накопленных наборов данных в файлах DBF выявлена следующая закономерность. При начальном заполнении таблиц DBF операторам приходилось вводить большие массивы данных, и при заполнении даты по маске «MM.YY» (месяц, год) обнаружено большое количество ошибок сдвига цифр. Например, некорректное значение 18.70 (месяца 18 не бывает) скорее всего стало результатом неправильного ввода даты 1.87 , а ошибочные значения 19.ХХ представляют собой попытку явно указать некоторый год XX века 19ХХ без уточнения месяца.
Анализ подобных ошибок в датах и их исправление реализовано в специальной процедуре FixDate на языке SQL (приложение 2). Вначале анализируется целая часть параметра Num. Если она равна 19, то дробная часть преобразуется в четырехзначный год XX века, а месяц заменяется на 1 (январь). Затем параметр Num конвертируется в значение даты с точностью «месяц, год» (тип DateTime Year То Month). В случае ошибки и если младший разряд дробной части параметра Num равен 0, выполняется попытка сдвига цифр в маске Decimal(4,2). Результат преобразуется в значение даты с точностью «месяц, год». Если опять возникает ошибка, то конвертирование невозможно и процедура возвращает пустое значение (null).
Помимо корректировки ошибочных значений месяца, попутно решается «проблема-2000». Значения года меньше некоторого порогового значения (в данном случае 1930) преобразуются в XXI век. В любом случае процедура возвращает корректное значение даты типа DateTime Year То Month.
В зависимости от результатов анализа и корректировки даты, процедура FixDate возвращает одно из следующих значений: пустое значение (null) - преобразование невозможно ни одним из способов, данные потеряны;
Сравнительная оценка эффективности вариантов иерархической структуры данных
В данном разделе приведены результаты измерения производительности СУБД при различных методах организации иерархии данных, описанных в разделе 3.2. Для проверки относительных преимуществ классических и нетрадиционных подходов к организации иерархии данных поставлены 2 категории вычислительных экспериментов по оценке следующих характеристик производительности СУБД:
1) измерение производительности операций доступа к данным (scan) в зависимости от глубины вложенности и размера иерархических таблиц;
2) измерение операций соединения таблиц (join) при получении потомков на различных уровнях вложенности.
В целях удобства проведения сравнительных тестов и анализа результатов все варианты иерархической структуры сгруппированы по критерию наличия рекурсии в реляционных отношениях и SQL-запросах (табл. 3.1):
1) традиционные иерархические структуры с рекурсивными связями;
2) варианты иерархии данных без рекурсивности.
При сравнительных тестах ни быстродействие сервера, ни параметры его точной настройки (tuning) не влияют на результаты (при условии отсутствия перегрузок процессора и зависания системы). Конечной целью вычислительного эксперимента является не измерение абсолютных значений времени, а анализ их относительного изменения при увеличении числа уровней вложенности и количества записей иерархической таблицы данных.
На рис. 5.1 приведены временные диаграммы сравнения производительности операции доступа в зависимости от глубины вложенности (рис. 5.1,а) и от размера таблицы данных (рис. 5.1,6) для различных вариантов иерархии - традиционных и без рекурсии. На диаграммах (рис. 5.1,в,г) представлены относительные показатели производительности, которые вычислялись по технологии SPEC как отношение времени доступа соответственно к числу уровней вложенности и к количеству записей в иерархической таблице:
Для достижения стабильности результатов каждая итерация теста выполнялась нечетное количество раз, но не менее 3, крайние максимальное и минимальное значения исключались из выборки, и из оставшихся измерений вычислялось среднее.
В операциях соединения, описанных в разделе 3.2.2 выражениями (3.1), количество конструкций join в операторе SQL равно числу записей в иерархической таблице. Для корня иерархии возвращается пустая выборка. Для каждого нового уровня иерархии в SQL-запрос добавляется еще одна таблица.
На рис. 5.2 показаны диаграммы сравнения производительности операции соединения в зависимости от глубины иерархии (рис. 5.2,а) и от размера таблицы данных (рис. 5.2,6), а также их относительные показатели Ry и R3 (рис. 5.2,в,г) для различных вариантов иерархии - традиционных и без рекурсии.
Улучшение производительности выполнения каждого вида операций оценивается коэффициентами:
В процессе внедрения или модернизации ИС важной задачей является оценка характеристик производительности системы, которые на практике могут иметь значительные различия в зависимости от архитектуры сети, количества клиентов, типа нагрузки и целого ряда других факторов. Переоценка вычислительных ресурсов приводит к лишним затратам, а их недооценка - к вынужденному пересмотру принятых решений и задержке сроков их реализации.
Вторая серия вычислительных экспериментов посвящена тестированию ИС и приложений БД как готовых программно-аппаратных решений, оценке их производительности и работоспособности при различной конфигурации сети -двухуровневой и с промежуточным слоем (middleware) [45].
Целью компьютерных измерений характеристик работоспособности и производительности СУБД является сравнительный анализ, а также выявление «узких» мест при выполнении SQL-запросов, снижающих как общую, так и пиковую пропускную способность ИС. «Узкими» считаются компоненты ИС, снижающие ее производительность до критических значений (длительное время ожидания запроса, появление неустранимой ошибки выполнения, зависание системы).
Чтобы исключить из выборки случайные факторы, применяются следующие правила статистической обработки данных:
каждый тест прогоняется нечетное число раз (не меньше 3), крайние максимальное и минимальное значения измерений исключаются из выборки
в качестве окончательного берется среднее геометрическое от нормализованных результатов всех тестов;
не учитывается небольшое изменение измеряемой характеристики при неполной (20%) загруженности системы;
» при расчете среднего значения и стандартных отклонений игнорируются данные, когда в системе имели место неконтролируемые процессы (зацикливание, зависание);
в расчет не берутся единичные скачки измеряемого показателя, для досто верности должно быть минимум два всплеска за рассматриваемый период.
В план вычислительного эксперимента включены следующие 2 категории тестов измерения характеристик быстродействия базовых функций СУБД:
1) измерение времени выполнения операции доступа к данным (select) в зависимости от числа клиентских запросов;
2) измерение времени выполнения операции модификации данных (update) с использованием транзакций в зависимости от числа клиентов.
Тестирование проводилось в локальной компьютерной сети Fast Ethernet пропускной способностью 100 Мбит/сек с подключением через коммутаторы 3Com по протоколу TCP/IP. Серверная часть представлена двухядерной платформой Sun с процессорами Intel Pentium IV частотой 2,45 ГГц, оперативной памятью 2 Гб, под управлением операционной системы Linux.
Помимо установленной реляционной СУБД Informix 7.3, сервер работал в качестве промежуточного слоя и выполнял функции файл-сервера с возможностью программного отключения любого из этих компонентов. В функции промежуточного слоя входило преобразование SQL и ISAM/VSAM запросов к нереляционным источникам информации и после обработки СУБД возвращение на сторону клиента результата либо кода ошибки.
Мощность нагружаемого сервера выбрана такой, чтобы обслуживать десятки одновременно работающих сессий без перегрузок его ресурсов и коллизий коммуникационного оборудования.
В качестве рабочих станций использовались компьютеры IBM PC с процессором Intel Pentium III частотой 900 МГц, оперативной памятью 1 Гб, сетевым интерфейсом 3Com 100 Мбит/сек. На рабочих станциях были установлены разные операционные системы Windows 98 и Windows ХР для выявления различий функционирования клиентских приложений БД.
Для тестов использовалась копия БД реально работающего производства, так что не требовалось ее информационное наполнение. Тестовая БД содержала таблицы размером до 1,5 млн. записей и десятки полей, с построенными по ним индексами и связанные перекрестными ссылками в единую структуру.
Созданная тестовая конфигурация фактически эмулировала работу небольшой рабочей группы с централизованной БД. На начальном этапе серии экспериментов сделан анализ распределения нагрузки между узлами системы с целью определения узких мест в тестируемой архитектуре «клиент-сервер» (рис. 5.3,а). По результатам компонентных тестов построена диаграмма сравнительной оценки времени работы подсистем при различных конфигурациях (рис. 5.3,6).