- •20.7. Средства sql
- •20.8. Резюме
- •21.1. Введение
- •21.2. Некоторые аспекты технологам поддержки принятия решений
- •21.3. Проектирование базы данных поддержки принятия решений
- •21.5. Хранилища данных и магазины данных
- •21.6. Оперативная аналитическая обработка
- •21.7. Разработка данных
- •21.8. Резюме
- •22.1. Введение
- •22.2. Хронологические данные
- •22.3. Основная проблема хронологических баз данных
- •22.4. Интервалы
- •22.5. Интервальные типы
- •22.6. Скалярные операторы для интервалов
- •22.7. Операторы обобщения для интервалов
- •22.8. Реляционные операторы для обработки интервалов
- •22.9. Ограничения, включающие интервалы
- •22.10. Операторы обновления, включающие интервалы
- •22.11. Проектирование базы данных
- •22.12. Резюме
- •23.1. Введение
- •23.2. Обзор основных концепций
- •23.3. Исчисление высказываний
- •23.4. Исчисление предикатов
- •23.5. Базы данных с точки зрения доказательно-теоретического подхода
- •23.6. Дедуктивные субд
- •23.7. Обработка рекурсивных запросов
- •23.8. Резюме
- •Часть VI
- •24.1. Введение
- •24.2. Объекты, классы, методы и сообщения
- •24.3. Еще раз об объектах и объектных классах
- •Cdo для класса set (ref(emp))
- •24.4. Простой пример
- •1 | Course с001 , с001 0ffs , с001 ny offs |
- •24.5. Дополнительные аспекты
- •24.6. Резюме
- •25.1. Введение
- •X2 rational, y2 rational ) ... ;
- •25.2. Первая грубейшая ошибка
- •25.3. Вторая грубейшая ошибка
- •25.4. Вопросы реализации
- •25.5. Преимущества реального сближения двух технологий
- •25.6. Резюме
25.5. Преимущества реального сближения двух технологий
В [25.1] Стоунбрейкер предлагает "матрицу классификации" для СУБД (рис. 25.4). Квадрант 1 этой матрицы представляет приложения, которые обрабатывают простые данные и которым не требуется поддержка произвольных запросов (обычный текстовый процессор — неплохой пример для этого случая). Такие приложения на самом деле не являются приложениями баз данных в полном смысле этого слова. "СУБД", которая лучше всего подойдет для подобных приложений, —- встроенная файловая система, предоставляемая пользователю как часть операционной системы.
|
|
| |
есть запросы |
2 |
4 |
|
нет запросов |
1 |
3 |
|
|
простые данные |
сложные данные |
Рис. 25.4. Матрица классификации СУБД, предложенная Стоунбрейкером
Квадрант 2 представляет приложения, которые предусматривают ввод произвольных запросов, но все же имеют дело лишь с относительно простыми данными. В эту категорию попадает большинство современных бизнес-приложений. Подобные приложения довольно хорошо поддерживаются традиционными реляционными СУБД (или по крайней мере СУБД, использующими язык SQL).
Квадрант 3 представляет приложения, в которых используются сложные данные и выполняется обработка запросов, но лишь заранее запланированных. К этой категории, например, могут принадлежать приложения САПР/АСУТП. Современные объектные СУБД первоначально нацеливались именно на этот сегмент рынка, поскольку традиционные СУБД не слишком хорошо справляются с задачами, характерными для данной категории приложений.
Квадрант 4 представляет приложения, которые нуждаются как в поддержке сложных данных, так и в обработке произвольных запросов к этим данным. В качестве примера Стоунбрейкер приводит базу данных, содержащую оцифрованные 35-миллиметровые слайды, и типичный запрос к этой базе — "Получить все снимки закатов, сделанные в пределах 20 миль от Сакраменто, Калифорния". Затем он продолжает приводить аргументы в поддержку своей позиции; он считает, что объектно-реляционные СУБД необходимы для приложений, попадающих в этот квадрант, и через несколько лет в него будет попадать или перейдет большая часть приложений. Например, даже обычные приложения кадрового учета будут расширены для поддержки хранения фотографий сотрудников, звуковых записей (речевых сообщений) и т.п.
Подводя итог, Стоунбрейкер утверждает (и мы с ним согласны), что "объектно-реляционные системы в будущем потребуются всем" и что они — отнюдь не преходящая причуда, которая скоро будет заменена другим, таким же недолговечным, но модным веянием. Однако здесь следует напомнить, что, как мы выяснили, настоящая объектно-реляционная система является просто настоящей реляционной системой. В частности, это система, в которой не допущена ни одна из двух грубейших ошибок. Стоунбрейкер, похоже, не совсем согласен здесь с нашей позицией, по крайней мере в [25.31] он об этом ни разу не упомянул, поэтому мы можем предполагать, что, с его точки зрения, смешивание указателей и отношений не только приемлемо, но даже желательно (фактически — требуется).
Но как бы то ни было, мы могли бы согласиться, что истинная объектно-реляционная система могла бы решить все проблемы, которые (как мы это утверждали в предыдущей главе) являются проблемами именно объектных систем, а не систем объектно-реляционных. Перечислим конкретные возможности, которые должны поддерживаться истинной объектно-реляционной системой без каких-либо ограничений.
Произвольные запросы, определение представлений и поддержка декларативных ограничений целостности данных
Методы, которые охватывают классы (нет необходимости в выделении "целевого операнда")
Динамически определяемые классы (для размещения результатов произвольных запросов)
Двойственный режим доступа (в главе 24 мы подчеркивали этот вопрос, но в объектных системах обычно принцип двойственного режима не поддерживается; в них, как правило, используются разные языки для программного и интерактивного доступа к базе данных)
Отложенные проверки целостности (до момента фиксации)
Ограничения переходов
Семантическая оптимизация
Связи, степень которых больше двух
Правила внешних ключей (ON DELETE CASCADE и т.п.)
Возможности оптимизации
И т.д. Кроме того, желательно следующее.
Идентификаторы и указатели используются неявно и полностью скрыты от пользователя
"Сложные" объектные вопросы (например, что означает соединение двух объектов?) больше не возникают
Преимущества инкапсуляции как таковые используются, но по отношению к скалярным значениям в отношениях, а не к самим отношениям
Реляционные системы теперь могут справляться с задачами в области "сложных" приложений, таких как САПР/АСУТП, которые нами уже обсуждались
При этом реляционный подход остается концептуально чистым.