- •Содержание
- •Глава 1. Введение в объектные субд 15
- •Глава 2. Объектно-ориентированные субд: концепции и проектирование 46
- •Глава 3. Введение в объектно-ориентированную субд cashé 78
- •Глава 4. Объектная модель cache 92
- •Глава 5. Технологии csp 121
- •Предисловие
- •Методические материалы рабочая программа дисциплины Пояснительная записка
- •Содержание дисциплины
- •Рекомендации по самостоятельной работе студента Календарно-тематический план работы
- •Методические указания по отдельным видам самостоятельной работы Указания по самостоятельному изучению теоретического материала
- •Указания по выполнению практических заданий и текущему контролю
- •Указания к промежуточной аттестации с применением балльно-рейтинговой системы оценки знаний.
- •Соответствие оценок
- •Теоретические материалы Глава 1. Введение в объектные субд
- •1.1. Специализированные приложения баз данных
- •Автоматизированное проектирование
- •Автоматизированное производство
- •Автоматизированная разработка программного обеспечения
- •Офисные информационные системы и мультимедийные системы
- •Геоинформационные системы
- •Прочие специализированные приложения
- •1.2. Недостатки реляционных субд
- •Неадекватное представление сущностей реального мира
- •Семантическая перегрузка
- •Слабая поддержка ограничений целостности и корпоративных ограничений
- •Однородная структура данных
- •Ограниченный набор операций
- •Сложности при обработке рекурсивных запросов
- •Упрощенное отношение s
- •Транзитивное замыкание отношения s
- •Проблема рассогласования типов данных
- •1.3. Основные концепции объектно-ориентированного подхода
- •1.3.1. Абстракция, инкапсуляция и сокрытие информации
- •1.3.2. Объекты и атрибуты
- •Атрибуты одного из экземпляров объекта типа Branch
- •1.3.3. Идентификация объектов
- •1.3.4. Методы и сообщения
- •1.3.5. Классы
- •1.3.6. Подклассы, суперклассы и наследование
- •1.3.7. Перекрытие и перегрузка
- •1.3.8. Полиморфизм и динамическое связывание
- •1.4. Способы хранения объектов в реляционной базе данных
- •1.4.1. Преобразование классов в отношения
- •Преобразование каждого класса или подкласса в отношение
- •Преобразование каждого подкласса в отношение
- •Преобразование иерархии в одно отношение
- •1.5. Поколения субд
- •Вопросы для самопроверки
- •Глава 2. Объектно-ориентированные субд: концепции и проектирование
- •2.1. Введение в объектно-ориентированные модели данных и оосубд
- •2.2. Особенности оосубд
- •2.2.1. Доступ к объекту
- •2.3. Перманентность
- •Создание контрольных точек
- •Сериализация
- •Явная подкачка объектов
- •2.4. Прочие аспекты функционирования оосубд
- •2.4.1. Транзакции
- •2.4.2. Поддержка многих версий
- •2.4.3. Эволюция схемы
- •2.5. Документ «Манифест разработчиков объектно-ориентированных систем баз данных»
- •Правило 1. Поддержка сложных объектов
- •Правило 2. Поддержка идентификации объектов
- •Правило 3. Поддержка инкапсуляции
- •Правило 4. Поддержка типов или классов
- •2.6. Преимущества и недостатки оосубд
- •2.6.1 .Преимущества
- •2.6.2. Недостатки объектно-ориентированных субд
- •2.7. Проектирование объектно-ориентированной базы данных
- •2.7.1. Сравнение объектно-ориентированного и логического моделирования данных
- •Сравнение характеристик объектного и логического моделирования данных
- •2.7.2. Связи и ссылочная целостность
- •2.7.3. Проектирование правил поведения
- •Вопросы для самопроверки
- •Глава 3. Введение в объектно-ориентированную субд cashé
- •3.1. Введение
- •3.2. Установка и использование Cache
- •3.3. Первый пример.
- •Создание класса
- •Создание свойств
- •Создание запроса
- •Компиляция
- •3.5. Мастер форм Cache для Web
- •Вопросы для самопроверки
- •Глава 4. Объектная модель cache
- •4.1. Правила идентификации
- •4.2. Элементы классов
- •Пример 1:
- •Пример 2:
- •4.3. Имя класса
- •4.4. Ключевые слова
- •4.5. Свойства
- •Видимость свойств
- •Поведение свойств
- •Ключевые слова
- •Виды свойств
- •Свойства типов данных
- •Параметры
- •4.6. Форматы данных и методы преобразования классов типов данных
- •4.7. Свойства ссылки на объекты
- •Встроенные объекты
- •4.8. Свойства коллекции
- •4.9. Потоки данных
- •4.10. Многомерные свойства
- •4.11. Методы
- •Аргументы метода
- •Определение значений по умолчанию для аргументов метода
- •Передача аргументов по ссылке
- •Возвращаемое значение метода
- •Видимость методов
- •Язык метода
- •Ключевые слова метода
- •Методы класса и экземпляров
- •Вызов метода
- •Виды методов
- •4.12. Запросы
- •4.13. Пакеты
- •Вопросы для самопроверки
- •Глава 5. Технологии csp
- •5.1. Выражения Caché
- •Пример p0. Вывод текущей даты
- •5.2. Скрипты, выполняющие код Caché
- •Пример p1. Счетчик посещений
- •5.3. Подпрограммы, вызываемые на стороне сервера #server(…)# Пример p3.
- •Пример p4. Калькулятор.
- •5.4. Теги csp
- •Основные теги csp
- •Пример p6.1.
- •Связывание объектов с формами: cspbind в формах
- •Пример р7. Использования тега csp:object.
- •Пример p10. Использование курсора в цикле while.
- •Пример p11. Вывести названия всех книг, которые описываются классом Kniga(Id, Name,Avtor,Cat).
- •Пример р13. Посчитать сумму двух чисел.
- •5.4.7. Использование JavaScript-кода и кода html в коде Caché Object Script
- •5.5. Доступ к полям формы. Класс %csp.Request
- •Пример p14.
- •Пример p15.
- •5.6. Объект %session
- •Вопросы для самопроверки
- •Заключение
- •Задания для самоконтроля Тесты для самоконтроля
- •Ключи к тестам для самоконтроля
- •Задания для контрольных работ Указания по выполнению контрольной работы
- •Темы контрольных работ
- •Вопросы для подготовки к экзамену
- •Глоссарий
- •Список источников информации Основная литература
- •Дополнительная литература
- •Приложение 1 пример учебной базы данных «агентство недвижимости»
- •Приложение 2 пример учебной базы данных для главы 3 Класс Person (клиенты библиотеки)
- •Класс Cat (категория книг)
- •Класс Kniga (книги)
- •Класс Vyd (выдачи книг)
2.4. Прочие аспекты функционирования оосубд
В разделе 2.2 были указаны три области, в которых применение реляционных СУБД связано с возникновением неразрешимых проблем, а именно:
продолжительные транзакции;
поддержка нескольких версий;
эволюция схемы.
В настоящем разделе описаны способы решения этих проблем в объектно-ориентированных СУБД. Здесь также рассматриваются возможные варианты архитектур ООСУБД и кратко описаны средства контроля производительности.
2.4.1. Транзакции
Транзакция является логической единицей работы, которая всегда должна переводить базу данных из одного непротиворечивого состояния в другое. В деловых приложениях обычно используются кратковременные транзакции, тогда как в инженерных и проектных приложениях, наоборот, транзакции в основном оперируют сложными объектами и могут выполняться в течение нескольких часов или даже суток. Ясно, что для поддержки долговременных транзакций необходимо использовать другие протоколы, которые отличаются от протоколов, применяемых в обычных приложениях баз данных.
В ООСУБД логической единицей управления параллельным выполнением и восстановлением является объект, хотя в целях повышения производительности могут использоваться более крупные единицы. Управление параллельным выполнением позволяет избежать возникновения конфликтов при доступе к базе данных со стороны многих пользователей. Протоколы на основе блокировки являются наиболее распространенным механизмом управления параллельным выполнением, используемым в ООСУБД для предотвращения конфликтов. Однако для пользователя, который инициировал долговременную транзакцию, будет совершенно неприемлемым, если из-за конфликта блокировок его транзакция будет отменена, а результаты всей проделанной работы утрачены. Для решения этой проблемы можно воспользоваться следующими двумя средствами:
протокол управления параллельным выполнением с поддержкой многих версий:
усовершенствованная модель обработки транзакций, например, с использованием механизма вложенных транзакций, хроник или многоуровневыхтранзакций.
2.4.2. Поддержка многих версий
Существует много приложений, в которых необходимо обеспечить доступ к предыдущему состоянию объекта. Например, разработка некоторого проекта часто имеет вид экспериментального пошагового процесса, состояние объектов которого меняется со временем. Поэтому в базах данных, хранящих информацию проектов, необходимо отслеживать эволюцию проектируемых объектов и изменения, вносимые в проект разными транзакциями.
Процесс сопровождения эволюции объектов называется управлением версиями. Версия объекта представляет некоторое определенное состояние объекта, а история версий — хронологию эволюции объекта. Механизм отслеживания версий должен управлять изменениями свойств объектов таким образом, чтобы ссылки на объект всегда указывали на правильную версию объекта. Рассмотрим один из способов управления версиями: будем рассматривать следующие три типа версий:
временные версии. Временная версия считается нестабильной и может быть обновлена и удалена. Она может быть создана заново на основании ранее выпущенной версии некоторого объекта, взятой из открытой базы данных. Она может также создаваться на основе рабочей или временной версии объекта из закрытой базы данных. В последнем случае базовая временная версия становится рабочей версией. Временные версии хранятся в закрытом рабочем пространстве разработчика проекта;
рабочие версии. Рабочая версия считается стабильной и не может быть обновлена, но может быть удалена только ее создателем. Эта версия также хранится в закрытом рабочем пространстве разработчика проекта;
выпущенные версии. Выпущенная версия считается стабильной и не может быть обновлена или удалена. Она хранится в открытой базе данных, в которую помещается в результате извлечения рабочей версии объекта из закрытой базы данных.
Для повышения производительности и уменьшения потребности в памяти для хранения поддерживаемых версий в системе может быть предусмотрено требование, согласно которому приложение должно сообщать о необходимости поддержки версий для некоторого класса. При создании экземпляра класса с поддержкой версий вместе с первой версией этого экземпляра создается его универсальный объект, который содержит информацию, необходимую для управления версиями.
