Электронная библиотека диссертаций и авторефератов России
dslib.net
Библиотека диссертаций
Навигация
Каталог диссертаций России
Англоязычные диссертации
Диссертации бесплатно
Предстоящие защиты
Рецензии на автореферат
Отчисления авторам
Мой кабинет
Заказы: забрать, оплатить
Мой личный счет
Мой профиль
Мой авторский профиль
Подписки на рассылки



расширенный поиск

Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Заставной Дмитрий Александрович

Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных
<
Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных
>

Диссертация - 480 руб., доставка 10 минут, круглосуточно, без выходных и праздников

Автореферат - бесплатно, доставка 10 минут, круглосуточно, без выходных и праздников

Заставной Дмитрий Александрович. Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных : диссертация ... кандидата технических наук : 05.13.11.- Ростов-на-Дону, 2005.- 156 с.: ил. РГБ ОД, 61 05-5/4194

Содержание к диссертации

Введение

ГЛАВА 1. Анализ исследований в области языков запросов для объектных баз данных 12

1.1. Цели главы 12

1.2. Исторический аспект развития концепции объектных баз данных 15

1.3. Общие характеристики языков запросов для объектных баз данных 18

1.4. Обзор исследований навигационных языков запросов 23

1.4.1. Языки для ER-модели , 24

1.4.2. Расширенная реляционной модели (nested-relation, composite objects)...26

1.4.3. Графовые модели 28

1.4.4. Навигационные языки 30

1.4.5. " Классические" объектно-ориентированные системы 34

1.5. Объектно-реляционные системы 36

1.6. Обзор стандартов ODMG 42

1.7. Результаты анализа 47

ГЛАВА 2. Создание высокоуровневого навигационного языка запросов для объектных баз данных 48

2.1. Концептуальное обоснование применения высокоуровневой нотации

связи для построения языков запросов к объектным БД 48

2.1.1. Применение понятия связи в базах данных 48

2.1.2. Построение запросов в терминах навигационных путей 56

2.1.3. Передача множества путей в приложение 59

2.2. Язык объектной базы данных 62

2.2.1. Объектная модель данных , 63

2.2.2. Создание экземпляров объектов и связей 65

2.2.3. Управление контекстами 66

2.2.4. Запросы 67

2.2.5. Средства вторичной навигации 76

2.3. Методология использования языка запросов 79

2.3.1. Создание схемы 80

2.3.2. Исполнение запросов 82

2.3.3. Доступ к данным из результирующих множеств 85

2.4. Выводы по главе 2 89

ГЛАВА 3. Реализация языка объектных баз данных 91

3.1. Архитектура системы 92

3.1.1. Общие вопросы 92

3.1.2. Обработчик входного потока 94

3.1.3. Реализация представления схемы 96

3.2. Реализация представления объектов и экземпляров связей 97

3.3. Исполнение запросов 103

3.3.1. Анализ выражения запроса 104

3.3.2. Генерация SQL-предложений 105

3.3.3. Исполнение SQL-предложений 111

3.4. Реализация кеша и средств вторичной навигации 112

3.5. Выводы по Главе 3 115

ГЛАВА 4. Применение обд для представления в базе даных исходных текстов программ 117

4.1. Представление исходных текстов программ в БД 118

4.2. Проектирование схемы репозитория 120

4.3. Генерация внутреннего представления исходных текстов в ОБД 126

4.4. Поиск в БД компонент представления программных текстов 130

4.5. Выводы по Главе 4 133

Заключение 135

Литература

Введение к работе

Актуальность исследований

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

Основой современных методов проектирования баз данных является ER-диаграммы (ERD) различных нотаций [27,30,38,42,45,96]. Эти диаграммы позволяют описывать структуру моделируемой предметной области, используя концепции связей между сущностями, и подобный подход является наиболее естественным для описания структурных аспектов данных, К 90-м годам технологии проектирования баз данных на основе ERD стали доминирующими и, более того, стали основной и неотъемлемой частью практической разработки баз данных, были стандартизированы, и в настоящее время поддерживаются многочисленными инструментальными средствами проектирования БД (Oracle Designer, ErWin. и т.д.). Дальнейшее развитие эти методологии получили в современной технологии объектно-ориентированного анализа и проектирования, где функции ER-диаграмм выполняют диаграммы классов.

Вместе с тем, роль ER-диаграмм, точнее говоря, описание данных в терминах сущностей и связей, ограничивается стадией проектирования схемы базы данных. Это обуславливается тем фактом, что в языке SQL, являющимся базовым средством описания данных и доступа к ним в современных БД, концепция связи никаким образом не поддерживается. Данный факт не препятствует проектированию схемы при помощи ER-диаграмм, поскольку существует и практически реализованы эффективные средства генерации по диаграммам физической схемы БД, где связи и их характеристики достаточно

полно моделируются средствами SQL. Но для доступа к данным и манипулирования используются базовые средства SQL без всякой связи с исходными ER-диаграммами. Эти средства доступа, как уже говорилось, понятие связи не поддерживают, что приводит к потере выразительности и естественности выражений запросов, что позволяет говорить о разрыве между высокоуровневыми средствами проектирования баз данных и низкоуровневыми средствами доступа к данным.

Следует отметить, что появление ER-моделирования исторически явились по существу началом периода обширнейших исследований в технологии баз данных, во второй половине 80-х годов слившимися с технологией баз данных на основе объектного подхода, который фактически унаследовал структурную основу представления данных по принципу сущность-связь. Однако разработка языков запросов к таким базам данных фактически не привела к созданию каких-либо оригинальных высокоуровневых языков. Оба основных современных направления -объектно-ориентированные базы данных (семейство стандартов ODMG) [14,74] и объектно-реляционные системы (напр. Огас1е8) [96] в качестве языка запросов предлагают расширения языка SQL. Конечно, эти расширения SQL, в особенности язык OQL стандарта ODMG, существенно обогащают средства доступа к данным, в том числе средствами высокоуровневой навигации, но при этом сохраняется семантическая основа SQL, который ориентирован на работу с так называемыми "плоскими" множествами. Результат запроса представляется так же в виде "плоского" множества.

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

так и от каких-либо средств ER-моделирования. Более того, как показала практика и опыт многолетних исследований, надежды на возможность создания единой среды программирования, объединяющей и высокоуровневый язык запросов, и возможности процедурных языков, являются нереальными. Это порождает необходимость разработки приемлемых интерфейсов между двумя вычислительными средами, и в случае с SQL, такие интерфейсы были реализованы (на основе механизмов курсоров) и успешно применяются в настоящее время. Аналогичные средства используются и для доступа к значениям запросов в среде OQL, которые дополняются специфическими интерфейсами, классифицируемыми как низкоуровневые средства покомпонентной навигации по связям [48].

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

Цель и задачи исследований

Целью данной диссертационной работы является выработка единого подхода к построению и использованию баз данных, соответственно реализуемого на трех уровнях работы с БД:

1. Проектирование схемы БД.

  1. Формулировка высокоуровневого запроса к БД.

  2. Манипулирование результатами запроса.

Основное внимание уделено разработке языка запросов и средств передачи результатов запросов в среду включающего языка.

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

Научная новизна

При выполнении диссертационной работы были получены следующие оригинальные результаты:

  1. Разработаны объектная модель данных, высокоуровневый язык запросов к объектной БД (ОБД), язык манипулирования объектами и язык доступа к значениям запросов на основе единой концепции навигационных путей в ОБД.

  2. Разработаны и исследованы методы реализации системы ОБД, которые основаны на трансляции языковых конструкций разработанного языка в команды языка SQL.

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

4. Предложенная методология моделирования и оперирования объектами применена для задач внутреннего представления в БД исходных текстов программных модулей в макетной реализации некоторой CASE-системы.

Результаты, представляемые к защите

  1. Объектная модель данных, представляющая данные предметной области в виде совокупности экземпляров объектов и экземпляров связей между ними, и методология проектирования схемы БД для предложенной модели данных.

  2. Язык запросов для объектной БД, основанный на концепции высокоуровневой навигации в БД, концептуальной основой которого является методика описания множеств путей в БД, образуемых экземплярами связей между объектами,

  3. Язык покомпонентного доступа к значениям запросов к ОБД, ориентированный на последовательный покомпонентный доступ к этим значениям из сред включающих языков.

  4. Программная реализация разработанного языка для описания типов объектов БД, манипулирования объектами и экземплярами связей, спецификации запросов к БД, и доступа к компонентам значений запросов.

5. Экспериментальная реализация репозитория макетной CASE- системы на
основе разработанной ОБД, предназначенного для хранения внутреннего
представления исходных текстов программ.

Апробация

Основные материалы по теме диссертационной работы представлялись на следующих конференциях и семинарах: Третья всероссийская научная

конференция студентов и аспирантов "Техническая кибернетика,
радиоэлектроника и системы управления", Таганрог, 1996; Всероссийского
симпозиума "Математическое моделирование и информационные
технологии", Кисловодск, 1997; Первого Восточно-европейского симпозиума
"Advances in Databases and Information Systems", Санкт-Петербург, 1997;
Всероссийских конференциях "Компьютерные технологии в инженерной и
управленческой деятельности", Таганрог, 1997, 1999, 2000 и 2001 г.г.;
Международной конференции "2nd Join Conference on Knowledge-Based
Software Engineering", Словакия; Международной конференции "Computer
Science and Information Technologies", Москва, 1999; Международной
конференции "3rd Join Conference on Knowledge-Based Software Engineering",
Прага, Чехия, 2000; Пятой научно-практической конференции

"Искусственный интеллект-2004", Крым, Украина; научных семинарах ЮгИнфо (ВЦ) РГУ.

Реализация и внедрение результатов работы

Результаты диссертационной работы были использованы в отчетах по проекту
1.7.43 «Разработка методов, технологии и специальных программных средств
удаленного использования вычислительных ресурсов регионального центра
высокопроизводительных вычислений в учебном процессе и научных
исследованиях» НОП Минобразования РФ «Научное, научно-методическое,
материально-техническое обеспечение развития технологий

информационного общества и индустрии образования» (2003 год) и использованы при разработке системы ГИС "Горгаз-Ростов" (свид. Госпатента № 2003610160) и БД астрофизических объектов, разработанной в Специальной Астрофизической Обсерватории РАН.

Публикации

Результаты диссертации опубликованы в И печатных работах, включая 1 статью в журнале, рекомендованном ВАК РФ для публикации результатов докторских диссертаций и 2 статьи в зарубежных изданиях.

Структура диссертации

Представляемая к защите диссертационная работа включает Введение, 4 Главы, Заключение, Список использованной литературы из ПО наименования и Приложения. Объем основного текста диссертации составляет 147 стр.

Благодарности

Автор выражает глубокую признательность научному руководителю Букатову АлександруАлексевичу за многолетнюю помощь и поддержку.

Общие характеристики языков запросов для объектных баз данных

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

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

Другой способ доступа к БД, основанный на использовании различных интерактивных визуальных средств, основанных на "ручной" навигации по связанным объектам или частям композиционного объекта, был предложен еще на ранних этапах развития технологии БД Ч. Бахманом [59] для сетевой модели. Такие средства действительно хорошо подходят для обращения со сложно организованными данными, и многие системы, как экспериментальные (напр. [56]), так и практически применяемые, поддерживают такие возможности. Однако подобный интерфейс совершенно недостаточен для разработки сложных приложений.

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

К дополнительным возможностям относились следующие средства: - наличие высокоуровневого языка запросов; - наличие единой среды для проектирования схемы БД и спецификации запросов к БД; - поддержка наследования; - поддержка инкапсуляции и функций для доступа к данным;

Рассмотрим подробнее содержание перечисленных выше понятий. Селекционные и навигационные операции, составляющие основу любого языка запросов, можно классифицировать на высокоуровневые и низкоуровневые, причем понятие "высокоуровневый" различные авторы трактуют в значительной степени по-разному. Традиционно [42] к высокоуровневым средствам относят средства SQL-образных языков, оперируемых множествами (таблицами) данных, а к низкоуровневым 20 манипулирование при помощи явно специфицируемых циклов, операций с указателями и других средств, к которым относят средства дореляционных систем и современных языков программирования. Традиционная классификация имеет под собой определенные основания; вместе с тем, например, моделирование связей, выполняемое в реляционной модели при помощи миграции атрибутов и операций соединений, трудно назвать высокоуровневым средством, равно как и в целом, моделирование предметных областей в виде таблиц. Одной из основ такой традиционной классификации является мнение, что вычислительная среда является высокоуровневой, если она отражает некоторую теоретическую схему, например, модель Кодда, поддерживает операции с множествами и т.д. Данный подход следует считать, по меньшей мере, архаичным,

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

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

Применение понятия связи в базах данных

Применение баз данных в проектировании и реализации современных информационных систем включает три стадии: 1. Проектирование схемы базы данных. 2. Определение запросов к базе данных. 3. Исполнение запросов и передача результатов в среду приложения. На современном уровне развития информационных технологий для решения задач, соответствующих каждому из приведенных аспектов, применяются различные средства. Для проектирования схемы БД широкое распространение получило использование современных высокоуровневых технологий, основанных на ER-моделировании и на их дальнейшем развитии в объектно-ориентированном анализе и проектировании (OOAD), напр. в UML. Для спецификаций запросов применяются базовые средства сервера баз данных, обычно SQL. Доступ к значениям запросов обычно реализуется средствами включающего языка, например, С и ориентированные на него интерфейсы взаимодействия с базой данных, напр. ODBC, ОСІ, ADO и т.д.

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

Рассмотрим подробнее особенности каждого из аспектов разработки баз данных. К девяностым годам основным средством проектирования схем SQL баз данных стало ER-моделирование, восходящее к одноименной модели П. Чена, предложенной в конце 70-х годов в качестве самостоятельной модели данных. В 80-х годах данная модель получила значительное развитие, в честности, в работах К. Баркера, была формализована в нескольких стандартах (напр. IDEF1X, Ш), и в ряде других методологий, используемых в многочисленных инструментальных средствах (CASE-системах). Эта средства ориентированны не только на разработку схем SQL баз данных, но и на спецификацию произвольных данных в контексте структурного анализа. Следует отметить универсальность ER-подхода и применимость как к "традиционным" бизнес-приложениям БД, так и к "нетрадиционным" приложениям, относящимся, например, к сфере автоматизированного проектирования (CAD-системы).

В 90-х годах, с появлением концепций объектно-ориентированного анализа и проектирования, ER-моделирование получило в OOAD дальнейшее развитие, где аналогом ER-диаграмм являются диаграммы классов. В них, в основном, более детально классифицируются виды связей, а так же вводятся средства для специфицирования слоншые виды ограничений, выходящие за пределы структурных, что позволяет, в частности, использовать диаграммы UML для генерации триггерных ограничений. Впрочем, нельзя не отметить тот факт, что средства, например, языка UML, в большей степени ориентированы на объектно-ориентированные и объектно-реляционные базы данных, чем на традиционный SQL, и поэтому в сфере SQL баз данных не имеют значительных преимуществ в сравнение с традиционной ER-методологией.

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

Реализация представления схемы

Схема объектной базы данных, состоящая из нескольких определений типов, используется для выполнения двух основных задач: 1. генерации внутреннего представления объектов и связей в репозитории (SQL БД); 2. обработки запросов, в частности, для проверки корректности выражений.

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

Создание схемы, напомним (см. п. 3.2.1), выполняется в три этапа. На первом этапе происходит ввод определений типов и их возможная модификация. Данный этап состоит в исполнении команд типа CREATE TYPE и ей аналогичных. На этой стадии выполняются проверки синтаксиса и некоторых семантических ограничений, и в случае успеха - создание внутренней структуры данных, содержащей это определение типа. Эта внутренняя структура полностью соответствует текстовому описанию типа, и поэтому ее формат здесь подробно не рассматривается.

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

На третьем этапе по внутреннему представлению типов происходит генерация структур данных для представления объектов и связей в SQL БД; эта генерация подробно описана в следующем разделе.

Реализация представления объектов и экземпляров связей

Одной из основных задач, стоявших при реализации системы объектной базы данных на основе SQL-сервера, стала разработка метода представления структур данных объектов и экземпляров связей в виде SQL-таблиц, и реализация этих методов.

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

Таким образом, каждый экземпляр некоего типа может быть представлен плоской структурой (записью), а все объекты этого типа - SQL-таблицей. Для создаваемой SQL-таблицы так же задается ряд ограничений (CONSTRAINT), в том числе ограничение первичного ключа на поле -идентификатор объекта, и создаются требуемые индексы.

Для генерации уникальных идентификаторов объектов для каждой таблицы в SQL БД создается т.н. последовательность (SEQUANCE, см. [97]). Экземпляры статической связи моделируются в SQL БД так же в виде таблиц, состоящих из записей, каждая из которых соответствует одному экземпляру связи двух объектов. Эта запись состоит из пары идентификаторов связанных объектов. По существу, такой способ представления связей при помощи миграции атрибутов в подчиненные таблицы соответствует традиционной технике трансляции ER-диаграмм в код SQL. На поля со значениями митрированных атрибутов - идентификаторов объектов накладываются ограничения внешних ключей с каскадным удалением и строятся соответствующие индексы по этим полям.

Если тип является подтипом некоего типа, то в этом случае последовательность создается только для SQL-таблицы,, соответствующей супертипу, и на таблицу для объектов подтипа подтипа дополнительно накладывается ограничение внешнего ключа, ссылающегося на таблицу для представления объектов супертипа.

Фактическое создание SQL-представления некоего типа объектов, инициируемое командой MAP, состоит в генерации нескольких SQL-команд, и исполнении их в SQL БД, Этот процесс использует внутреннее представление схемы, а так же набор специальных шаблонов для SQL-скриптов.

Проектирование схемы репозитория

Рассмотрим процесс генерации внутреннего представления исходных текстов программ в объектной базе данных. Данный процесс с содержательной точки зрения состоит в генерации множества экземпляров объектов, соответствующих синтаксическим конструкциям текста программы, и генерации экземпляров связей.

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

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

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

На второй стадии осуществляется генерация команд создания объектов и связей. Объекты для представления переменных и функций, которые имеют имена (в соответствии с требованиями языка), сохраняют эти имена при создании. Имена для объектов, представляющих прочие синтаксические элементы (которые в программах реальных имен не имеют, например, операторы циклов), получают искусственные имена, создаваемые по следующему правилу ИмяТипаОбъекта + ПорядковыиНомерОбъекта

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

Работа генератора внутреннего представления состоит в проходе по исходному двоичному дереву, при котором происходит: генерация объекта, представляющего программную конструкцию вершины дерева; генерация объектов для программных конструкций, которые являются вложенными в программную конструкцию верхнего уровня, и создание экземпляров связей между объектов верхнего уровня и всеми вложенными объектами. Если какая-либо из вложенных конструкций содержит свои собственные вложенные конструкции, то для него рекурсивно выполняется данная процедура.

Рассмотрим на примере принцип работы процедуры. Ниже приведен фрагмент текста программы и сгенерированные команды, создающие объекты и экземпляры связей для представления фрагмента в объектной базе данных.

Рассмотрим идентификацию компонент представления программных текстов, сохраненных в объектной базе данных, при помощи предложенного языка запросов.

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

Ниже приведены примеры запросов к репозиторию, содержащему представление программных модулей, в частности, содержащий представление программного фрагмента, приводимого в предыдущем разделе.

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

Похожие диссертации на Разработка и реализация высокоуровневого навигационного языка запросов для объектных баз данных