|
|
Предметом курса являются системы управления базами данных
(СУБД). Это очень важная тема, без основательного знакомства с которой в наше
время невозможно быть не только квалифицированным программистом, но даже и грамотным
пользователем компьютеров. Основное назначение данного курса - систематическое
введение в идеи и методы, используемые в современных реляционных системах управления
базами данных. В курсе не рассматривается какая-либо одна популярная СУБД; излагаемый
материал в равной степени относится к любой современной системе. Как показывает
опыт, без знания основ баз данных трудно на серьезном уровне работать с конкретными
системами, как бы хорошо они не были документированы. В вводной части курса
рассматриваются основные различия между файловыми системами и системами управления
базами данных. На основе анализа возможностей современных файловых систем выделяются
области приложений, в которых достаточно использовать файлы, а также те, для которых
необходимы базы данных. В этой же части курса обсуждаются базовые функции и приводится
типовая организация СУБД. В заключении вводной части кратко рассматриваются основные
характеристики ранних, дореляционных систем. Вторая часть курса содержит необходимый
теоретический базис, на котором основывается дальнейшее изложение. Вводятся основные
понятия реляционной модели данных, обсуждаются основные свойства отношений, рассматриваются
два базовых механизма манипулирования данными: реляционная алгебра и реляционное
исчисление. Далее излагаются принципы нормализации, на которых основан классический
подход к проектированию реляционных баз данных. Наконец, описывается более современный
подход к проектированию баз данных, основанный на использовании семантических
моделей данных. В третьей части курса обсуждаются два классических примера
экспериментальных проектов реляционных СУБД, которые, фактически, служат основой
всех современных коммерческих СУБД. Рассматриваются проекты System R и Ingres.
Идея состоит в том, чтобы продемонстрировать сбалансированные наборы решений,
примененных в этих двух существенно различающихся системах. Четвертая часть
курса посвящается внутренней организации современных многопользовательских реляционных
СУБД. Рассматриваются методы организации внешней памяти баз данных и применяемые
структуры данных. Вводится понятие транзакции и анализируются известные способы
управления асинхронно выполняемыми транзакциями. Обсуждаются потребности в журнализации
изменений баз данных и связь алгоритмов журнализации с политикой управления буферами
оперативной памяти. Наконец, рассматриваются способы применения журнальной и архивной
информации для восстановления баз данных после различных сбоев. Периодическая
система элементов
Менделеева Принцип Паули, лежащий в основе систематики заполнения электронных
состояний в атомах, позволяет объяснить Периодическую систему элементов Д. И.
Менделеева (1869) — фундаментального закона природы, являющегося основой современной
химии, атомной и ядерной физики. Рентгеновские
спектры Большую роль в выяснении строения атома, а именно распределения электронов
по оболочкам, сыграло излучение, открытое в 1895 г. немецким физиком В. Рентгеном
(1845—1923) и названное рентгеновским. Молекулы: химические
связи, понятие об энергетических уровнях Молекула — наименьшая частица вещества,
состоящая из одинаковых или различных атомов, соединенных между собой химическими
связями, и являющаяся носителем его основных химических и физических свойств.
Химические связи обусловлены взаимодействием внешних, валентных электронов атомов.
В пятой части курса подробно рассматривается язык реляционных баз данных
SQL. Исходные понятия SQL обсуждаются на основе версии языка, разработанной в
рамках проекта System R. Затем кратко описывается история SQL после System R и,
в частности, международная деятельность по его стандартизации. После этого систематически
излагается наиболее распространенный стандарт языка - SQL-89. Обсуждаются способы
использования SQL при программировании прикладных систем. Пятая часть курса завершается
рассмотрением наиболее важных свойств, появившихся в последнем стандарте языка
SQL-92. Шестая часть курса посвящена проблемам, которые решаются в компиляторах
языка SQL. Эти проблемы концентрируются вокруг необходимости получения эффективных
программ, выполняющих операторы, которые изначально формулируются на декларативном
языке SQL. Для решения проблем в компиляторах SQL приходится применять разнообразные
оптимизирующие приемы, знание которых помогает понять работу любой конкретной
системы. В седьмой части курса рассматривается применение архитектуры "клиент-сервер"
в современных СУБД. Рассматриваются принципы взаимодействия между клиентскими
и серверными частями системы, и, в частности, важность применения протоколов удаленного
вызова процедур для обеспечения организации неоднородных организаций "клиент-сервер".
Обсуждаются типичное разделение функций между клиентами и серверами и следующие
из этого требования к аппаратным возможностям. В восьмой части рассматриваются
специфические проблемы распределенных баз данных. Анализируются категории распределенных
систем, вопросы именования, администрирования, поддержания надежности и доступности
данных, особенности управления транзакциями и компиляции запросов. Наконец,
завершающая курс девятая часть посвящена направлениям и состоянию исследовательских
работ в области баз данных. Рассматриваются проекты и исследования, относящиеся
к так называемым системам баз данных следующего поколения; основные принципы организации
систем объектно-ориентированных баз данных; системы баз данных, основанные на
правилах, включая активные и дедуктивные базы данных. Содержание
- Введение
- Лекция
1. Базы данных и файловые системы На первой лекции мы рассмотрим общий смысл
понятий БД и СУБД. Начнем с того, что с самого начала развития вычислительной
техники образовались два основных направления ее использования. Первое направление
- применение вычислительной техники для выполнения численных расчетов, которые
слишком долго или вообще невозможно производить вручную. Становление этого направления
способствовало интенсификации методов численного решения сложных математических
задач, развитию класса языков программирования, ориентированных на удобную запись
численных алгоритмов, становлению обратной связи с разработчиками новых архитектур
ЭВМ.
- Лекция 2. Функции СУБД. Типовая организация
СУБД. Примеры Как было показано в первой лекции, традиционных возможностей
файловых систем оказывается недостаточно для построения даже простых информационных
систем. Мы выявили несколько потребностей, которые не покрываются возможностями
систем управления файлами: поддержание логически согласованного набора файлов;
обеспечение языка манипулирования данными; восстановление информации после разного
рода сбоев; реально параллельная работа нескольких пользователей.
- Лекция 3 . Ранние
подходы к организации БД. Системы, основанные на инвертированных списках, иерархические
и сетевые СУБД. Примеры. Сильные места и недостатки ранних систем Прежде, чем
перейти к детальному и последовательному изучению реляционных систем БД, остановимся
коротко на ранних (дореляционных) СУБД. В этом есть смысл по трем причинам: во-первых,
эти системы исторически предшествовали реляционным, и для правильного понимания
причин повсеместного перехода к реляционным системам нужно знать хотя бы что-нибудь
про их предшественников; во-вторых, внутренняя организация реляционных систем
во многом основана на использовании методов ранних систем; в-третьих, некоторое
знание в области ранних систем будет полезно для понимания путей развития постреляционных
СУБД.
- Теоретические
основы
Мы приступаем к изучению реляционных баз данных и систем управления
реляционными базами данных. Этот подход является наиболее распространенным в настоящее
время, хотя наряду с общепризнанными достоинствами обладает и рядом недостатков.
К числу достоинств реляционного подхода можно отнести: - наличие
небольшого набора абстракций, которые позволяют сравнительно просто моделировать
большую часть распространенных предметных областей и допускают точные формальные
определения, оставаясь интуитивно понятными;
- наличие простого и в то же время
мощного математического аппарата, опирающегося главным образом на теорию множеств
и математическую логику и обеспечивающего теоретический базис реляционного подхода
к организации баз данных;
- возможность ненавигационного манипулирования данными
без необходимости знания конкретной физической организации баз данных во внешней
памяти.
- Лекция 4.
Общие понятия реляционного подхода к организации БД. Основные концепции и термины
- Лекция 5.
Базисные средства манипулирования реляционными данными
В предыдущей лекции
мы говорили про три составляющих реляционной модели данных. Две из них - структурную
и целостную составляющие - мы рассмотрели более или менее подробно, а манипуляционной
части реляционной модели данных посвящается эта лекция. Как мы отмечали в
предыдущей лекции, в манипуляционной составляющей определяются два базовых механизма
манипулирования реляционными данными - основанная на теории множеств реляционная
алгебра и базирующееся на математической логике (точнее, на исчислении предикатов
первого порядка) реляционное исчисление. В свою очередь, обычно рассматриваются
два вида реляционного исчисления - исчисление доменов и исчисление предикатов.
- Лекция
6. Проектирование реляционных БД
При проектировании базы данных решаются
две основных проблемы: - Каким образом отобразить объекты предметной
области в абстрактные объекты модели данных, чтобы это отображение не противоречило
семантике предметной области и было по возможности лучшим (эффективным, удобным
и т.д.)? Часто эту проблему называют проблемой логического проектирования баз
данных.
- Как обеспечить эффективность выполнения запросов к базе данных, т.е.
каким образом, имея в виду особенности конкретной СУБД, расположить данные во
внешней памяти, создание каких дополнительных структур (например, индексов) потребовать
и т.д.? Эту проблему называют проблемой физического проектирования баз данных.
- Две
классические экспериментальные системы
- Лекция
7. System R: общая организация системы, основы языка SQL
Система управления
реляционными базами данных System R разрабатывалась в исследовательской лаборатории
фирмы IBM в 1975-1979 г.г. Эта работа оказала революционизирующее влияние на развитие
теории и практики реляционных систем во всем мире. Именно System R практически
доказала жизнеспособность реляционного подхода к управлению базами данных.
После успешного завершения работ по созданию этой системы и получения экспериментальных
результатов ее использования был разработан целый ряд коммерчески доступных реляционных
систем, в том числе и на основе непосредственного развития System R (возможности
одной из коммерчески доступных реляционных систем - DB2 - описываются в переведенной
на русский язык книге К. Дейта "Руководство по реляционной СУБД DB2). Исключительно
важен опыт, приобретенный при разработке этой системы. Практически во всех более
поздних реляционных СУБД в той или иной степени используются методы, примененные
в System R. - Лекция 8 . Ingres: общая
организация системы, основы языка Quel
По своей значимости для развития и распространения
реляционного подхода к управлению базами данных СУБД Ingres (Interactive Graphics
and Retrieval System) находится близко к System R, хотя история и организация
этой системы во многом отличается от System R. Для начала коротко рассмотрим историю
Ingres. Проект и экспериментальный вариант СУБД Ingres были разработаны в
университете Беркли под руководством одного из наиболее известных в мире ученых
и специалистов в области баз данных Майкла Стоунбрейкера (Michael Stonebraker).
С самого начала СУБД Ingres разрабатывалась как мобильная система, функционирующая
в среде ОС UNIX. Первая версия Ingres была рассчитана на 16-разрядные компьютеры
и работала главным образом на машинах серии PDP. Это была первая СУБД, распространяемая
бесплатно для использования в университетах. Впоследствии группа Стоунбрейкера
перенесла Ingres в среду ОС UNIX BSD, которая также была разработана в университете
Беркли. Семейство СУБД Ingres из университета Беркли принято называть "университетской
Ingres". - Внутренняя организация реляционных
СУБД
- Язык реляционных баз
данных SQL Язык для взаимодействия с БД SQL появился в середине 70-х и был
разработан в рамках проекта экспериментальной реляционной СУБД System R. Исходное
название языка SEQUEL (Structered English Query Language) только частично отражает
суть этого языка. Конечно, язык был ориентирован главным образом на удобную и
понятную пользователям формулировку запросов к реляционной БД, но на самом деле
уже являлся полным языком БД, содержащим помимо операторов формулирования запросов
и манипулирования БД средства определения и манипулирования схемой БД; определения
ограничений целостности и триггеров; представлений БД; возможности определения
структур физического уровня, поддерживающих эффективное выполнение запросов; авторизации
доступа к отношениям и их полям; точек сохранения транзакции и откатов. В языке
отсутствовали средства синхронизации доступа к объектам БД со стороны параллельно
выполняемых транзакций: с самого начала предполагалось, что необходимую синхронизацию
неявно выполняет СУБД.
- Лекция
13. Язык SQL. Функции и основные возможности
- 13.1.
SEQUEL/SQL СУБД System R
- 13.2. Язык SQL в коммерческих
реализациях
- 13.3. Стандартизация SQL
Понятно, что в качестве стандарта нельзя было использовать SQL System R. Во-первых,
этот вариант языка не был должным образом технически проработан. Во-вторых, его
слишком сложно было бы реализовать (кто знает, как бы сложилась дальнейшая история
SQL, если бы были полностью реализованы все идеи System R). С другой стороны,
первые коммерческие реализации языка настолько различались, что ни один из реализованных
диалектов не имел шансов быть принятым в качестве стандарта.
- Лекция
14 . Стандартный язык баз данных SQL
- Лекция
15. Язык SQL. Средства манипулирования данными Язык допускает три типа синтаксических
конструкций, начинающихся с ключевого слова SELECT: спецификация курсора (cursor
specification), оператор выборки (select statement) и подзапрос (subquery). Основой
всех них является синтаксическая конструкция "табличное выражение (table
expression)". Семантика табличного выражения состоит в том, что на основе
последовательного применения разделов from, where, group by и having из заданных
в разделе from таблиц строится некоторая новая результирующая таблица, порядок
следования строк которой не определен и среди строк которой могут находиться дубликаты
(т.е. в общем случае таблица-результат табличного выражения является мультимножеством
строк). На самом деле именно структура табличного выражения наибольшим образом
характеризует структуру запросов языка SQL/89. Мы рассмотрим ниже структуру и
смысл разделов табличного выражения ниже, но до этого немного подробнее обсудим
три упомянутые конструкции, включающие табличные выражения.
- Лекция 16.
Использование SQL при прикладном программировании В стандарте SQL/89 определены
два способа взаимодействия с БД из прикладной программы, написанной на традиционном
языке программирования (как мы уже упоминали, SQL/89 ориентирован на использование
совместно с языками Кобол, Фортран, Паскаль и ПЛ/1, но в реализациях обычно поддерживается
и язык Си). Первый способ состоит в том, что все операторы SQL, с которыми может
работать данная прикладная программа, собраны в один модуль и оформлены как процедуры
этого модуля. Для этого SQL/89 содержит специальный подъязык - язык модулей. При
использовании такого способа взаимодействия с БД прикладная программа содержит
вызовы процедур модуля SQL с передачей им фактических параметров и получением
ответных параметров.
- Лекция
17. Некоторые черты SQL/92 и SQL-3 Мы не будем даже поверхностно описывать
новые возможности языка SQL в стандарте SQL/92. Это сейчас не очень осмысленно,
поскольку единственной доступной реализацией SQL/92 является дорогостоящая версия
Oracle V.7. Однако кажется полезным включить в наше руководство сводку операторов
динамического SQL с небольшими комментариями, поскольку в SQL/92 предпринята первая
попытка стандартизовать эту часть языка SQL, и это описание можно использовать
хотя бы в качестве эталона при сравнении различных реализаций.
- Компиляторы
языка SQL
-
СУБД в архитектуре "клиент-сервер"
- Распределенные базы
данных
- Современные
направления исследований и разработок
Заполните заявку и в кратчайшие сроки квалифицированные
специалисты выполнят ВАШ заказ за приемлемую цену Диплом, курсовая,
реферат диссертация, билеты к экзаменам, контрольная на заказ
|