- •1. Введение в базы и банки данных
- •1.1. Понятие базы и банка данных
- •1.2. Компоненты банка данных
- •1.2.1. Информационная база
- •1.2.2. Лингвистические средства
- •1.2.3. Программные средства
- •1.2.4. Технические средства
- •1.4. Типология баз данных
- •1.2.5. Организационно-административные подсистемы
- •1.3. Пользователи баз данных
- •1.4.1. Типология баз данных с точки зрения информационных процессов
- •1.5. Семантика баз данных
- •1.6. Типология моделей
- •2. Базовые технологии и основные этапы развития машинной обработки данных
- •2.1. Введение в технологии машинной обработки данных и основные определения
- •2.2. Примерная схема организации файлового ввода-вывода
- •2.3. Эволюция концепций обработки данных
- •2.3.1. Простые (линейные) файлы данных (начало 60-х гг.)
- •2.3.2. Методы доступа к записям (конец 60-х гг.)
- •2.3.3. Первые системы управления базами данных (начало 70-х гг.)
- •2.3.4. Системы управления базами данных
- •2.4. Схема управления данными в субд
- •2.5. Данные и управление их обработкой
- •2.5.1. Типы, форматы, структуры данных
- •2.5.2. Описание и обработка файлов
- •2.6. Особенности и компромиссы реализаций баз данных
- •3. Модели и структуры данных
- •3.1. Многоуровневые модели предметной области
- •3.2. Идентификация объектов и записей
- •3.3. Поиск записей
- •3.4. Представление предметной области и модели данных
- •3.5. Структуры данных
- •3.5.1. Линейные структуры
- •3.5.2. Нелинейные структуры
- •3.5.3. Сетевые структуры
- •3.6. Реляционная модель данных
- •3.6.1. Основные понятия реляционной модели данных
- •3.6.2. Основы реляционной алгебры
- •4. Физические модели баз данных
- •4.1. Организация данных на машинных носителях
- •4.1.1. Типы записей
- •4.1.2. Организация файлов — способ размещения записей
- •4.1.3. Способы адресации и методы доступа к записям
- •4.1.4. Схемы организации данных на внешних носителях
- •4.2. Физическое представление иерархических структур
- •4.2.1. Физически последовательное размещение
- •4.2.2. Левосписковые структуры с переполнениями
- •4.2.3. Использование указателей на «подобные» и «порожденные»
- •4.3. Физическое представление сетевых структур
- •4.3.1. Физически последовательное размещение
- •4.3.2. Использование указателей
- •4.3.3. Физическое представление с разделением данных и связей
- •4.4. Архитектура файловой организации баз данных
- •4.4.1. Файл-ориентированная организация данных
- •4.4.2. Страничная организация данных
- •4.5. Модели распределения данных по физическим носителям
- •5. Модели и этапы проектирования баз данных
- •5.1. Модели многоуровневой архитектуры систем баз данных
- •5.2. Стадии проектирования и объекты моделирования
- •5.3. Системный анализ предметной области
- •5.4. Модели и технологии инфологического проектирования реляционных бд
- •5.4.1. Инфологическое проектирование и семантическая модель
- •5.4.2. Модель «Сущность — связь»
- •5.4.3. Er диаграмма
- •5.4.4. Нормальные формы er-диаграмм
- •5.5. Даталогические модели
- •5.5.1. Получение реляционной схемы из er диаграммы
- •5.6. Физические модели
- •6. Проектирование реляционной базы данных
- •6.1. Универсальное отношение
- •6.2. Функциональная и многозначная зависимости
- •6.3. Нормальные формы
- •6.4. Процедура нормализации
- •6.5. Пример проектирования реляционной бд
- •6.5.1. Построение еr-диаграммы
- •6.5.2. Построение реляционной схемы
- •6.5.3. Нормализация таблиц
- •7. Транзакции и целостность бд
- •7.1. Модели транзакций
- •7.2. Журнал транзакций
- •7.3. Параллельное выполнение транзакций
- •7.3.1. Пропавшие обновления
- •7.3.2. Чтение «грязных» данных
- •7.3.3. Чтение несогласованных данных
- •7.3.4. Строки-призраки
- •7.4. Сериализация транзакций
- •7.5. Захват и освобождение объекта
7.5. Захват и освобождение объекта
Для обеспечения сериализации транзакций применяются методы «захвата» и «освобождения» объектов, производимого по инициативе транзакции: транзакция «захватывает» объект, что приводит к его блокировке для других транзакций, и освобождает его только при своем завершении. При этом захваты объектов несколькими транзакциями на чтение совместимы (т. е. нескольким транзакциям разрешается читать один и тот же объект), захват объекта одной транзакцией на чтение не совместим с захватом другой транзакцией того же объекта на запись, и захваты одного объекта разными транзакциями на запись не совместимы. Тем самым, выделяются два основных режима захватов:
совместный режим — S (Shared), означающий разделяемый захват объекта и необходимый для выполнения операции чтения объекта;
монопольный режим — X (exclusive), означающий монопольный захват объекта и необходимый для выполнения операций записи, удаления и модификации.
Наиболее распространенным в СУБД, основанных на архитектуре «клиент — сервер», является подход, реализующий соблюдение двухфазного протокола захватов объектов БД. В общих чертах протокол состоит в том, что перед выполнением любой операции над объектом базы данных от имени транзакции запрашивается захват объекта в соответствующем режиме (в зависимости от вида операции — совместном или монопольном). В соответствии с этим протоколом выполнение транзакции разбивается на две фазы: первая фаза транзакции – накопление захватов; вторая фаза (фиксация или откат) — освобождение захватов.
При соблюдении двухфазного протокола основная проблема состоит в том, что следует считать объектом для захвата?
В контексте реляционных баз данных возможны следующие варианты:
файл - физический (с точки зрения базы данных) объект, область хранения нескольких отношений и, возможно, индексов;
таблица логический объект, соответствующий множеству записей данного отношения;
страница данных — физический объект, хранящий записи одного или нескольких отношений, индексную или служебную информацию;
• запись — элементарный физический объект базы данных. Очевидно, что чем крупнее объект захвата, тем меньше захватов будет поддерживаться в системе, и на это, соответственно, будут тратиться меньшие накладные расходы. Более того, если выбрать в качестве уровня объектов для захватов файл или отношение, то будет решена даже проблема строк-призраков. Однако при использовании для захватов крупных объектов возрастает вероятность конфликтов транзакций и тем самым уменьшается допускаемая степень их параллельного выполнения. Фактически, при укрупнении объекта синхронизационного захвата мы умышленно огрубляем ситуацию и видим конфликты в тех ситуациях, когда на самом деле конфликтов нет.
Таким образом, можно резюмировать, что транзакция — это законченный блок обращений к базе данных и некоторых действий над ней, для которого гарантируется выполнение четырех условий, так называемых свойств ACID (Atomicity, Consistency, Isolation, Durability):
атомарность — операции транзакции образуют неразделимый атомарный блок с определенным началом и концом. Этот блок либо выполняется от начала до конца, либо не выполняется вообще. Если в процессе выполнения транзакции произошел сбой, происходит откат к исходному состоянию;
согласованность — по завершении транзакции все задействованные объекты находятся в согласованном состоянии;
изолированность — одновременный доступ транзакций различных приложений к разделяемым объектам координируется таким образом, чтобы эти транзакции не влияли друг на друга;
долговременность — все изменения данных, осуществленные в процессе выполнения транзакции, не могут быть потеряны
1 Следует отметить, что термин «банк данных» используется сравнительно редко, а некоторыми авторами признается даже архаичным. В современной, в основном переводной литературе, понятию «банк данных» соответствует понятие системы баз данных, хотя, по нашему мнению, «банк данных» вполне адекватное и более широкое понятие.
2 Отсюда следует, что одна и та же БД может описываться по-разному на ЯОД различных СУБД
3 Здесь следует упомянуть достаточно интенсивно развивавшееся в 80—90-е гг. направление создания машин баз данных — аппаратной реализации «нечисловой» обработки, в том числе параллельной и конвейерной обработки, ассоциативных процессоров и памяти.
Сегодня для реализации промышленных БД используются специализированные серверы баз данных — машины с повышенной отказоустойчивостью, высокопроизводительными подсистемами ввода-вывода и развитой периферией.
4 В последнем случае правильнее говорить об интегрированных информационных системах, объединяющих в общей среде разнородные данные, хранимые возможно в разнотипных базах, но используемых для решения одной прикладной задачи.
5 Модель лишь в том смысле, что она — представление, описание на уровне данных только некоторых аспектов, и только некоторой части реального мира, и поэтому не может быть тождественна реальным объектам. Но в то же время БД и сама является частью реального мира.
6 Соотношение понятий «величина» и «значение» аналогично соотношению понятий «данные» и «информация». Информация — это значимые для приемника данные, например изменяющие его внутреннее состояние.
7 И следует отметить, что такая форма в наибольшей степени соответствует машинным формам представления информации.
8 Это соответствует третьему из вышеперечисленных случаев. Два первых мы не рассматриваем, так как в этих случаях используются специализированные системы.
9 Для реляционной СУБД MS SQL Server 2000 реализован импорт/экспорт документов, представленных в XML-формате, в том числе с использованием схем сопоставления, определяющих отношение элементов XDR-схем к таблицам, а атрибутов — к столбцам.
10Требование операционной простоты определяется производственными и экономическими причинами: устройство должно быть надежным в использовании и дешевым в изготовлении (т. е. содержать минимум механических компонент и сложной логики).
Функциональная ограниченность управления данными, кроме того, диктуется еще и требованием унифицированности: устройство должно одинаково эффективно и стандартным способом использоваться в составе различных вычислительных и операционных систем, даже если со временем отдельные компоненты систем будут принципиально меняться.
11 В целях общности в этом примере не рассматриваются подготовительные операции, такие как открытие файла и выделение памяти для рабочих и системных буферов, хотя они также достаточно ресурсоемки.
12 Если контроллер не успевает завершить обработку передачи и подготовиться к передаче данных, размещаемых на физически следующем секторе, то придется ожидать завершения полного оборота диска. С целью исключения таких потерь диск форматируется так, что логически последовательные секторы разделены одним или несколькими физическими секторами (коэффициент чередования), тогда контроллер будет готов выполнить операцию со следующим логическим сектором, не ожидая дополнительного оборота.
13 Такой подход форматирования (разметки) пространства внешней памяти используется и в случае таких устройств «истинно» последовательного доступа, как магнитные ленты, для обеспечения ускоренного «прямого» доступа к сектору по его номеру — прямому адресу (еще с тех времен, когда не были созданы дисковые накопители, например, ЭВМ второго поколения Минск-22). При этом, поскольку данные секторов, предшествующих нужному, передавать не надо, позиционирование будет выполняться с максимальной скоростью перемещения ленты в режиме «перемотки»
14 Автоматическое использование системы кэширования и упреждающего чтения (не учитывающее особенности порядка обращения к данным, обусловленного алгоритмом обработки) может привести к обратному результату, например, в случае обращения к логическим записям в произвольной последовательности (случайной), не соответствующей физическому следованию записей.
15 Сюда относятся не только определения данных в пиле описаний типов, схем баз данных, разделов деклараций, но и упомянутые ранее описания физической и логической структур носителя, параметры подсистемы ввода-вывода и т. д.
16 В общем случае объект может описываться совокупностью записей, относящихся к его составным частям или отражающих динамику изменения состояния.
17 Следует отметить некоторые семантические проблемы идентификации через значение атрибута. Значение атрибута идентифицирует запись о состоянии объекта, и в случае изменения значения, например, табельного номера служащего, будет невозможно ответить на вопрос: идет ли речь о том же служащем, или о новом.
18 Здесь не рассматриваются простейшие типы, к которым относятся стандартные типы — целые и вещественные числа, логические переменные, символы. Их состав и структура определяется в основном набором встроенных базовых типов данных и операций, свойственных конкретному типу ЭВМ.
19 Память, отводимая для хранения значения элемента данных (поле данных),должна выбираться в соответствии с диапазоном значений, которые может иметь этот элемент. Для выполнения операции присвоения значения элементу данных (установление соответствующих битов в «0» или «1») необходимо сначала выделить память, для чего используются две схемы – статическая и динамическая. Для первой характерно выделение памяти до того, как реально появляются значения (обычно на этапе трансляции программы); для второй — в тот момент, когда программа во время исполнения получает конкретное значение. Кроме того, характер данных (тип данных) определяет способ представления и, соответственно, некоторое множество стандартных операций (примитивов).
20 Не рассматриваемые здесь очереди и стеки отличаются тем, что для них устанавливаются особые схемы добавления (размещения в памяти) новых элементов и их выборки. Для очереди порядок размещения/выборки определяется правилом «первым размещен — первым выбран», для стека — «первым размещен — последним выбран». Кроме того, выборка элемента влечет его удаление из последовательности.
21 В математических дисциплинах понятию «таблица» соответствует понятие «отношение» (relation). Отсюда и произошло название модели – реляционная. То есть, применительно к базам данных понятия «реляционная БД» и «табличная БД» по существу являются синонимами.
22 Недопустимо, чтобы в ячейке таблицы содержались более одной порции информации, что иногда происходит при создании композиционных данных (информационное кодирование). Примером служит идентификационный номер автомобиля. Если записать его в одну ячейку, то будет нарушен принцип неделимости информации, поскольку в ячейке окажутся разделяемые данные, имеющие разную информационную сущность, такие как наименование модели, номер кузова, двигателя, сведения о предприятии-изготовителе и т. д.
23 В некоторых операционных системах, например IBM, файл на внешних носителях называют набором данных в отличие от логического файла.
24 В современных файловых системах практически не используется.
25 В поток-ориентированных файловых системах этому соответствует организация текстовых файлов, где запись — это последовательность символов, образующих строку, которая завершается специальными кодами «CR» «LF».
26 Блокирование записей переменной и неопределенной длины в этом случае будет практически невозможно.
27 Именно такой подход обеспечил возможность реализации надежных достаточно эффективных СУБД, функционирующих по современным меркам в крайне скромных рамках наличных вычислительных ресурсов.
28 Например, MS ACCESS.
29 Для СУБД важно знать, что этот объект надо хрипим, целиком и что размеры этих объектов от записи к записи могут меняться. В общем случае размер не ограничен.
30 Транзакция — неделимая последовательность операторов манипулирования данными.
31 Применяемые формальные языки представления предметной области не позволяют описывать все отношения, которые проектировщик считает важными. С другой стороны, многие проекты (и, в частности, рассматриваемые примеры) воспринимаются как достаточно простые, а проектные решения кажутся очевидными. Кроме того, опытный программист всегда может предложить некоторый эмпирический и, возможно, действительно эффективный способ для целевого представления и обработки нужной информации. Однако это означает отказ от единого формализма, что при увеличении количества данных и связей значительно усложняет проблемы управления базой и, в частности, понимание пользователем организации и методов доступа.
32 Такие описания реализуются, например, в виде схем.
33 Правильнее было бы говорить о неформализованности, связанной с невозможностью обоснованного однозначного выбора (из реально существующих) как множества объектов, так и средств, используемых для моделирования (описания выделенных объектов).
34 Здесь не рассматриваются работы, относящиеся к другим этапам жизненного цикла баз данных, такие, как определение процедур заполнения и сопровождения БД, разработка конкретных программ обработки данных, развитие и улучшение структуры БД и т. д.
35 Еще раз отметим, что они, в отличие от моделей данных, используемых в качестве инструмента моделирования конкретных баз данных, не обязательно поддерживаются механизмами используемой СУБД, хотя это и может иметь место на практике.
36 Существует много версий ER-диаграмм, которые по-разному представляют связи, сущности и атрибуты, и которые имеют различные ограничения и условия применимости. Приведенный здесь пример не является полным и не претендует на точное соответствие какой-либо версии построения ER-диаграмм или CASE-продукту.
37 Такое определение связи, как сущности особого рода, отражает существо реляционного подхода, для которого характерно единообразное представление сущностей всех типов, включая связи посредством переменных-отношений.
38 В большинстве CASE-систем принята упрощенная форма: эта ассоциация всегда должна быть бинарной и может существовать между двумя разными сущностями или между сущностью и ею же самой (рекурсивная связь).
39 Согласно положениям реляционной модели, «правильной» связью является только связь типа «многие ко многим», поскольку для ее реализации создается отдельная переменная-отношение. Связи «один к одному», «один ко многим» всегда могут быть представлены с помощью механизма внешнего ключа одной из переменных-отношения.
40 В большинстве CASE-систем имени свойств вносятся и прямоугольник, изображающий сущность, под именем сущности и изображаются малыми буками, возможно, с примерами.
41 В большинстве CASE-систем связь всегда должна быть бинарной или рекурсивной, и этом случае в ER-диаграмме связь представляется в виде линии, связывающей две сущности или ведущей от сущности к ней же самой. В любой связи выделяются два конца (в соответствии с существующей парой связываемых сущностей), на каждом из которых указывается имя конца связи, степень конца связи (сколько экземпляров данной сущности связывается), обязательность связи (т.е. любой ли экземпляр данной сущности должен участвовать в данной связи). При этом в месте «стыковки» связи с сущностью используются трехточечный вход в прямоугольник сущности, если для этой сущности в связи могут использоваться много экземпляров сущности, и одноточечный вход, если в связи может участвовать только один экземпляр сущности. Обязательный конец связи изображается сплошной линией, а необязательный — прерывистой линией.
