ISSN 0236-235X (P)
ISSN 2311-2735 (E)
1

16 Марта 2024

Оптимизация структуры базы данных информационной системы ПАТЕНТ


Палюх Б.В. (pboris@tstu.tver.ru) - Тверской государственный технический университет (профессор), г. Тверь, Россия, доктор технических наук, Жгутов А.В. () - , Демирский А.А. (info@gicpsvt.ru) - Главный испытательный сертификационный центр безопасности программных средств и вычислительной техники (начальник отдела), Тверь, Россия, кандидат технических наук
Ключевое слово:
Ключевое слово:


     

По заказу администрации города Твери была разработана информационная система по учету и регистрации патентов на право торговли для Торгового отдела. Разработанная автоматизированная информационная система (АИС) ПАТЕНТ реализует сбор и анализ необходимой информации для оформления патентов на право торговли в стационарной сети предприятий и автоматизирует получение выходных документов отдела.

Сам проект реализован по технологии клиент-сервер на языке SAL (SQLWindows Application Language) с помощью инструментального средства SQLWindows корпорации Gupta [1]. АИС ПАТЕНТ создана для работы под ОС Windows-95 с возможностью доступа к СУБД ORACLE.

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

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

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

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

Для повышения производительности информационной системы были предприняты следующие действия.

Создание вспомогательных массивов с избыточной информацией

Устранение избыточности хранимой информации (нормализация БД) – всегда желаемый результат при проектировании структуры БД. Однако иногда приходится вводить в структуру БД некоторую долю избыточности для повышения быстродействия отдельных часто выполняемых операций. Жертвуя дисковым пространством, занимаемым дополнительной информацией, удается выиграть в увеличении скорости поиска (особенно когда подобный поиск производится оператором достаточно часто).

Применение этой технологии можно проиллюстрировать на следующем примере. Пусть существует массив данных по физическим лицам, который оформляется всеми отделами администрации. Размер этого массива информации весьма значителен, поэтому поиск информации о частном предпринимателе, оформляющем патент, может занять продолжитель-ное время. Для предотвращения возникновения избыточности данные о патенте должны ссылаться на соответствующую запись в БД физических лиц. Однако каждый раз при поиске патентов в БД, выданных определенному физическому лицу, или при получении данных по патенту необходимо производить продолжительный повторный поиск в БД. Чтобы увеличить быстродействие, сформируем из записей по физическим лицам отдельную таблицу, где будут храниться только записи о тех лицах, которые оформляли патенты в отделе торговли (см. рисунок). Размер такой дополнительной таблицы значительно меньше оригинальной, что повышает скорость поиска информации по частным предпринимателям (ЧП), занимающимся торговлей. На рисунке двунаправленными стрелками изображено полное соответствие записей таблиц, а однонаправленными стрелками отображаются ссылки на соответствующие записи таблиц без дублирования информации.

 

а) нормализованная БД; б) БД с добавлением избыточности
Оптимизация количества хранимой информации

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

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

При реорганизации БД подобным образом было достигнуто снижение полноты хранимой информации в БД с одной стороны, а с дру- гой – на 50 % уменьшилось время ввода информации в БД без потери функциональности системы.

Оптимизация построения SQL запросов к БД

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

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

R(A1, А2, А3, А4)=

=s А2=11Ù А3=55 (R1(А1 , А2)´R2(A3 , A4)).

Будем считать, что в БД отношение R1(A1, A2) представлено таблицей с 10000 записей, причем записей со значением А2 = 11 имеется 15 экземпляров. Отношение R2(A3, A4) представлено таблицей с 20000 записей, причем записей со значением А3 = 55 в ней содержится 50 экземпляров. Если поступивший запрос сразу же начать выполнять, не сделав попыток по его оптимизации, то придется выполнить большой объем работ. Для построения декартова произведения необходимо выполнить 10000´20000=200000000 обращений к записям.

Если исходное выражение преобразовать к виду:

R(A1, А2, А3, А4)=

=((sА2=11(R1(А1, А2))´(s А3=55 R2(A3 , A4))),

то объем требуемой вычислительной работы будет существенно сокращен. Действительно, для вычисления селекции s А2=11 R1(А1 , А2 ) потребуется выполнить 10000 обращений к записям, а для вычисления селекции s А3=55 R2(A3 , A4) – 20000 обращений. Для окончательного формирования ответа на запрос необходимо построить декартово произведение ((s А2=11 (R1(А1 , А2))´(s А3=55 R2(A3 , A4))), используя результаты, полученные при вычислении селекций, то есть придется выполнить еще 15´50=750 обращений к записям промежуточных результатов. В итоге требуется выполнить 10000+20000+750=30750 обращений, что существенно меньше, чем в предыдущем случае.

Оптимизация работы БД (создание индексов, хранимых процедур)

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

Использование хранимых процедур [7] позволит значительно ускорить выполнение часто используемых SQL операторов (особенно запросов). Это происходит вследствие того, что SQL оператор уже откомпилирован и находится на сервере. Программе достаточно только передать на сервер имя процедуры, которую необходимо выполнить, что уменьшит объем передаваемой информации между машиной–клиентом и сервером.

В результате применения всех перечисленных шагов в целях повышения производительности АИС ПАТЕНТ были достигнуты следующие результаты. Время ввода входной информации удалось снизить до 5-7 минут, тогда как до усовершенствования оно составляло 10-15 минут. Поиск в БД сократился до 6 минут как максимум, а до усовершенствования он составлял в среднем 14 минут. Как следствие, была достигнута экономия времени оформления патентов, уменьшилось число ошибок оператора при вводе информации, увеличилась оперативность АИС ПАТЕНТ, повысилась надежность информационной системы.

Разработанная АИС ПАТЕНТ в настоящее время передана в промышленную эксплуатацию.

Список литературы

1.     Раджеш Лалвани. Высокопродуктивное программирование в системе SQLWindows. /Пер. с англ. - М.:ABF, 1995. - 352 с.

2.     Базы и банки данных: Учебник для вузов по спец. АСУ / В.Н. Четвериков, Г.И. Ревунков, Э.Н. Самохвалов -Под ред. В.Н. Четверикова. – М: Высшая школа, 1987.

3.     Мейер Д. Теория реляционных баз данных /Пер. с англ. – М.: Мир, 1987.

4.     Диго С.М. Проектирование баз данных: Учебник. – М.: Финансы и статистика, 1988.

5.     Мамиконов А.Г., Кульба В.В., Косяченко С.А., Ужастов И.А. Оптимизация структур распределенных баз данных в АСУ. – М.: Наука, 1990.

6.     Бойко В.В., Савинков В.М. Проектирование баз данных информационных систем. – 2 изд., перераб. и допол.- М.: Финансы и статистика, 1989.

7.     И. Ю. Баженова. SQLWindows . SAL - язык приложений баз данных с архитектурой клиент/сервер. - М.: Диалог-МИФИ, 1996 - 286 с.



http://swsys.ru/index.php?id=982&lang=.&page=article


Perhaps, you might be interested in the following articles of similar topics: