- •Isbn 5-8459-0138-3 (рус) isbn 0-201-38590-2 (англ)
- •Глава 2. Архитектура системы баз данных 65
- •Глава 6. Реляционная алгебра 192
- •Глава 7. Реляционное исчисление 243
- •Глава 8. Целостность данных 301
- •Глава 9. Представления 350
- •Часть 111
- •Часть IV
- •Глава 14. Восстановление 544 14.1. Введение 544
- •Глава 15. Параллельность 566
- •Часть V
- •Глава 16. Защита данных 602
- •Глава 17. Оптимизация 639
- •Глава 18. Отсутствующая информация 693
- •Глава 19. Наследование типов 725
- •Глава 20. Распределенные базы данных 767
- •Глава 21. Поддержка принятия решений 813
- •Глава 22. Хронологические базы данных 853
- •Глава 23. Логические системы управления базами данных 899
- •Часть VI
- •Глава 24. Объектные базы данных 944
- •Глава 25. Объектно-реляционные базы данных 999
- •Часть I (четыре главы) — это обширное введение в теорию баз данных вообще и реляционных баз данных в частности. Здесь также излагаются основы стандартно- го языка баз данных sql.
- •Часть IV. Две главы данной части — это несколько пересмотренные и расширен- ные версии глав 13 и 14 предыдущего издания.
- •Часть VI. Глава 24 является полностью переписанной и значительно улучшенной версией глав 22-24. Глава 25 почти полностью обновлена.
- •Часть I
- •Часть I состоит из четырех вводных глав.
- •1.1. Вводный пример
- •1.2. Что такое система баз данных
- •1.3. Что такое база данных Перманентные данные
- •1.4. Назначение баз данных
- •1.5. Независимость данных
- •1.6. Реляционные и другие системы
- •1.7. Резюме
- •2.1. Введение
- •2.2. Три уровня архитектуры
- •Внешний уровень (представления отдельных пользователей)Концептуальный уровень (обобщенное представление пользователей)
- •2.3. Внешний уровень
- •Отображение "внешний/концептуальный" схемы
- •Определение структур хранения (внутренняя схема)
- •Внешнее представление а Концептуальная схема
- •2.4. Концептуальный уровень
- •2.5. Внутренний уровень
- •2.6. Отображения
- •2.7. Администратор базы данных
- •2.8. Система управления базой данных
- •2.9. Система управления передачей данных
- •2.10. Архитектура "клиент/сервер"
- •2.11. Утилиты
- •2.12. Распределенная обработка
- •2.13. Резюме
- •3.1. Введение
- •3.2. Реляционная модель
- •3.3. Отношения и переменные-отношения
- •3.4. Смысл отношений
- •3.5. Оптимизация
- •3.6. Каталог
- •3.7. Базовые переменные-отношения и представления
- •3.8. Транзакции
- •3.9. База данных поставщиков и деталей
- •3.10. Резюме
- •Глава 4
- •4.1. Введение
- •4.2. Обзор языка sql
- •4.3. Каталог
- •4.4. Представления
- •4.5. Транзакции
- •4.6. Внедрение sql-операторов
- •4.7. Несовершенство языка sql
- •4.8. Резюме
- •Часть 9. Управление внешними данными (sql/med) Часть 10. Связь с объектным языком (sql/olb)
- •Часть II
- •Глава 5
- •5.1. Введение
- •5.2. Домены
- •5.3. Значения отношений
- •5.4. Переменные-отношения
- •5.5. Средства sql
- •5.6. Резюме
- •6.1. Введение
- •6.2. Реляционная замкнутость
- •6.3. Синтаксис
- •6.4. Семантика
- •6.5. Примеры
- •6.5.1. Получить имена поставщиков детали с номером 'р2'
- •6.5.2. Получить имена поставщиков по крайней мере одной красной детали
- •6.5.3. Получить имена поставщиков всех типов деталей
- •6.5.4. Получить номера поставщиков по крайней мере тех типов деталей, которые поставляет поставщик с номером 's2'
- •6.5.5. Получить все пары номеров поставщиков, находящихся в одном городе
- •6.5.6. Получить имена поставщиков, которые не поставляют деталь с номером 'р2'
- •6.6. Зачем нужна реляционная алгебра
- •6.7. Дополнительные операторы
- •6.8. Группирование и разгруппирование
- •6.9. Реляционные сравнения
- •6.10. Резюме
- •7.1. Введение
- •7.2. Исчисление кортежей
- •7.3. Примеры
- •7.3.5. Найти имена поставщиков по крайней мере одной детали, поставляемой поставщиком с номером 's2'
- •7.3.6. Выбрать имена поставщиков всех типов деталей
- •7.3.7. Определить имена поставщиков, которые не поставляют деталь с номером 'р2'
- •7.3.8. Определить номера поставщиков по крайней мере всех типов деталей, поставляемых поставщиком с номером *s2'
- •7.4. Сравнительный анализ реляционного исчисления и реляционной алгебры
- •7.5. Вычислительные возможности
- •7.5.1. Определить номера и вес в граммах всех типов деталей, вес которых превышает 10 ооо г
- •7.6.1. Выбрать номера поставщиков из Парижа со статусом, большим 20
- •7.7.1. Указать цвета деталей и названия городов, в которых находятся детали "не из Парижа" с весом, превышающим 10 фунтов
- •7.7.2. Для всех деталей указать номер и вес в граммах
- •7.7.3. Выбрать информацию обо всех парах поставщиков и деталей, находящихся в одном городе
- •7.7.4. Найти все пары названий городов, таких, что поставщик из первого города поставляет деталь, находящуюся во втором городе
- •7.7.5. Выбрать все пары номеров поставщиков, таких, что оба поставщика в каждой паре находятся
2.11. Утилиты
Утилиты — это программы, разработанные для АБД и используемые им при реше- нии различных административных задач. Как упоминалось выше, некоторые утилиты выполняются на внешнем уровне системы и потому представляют собой не что иное, как приложения специального назначения. Одни из них могут быть созданы даже не поставщиком данной СУБД, а определенными сторонними разработчиками программ-
ного обеспечения. Однако другие утилиты выполняются непосредственно на внутрен- нем уровне (т.е. действительно являются частью сервера) и поэтому должны предос- тавляться поставщиками СУБД.
Ниже приводится несколько примеров утилит различных типов, которые часто при- меняются на практике.
Инструменты загрузки, применяемые для создания исходной версии базы данных из одного или более файлов операционной системы.
Инструменты выгрузки-перезагрузки, применяемые для выгрузки базы данных или ее части, создания резервных копий хранимых данных и восстановления базы данных из этих копий, (Безусловно, утилита перезагрузки, по существу, идентична упомянутой выше утилите загрузки.)
Инструменты реорганизации, применяемые для перераспределения данных в хранимой базе данных, которое выполняется по различным причинам (обычно с целью повышения производительности). В частности, это может быть процедура группирования данных на диске некоторым специальным образом или освобождение пространства, занятого ранее данными, которые больше не используются.
Статистические инструменты, применяемые для вычисления различных стати- стических показателей и показателей производительности, таких как сведения о размерах файлов или значениях данных, счетчики операций ввода-вывода и т.п.
Инструменты анализа, применяемые для анализа упомянутой выше статистиче- ской информации.
Этот список охватывает лишь небольшую часть функциональных возможностей, обычно предоставляемых доступными утилитами. Помимо перечисленных, существует множество других функций.
2.12. Распределенная обработка
Как мы определили в разделе 2.10, термин "распределенная обработка" означает, что разные машины можно соединить в коммуникационную сеть (например, Internet) для ор- ганизации совместного решения одной задачи обработки данных на нескольких машинах сети. (Термин "параллельная обработка" используется практически для того же, но в "параллельных" системах взаимодействующие машины с физической точки зрения рас- положены рядом, тогда как для распределенной системы это вовсе необязательно и от- дельные машины могут быть достаточно удалены географически.) Взаимодействие меж- ду различными машинами осуществляется с помощью специального программного обеспечения, предназначенного для управления сетью. Оно может быть некоторым рас- ширением менеджера передачи данных (см. раздел 2.9), но чаще всего является отдель- ным программным компонентом.
Распределенная обработка может быть самой разнообразной и осуществляться на разных уровнях. Как отмечалось в разделе 2.10, один из простейших случаев, представ- ленный на рис. 2.6, — это случай, когда сервер СУБД запускается на одной машине, а клиентское приложение — на другой.
Как уже отмечалось в конце раздела 2.10, термин "клиент/сервер", несмотря на то что он, строго говоря, является чисто архитектурным, фактически стал синонимом изобра- женной на рис. 2.6 структуры, в соответствии с которой клиент и сервер запускаются на разных машинах. И действительно, существует множество аргументов в пользу подобной схемы.
Приложения
Машина клиента
Прозрачный удаленный доступ
![]()
Машина сервера
Главный
аргумент связан с возможностью
организа-
ции параллельной обработки.
В этом случае для ре-
шения общей
задачи применяется сразу
несколько
процессоров, поскольку
работа сервера (базы данных)
и клиента
(приложения) осуществляется параллельно.
В
результате показатели времени реакции
системы на
запрос и ее производительности
должны улучшиться.Кроме того, машина сервера может быть изготовле- на по специальному заказу и специально приспособ- лена для работы с СУБД ("машина базы данных"). Такое решение позволяет дополнительно повысить производительность СУБД.
Аналогично машина клиента может представлять со- бой персональную рабочую станцию, максимально приспособленную к потребностям конкретного ко- нечного пользователя, что позволит предоставить ему наиболее удобный интерфейс и гарантировать высо- кий уровень готовности, быструю реакцию системы и другие дополнительные удобства при использовании.
К одной и той же машине сервера могут иметь доступ несколько разных машин клиентов (что чаще всего и имеет место). Поэтому одна база данных может совместно использоваться не- сколькими различными клиентскими системами, как показано на рис. 2.7.
К сказанному выше можно добавить, что работа сервера и клиента на отдельных машинах отвечает принципам работы многих предприятий. Вполне типичный способ функционирования отдельных предприятий (например, банков) заключается в исполь- зовании многих компьютеров, причем данные для одной части предприятия сохраня- ются на одном компьютере, а данные для другой части — на другом. Несомненно, что пользователям одного компьютера, пусть лишь иногда, обязательно потребуется дос- туп к данным, хранящимся на другом компьютере. Следуя примеру банка, можно с высокой степенью вероятности утверждать, что пользователям одного отделения бан- ка иногда потребуется доступ к данным, сохраняемым в другом его отделении. Из это- го можно сделать вывод, что на машинах клиентов могут сохраняться их данные, а машина сервера может иметь собственные приложения. Поэтому, вообще говоря, каж- дая машина будет выступать в роли сервера для одних пользователей и в роли клиента для других, образуя систему, представленную на рис. 2.8. Иными словами, в этом слу- чае каждая машина будет поддерживать полную систему баз данных в смысле, кото- рый вкладывался в это понятие в предыдущих разделах главы.

Рис.
2.7. Система с одним сервером и несколькими
клиентами
Отметим последнее преимущество, которое состоит в том, что отдельная машина клиента может иметь доступ к нескольким машинам серверов (случай, противополож- ный показанному на рис. 2.7). Это полезная возможность, поскольку, как уже упомина- лось, предприятие обычно выполняет обработку данных таким образом, что полный на- бор всех данных сохраняется не на одной машине, а распределяется на нескольких раз- личных машинах, причем в приложениях иногда необходим доступ к данным сразу не- скольких машин. Такой доступ предоставляется, в основном, двумя способами.
Клиент может получать доступ к любому количеству серверов, но лишь к одному из них в каждый момент времени (т.е. каждый запрос к базе данных может быть направлен только к одному серверу). В такой системе невозможно за один запрос получить комбинированные данные от двух или более серверов. Кроме того, поль- зователь в такой системе должен знать, на какой именно машине содержится кон- кретная часть данных.
Клиент может получать доступ к любому количеству серверов одновременно (т.е. за один запрос можно получить комбинированные данные двух или более серве- ров). В этом случае серверы рассматриваются клиентом как единый сервер (с ло- гической точки зрения) и пользователь может не знать, на какой именно машине содержится та или иная часть данных.
Второй случай — это пример системы, которую обычно называют распределенной системой баз данных. Тема распределенных баз данных сама по себе весьма обширна. Подводя сказанное к некоторому логическому завершению, отметим еле-
дующее:
полная поддержка распределенных баз
данных означает, что отдельное при-
ложение
может "прозрачно" обрабатывать
данные, распределенные между множест-
вом
различных баз данных, управление которыми
осуществляют разные СУБД, рабо-
тающие
на соединенных коммуникационными сетями
машинах разных типов с раз-
личными
операционными системами. Здесь понятие
"прозрачно" означает, что прило-
жение
выполняет обработку данных с логической
точки зрения так, как будто управ-
ление
данными полностью осуществляется одной
СУБД, работающей на единственной
машине.
Предоставление такой возможности может
показаться невероятно трудной
задачей,
но весьма желанной с практической точки
зрения. Производители СУБД на-
пряженно
работают, чтобы сделать подобные системы
реальностью. Подробнее рас-
пределенные
базы данных рассматриваются в главе
20.
