- •Глава 13. Семантическое моделирование
- •Часть III Проектирование базы данных
- •Часть IV
- •14.1. Введение
- •14.2. Транзакции
- •14.3. Восстановление транзакции
- •14.4. Восстановление системы
- •14.5. Восстановление носителей
- •14.6. Двухфазная фиксация
- •14.7. Поддержка языка sql
- •14.8. Резюме
- •15.1. Введение
- •15.2. Три проблемы параллельности
- •15.3. Блокировка
- •15.4. Устранение трех проблем параллельности
- •15.5. Взаимная блокировка
- •15.6. Упорядочиваемость
- •15.7. Уровни изоляции
- •15.8. Блокировка намерения
- •15.9. Средства языка sql
- •15.10. Резюме
- •Часть V
- •16.1. Введение
- •16.2. Избирательная схема управления доступом
- •16.3. Мандатная схема управления доступом
- •16.4. Статистические базы данных
- •16.5. Шифрование данных
- •16.6. Средства языка sql
- •16.7. Резюме
- •17.1. Введение
- •17.2. Пример выполнения оптимизации
- •17.3. Оптимизация запросов
- •17.4. Преобразование выражений
- •17.5. Статистические показатели базы данных
- •17.6. Стратегия по принципу "разделяй и властвуй"
- •17.7. Реализация реляционных операторов
- •17.8. Резюме
- •18.1. Введение
- •18.2. Обзор концепции трехзначной логики
- •18.3. Некоторые следствия изложенной схемы
- •18.4. Отсутствующие значения и ключи
- •18.5. Внешнее соединение
- •18.6. Специальные значения
- •18.7. Поддержка неопределенных значений в языке sql
- •18.8. Резюме
- •Глава 19
- •19.1. Введение
- •19.2. Иерархия типов
- •19.3. Полиморфизм и заменимость
- •19.4. Переменные и операция присвоения
- •19.5. Специализация по ограничениям
- •19.6. Операции сравнения
- •19.7. Операторы, версии и сигнатуры
- •19.8. Является ли окружность эллипсом
- •19.9. Пересмотр специализации ограничением
- •19.10. Резюме
- •20.1. Введение
- •20.2. Предварительные сведения
- •20.3. Двенадцать основных целей
- •1. Локальная независимость
- •2. Отсутствие опоры на центральный узел
- •3. Непрерывное функционирование
- •4. Независимость от расположения
- •5. Независимость от фрагментации
- •6. Независимость от репликации
- •7. Обработка распределенных запросов
- •8. Управление распределенными транзакциями
- •9. Аппаратная независимость
- •10. Независимость от операционной системы
- •11. Независимость от сети
- •12. Независимость от типа субд
- •20.4. Проблемы распределенных систем
- •Транзакция т1х
- •20.5. Системы "клиент/сервер"
- •20.6. Независимость от субд
которыми важными аспектами проектирования (например, не допускают исполь- зования кванторов, входящих в состав большинства ограничений целостности), с которыми может справиться формальная логика. (Кванторы были изобретены Фреже в 1879 году, что позволяет утверждать, что ER-диаграммы представляют "тип логики по состоянию до 1879 года"!) Но формальная логика гораздо сложнее воспринимается при чтении. Как говорит автор, "исчисление предикатов является языком ассемблера для представления знаний". Концептуальные графы — это дос- таточно читабельные и строгие графические обозначения, представляющие всю логику в целом. Следовательно (согласно утверждениям автора), они гораздо больше подходят для семантического моделирования, чем ER-диаграммы и им по- добные модели.
13.35.Smith J.M., Smith D.C.P. Database Abstractions: Aggregation // CACM. — June,
1977. —20, №6.
См. аннотацию к [13.36]. 13.36.Smith J.M., Smith D.C.P. Database Abstractions: Aggregation and Generalization //
ACM TODS. — June, 1977. — 2, № 2.
Идеи, высказанные в [13.35], [13.36], оказали значительное влияние на формули- ровку положений RM/T-модели [13.6], особенно в области определения подти- пов и супертипов.
13.37.Storey V.C. Understanding Semantic Relationships // The VLDB Journal. — October, 1993. —2, №4.
В аннотации к настоящей статье говорится, что семантические модели данных бы- ли разработаны сообществом исследователей баз данных с использованием таких абстракций, как подтип, обобщение и ассоциация. Помимо этих хорошо известных понятий, дополнительные семантические понятия были введены исследователями в таких дисциплинах, как лингвистика, логика и когнитивная психология. В статье исследуются некоторые из этих дополнительных понятий и обсуждается их влия- ние на проектирование баз данных. 13.38.Sundgren В. The Infological Approach to Data Bases // J. W. KHmbie and K. L. KofFeman (eds.). Data Base Management. — Amsterdam, Netherlands: North-Holland; New York, N.Y.: Elsevier Science, 1974.
Информационно-логическим (infological) называется один из подходов семантиче- ского моделирования, который долгие годы успешно использовался в Скандинавии.
13.39.Tasker D. Fourth Generation Data: A Guide to Data Analysis for New and Old Systems. — Sydney, Australia: Prentice-Hall of Australia Pty., Ltd., 1989. Прекрасное практическое пособие по проектированию баз данных, в котором вни- мание уделяется, главным образом, индивидуальным элементам данных (т.е. доме- нам). Элементы данных разделены на три основных типа: именные, количествен- ные и описательные. Именные элементы определяют сущности и в реляционном смысле относятся к первичным и внешним ключам. Количественные элементы представляют собой меру или расположение согласно какой-то шкале (возможно, по шкале "дата/время") и могут подвергаться обычным арифметическим манипу- ляциям. Все остальные элементы данных относятся к описательным. (Конечно, это краткое описание не может дать полного представления обо всей классификацион- ной схеме.) В книге подробно обсуждается каждый из перечисленных типов эле-
Глава 13. Семантическое моделирование
541
ментов данных. Эти описания не всегда можно назвать "реляционно чистыми", по- скольку, например, использованное автором понятие "домена" не вполне отвечает реляционному смыслу этого термина. Однако в книге содержится достаточно ма- териала, имеющего большое практическое значение.
13.40.Teorey T.J., Fry J.P. Design of Database Structures. — Englewood Cliffs, N.J.: Prentice-Hall, 1982.
Это учебник по всем вопросам проектирования баз данных, который разделен на пять частей: введение, концептуальное проектирование, практическое проектиро- вание (т.е. преобразование концептуального проектирования в конструкции, кото- рые можно применить для конкретной СУБД), физическое проектирование и во- просы специализированного проектирования.
(Тиори Т., Фрай Дж. Проектирование структур баз данных: в 2 книгах: Пер. с англ. — М.: Мир, 1985.)
13.41. Teorey T.J., Yang D., Fry J.P. A Logical Design Methodology for Relational Databases Using the Extended Entity-Relationship Model // ACM Сотр. Surv. —June, 1986. — 18, № 2. В представленную в этой работе "расширенную ER-модель" добавлена поддержка иерархий типов сущностей, неопределенных значений (глава 18) и связей, вклю- чающих больше двух участников.
13.42.Teorey T.J. Database Modeling and Design: The Entity-Relationship Approach. — San Mateo, Calif.: Morgan Kaufmann, 1998.
Более современный учебник с описанием применения концепций ER-модели и "расширенной" ER-модели [13.41] для проектирования базы данных.
542
Часть III Проектирование базы данных
Часть IV
Управление транзакциями
Эта часть книги состоит из двух глав, которые посвящены тесно связанным темам: восстановлению и параллельности. Обе они являются аспектами более общей темы управления транзакциями, но по методическим соображениям их желательно рассматри- вать по отдельности.
Восстановление и параллельность, или, точнее, управление восстановлением и па- раллельностью, связаны с общим понятием защиты данных, т.е. предохранения дан- ных от утраты или повреждения. В частности, риск потери данных существует по сле- дующим причинам.
Система может быть повреждена во время выполнения некоторых программ, в ре- зультате чего база данных может оказаться в совершенно непредсказуемом со- стоянии.
При одновременном ("параллельном") выполнении между двумя программами возможен конфликт из-за обращения к одним и тем же данным, что приведет к получению неправильных результатов как внутри базы данных, так и вне ее.
В главе 14 рассматривается восстановление, а в главе 15 — параллельность. Замечание. Некоторые разделы этих глав уже были опубликованы в несколько другой форме в книге An Introduction to Database Systems: Volume II (Addison-Wesley, 1983).
Глава
Восстановление
14.1. Введение
Как уже говорилось во введении к настоящей части, эта и следующая главы посвящены восстановлению и параллельности. Данные понятия очень тесно связаны и составляют части более общей темы управления транзакциями. Однако в целях упрощения представления ма- териала желательно рассматривать их по отдельности (по крайней мере до тех пор, пока не будет закончено описание основных концепций). В настоящей главе основное внимание уде- ляется восстановлению, а параллельность будет рассмотрена в главе 15, хотя время от време- ни здесь неизбежно будут встречаться ссылки на вопросы, относящиеся к параллельности.
Восстановление в системе баз данных означает, в первую очередь, восстановление самой базы данных, т.е. возвращение базы данных в определенное состояние, которое считается корректным (или, точнее говоря, непротиворечивым1), если в результате како- го-либо сбоя текущее состояние стало противоречивым или по крайней мере подозри- тельным. Основной принцип, на котором строится подобное восстановление, достаточно прост и может быть выражен одним словом — избыточность. (Эта избыточность орга- низуется на физическом уровне. По причинам, указанным в части III, такую избыточ- ность не следует показывать на логическом уровне.) Иначе говоря, убедиться в том, что база данных действительно восстанавливаема, можно, получив гарантии, что любая часть содержащейся в базе данных информации может быть реконструирована из другой информации, избыточно сохраняемой где-то в системе.
Прежде чем идти дальше, необходимо уяснить, что принцип восстановления (а в дей- ствительности и обработки транзакций в целом) в значительной степени не зависит от того, какой является базовая система: реляционной или какой-либо еще. (С другой сто- роны, следует отметить, что исторически сложилось так, что большая часть теоретиче- ских исследований в области обработки транзакций была выполнена и продолжает вы- полняться именно в реляционном контексте.) Нужно также заметить, что это весьма об- ширный предмет обсуждения, и мы сможем познакомить читателя только с наиболее важными и основополагающими принципами. Для более углубленного изучения предме- та можно обратиться к источникам, указанным в списке литературы в конце данной гла- вы (в частности, обратите особое внимание на издание [14.12]).
'
Здесь термин "непротиворечивое
состояние" означает "удовлетворяются
все известные
ограничения целостности".
Обратите внимание, что непротиворечивое
состояние
не обяза-
тельно значит корректное,
тогда
как корректное состояние обязательно
должно быть непро-
тиворечивым.
Непротиворечивое состояние может, тем
не менее, быть некорректным в том
смысле,
что оно неточно отражает истинное
состояние дел в реальном мире. Значение
термина
"непротиворечивое состояние"
можно определить как "корректное в
рамках тех ограничений,
которые
установлены в рассматриваемой системе
".
транзакции). Затем в разделе 14.4 более глубоко обсуждается проблема восстановления системы (восстановление после одновременного нарушения выполнения всех текущих транзакций, вызванного неким сбоем системы). После этого в разделе 14.5 кратко рас- сматривается восстановление носителей (т.е. восстановление после какого-либо физиче- ского повреждения базы данных, например из-за поломки головок дискового накопителя). Далее в разделе 14.6 описывается исключительно важная проблема двух- фазной фиксации транзакций, а в разделе 14.7 обсуждаются относящиеся к делу опера- ции языка SQL. И наконец в разделе 14.8 приводятся краткое резюме и несколько заклю- чительных замечаний.