- •Понятия «данные», «информация», «база данных», «субд», «банк данных». Классификация субд
- •Функции субд.
- •Архитектура субд: централизованная архитектура, архитектура «файл-сервер»
- •Архитектура субд: архитектура «клиент-сервер», трехзвенная архитектура
- •Уровни представления баз данных
- •Модели данных субд: иерархическая модель
- •Модели данных субд: сетевая модель
- •Модели данных субд: реляционная модель
- •Реляционная модель данных
- •Модели данных субд: постреляционная модель
- •Модели данных. Инфологические модели: семантическая сеть, графовые модели, модель «сущность-связь».
- •«Сущность-связь»
- •Инфологическая модель «Сущность-связь»: сущность, связь, типы связей, атрибут, уникальный идентификатор, полная и неполная идентификация, возможный ключ сущности.
- •Методология проектирования idef1x: зависимые и независимые сущности, степень связи, типы связи, внешние ключи, правила построения диаграмм
- •Реляционная модель данных: классы отношений, типы связей между отношениями
- •Манипулирование реляционными данными: базовые теоретико-множественные операции реляционной алгебры (объединение, разность, пересечение, произведение).
- •Манипулирование реляционными данными: специальные операции реляционной алгебры (селекция, проекция, соединение, деление)
- •Реляционная модель данных: аномалии обновления, нормализация, первая нормальная форма
- •Реляционная модель данных: функциональные зависимости, вторая нормальная форма
- •Реляционная модель данных: третья нормальная форма, алгоритм нормализации
- •Реляционная модель данных: сравнение нормализованных и ненормализованных моделей
- •Целостность реляционных данных: Null-значения, потенциальные ключи, простой ключ, составной ключ, первичный ключ, альтернативный ключ
- •Целостность реляционных данных: целостность сущностей, внешний ключ, целостность внешних ключей
- •Целостность реляционных данных: операции, которые могут нарушить ссылочную целостность
- •Целостность реляционных данных: стратегии поддержания ссылочной целостности.
- •Основы языка sql: синтаксис операторов определения объектов базы данных (create table, alter table, drop table) create table - создать таблицу
- •Определение первичных и альтернативных ключей с помощью оператора alter
- •Операторы drop
- •Основы языка sql: синтаксис операторов манипулирования данными (select, order by, встроенные функции, group by)
- •Сортировка результатов
- •Встроенные функции sql
- •Основы языка sql: чтение данных из нескольких таблиц с применением вложенных запросов
- •Основы языка sql: чтение данных из нескольких таблиц с помощью операции соединения
- •Основы языка sql: средства модификации данных языка sql
- •Представления. Применение представлений. Обновление представлений.
- •Обновление представлений
- •Триггеры. Типы триггеров. Применение.
- •Применения триггеров
- •Хранимые процедуры. Преимущества использования хранимых процедур
- •Преимущества хранимых процедур
- •Большая безопасность и меньший сетевой трафик.
- •Sql можно оптимизировать
- •Совместное использование кода:
- •Физическая организация бд: структура памяти эвм, представление экземпляра логической записи в памяти эвм
- •Структура памяти эвм
- •Представление экземпляра логической записи
- •Физическая организация бд: организация обмена между оперативной и внешней памятью
- •Физическая организация бд: размещение физических записей в виде списковой структуры (реализация операций поиска, чтения, редактирования, удаления и добавления логических записей)
- •Физическая организация бд: использование индексов (реализация операций поиска, чтения, редактирования, удаления и добавления логических записей)
- •Физическая организация бд: использование сбалансированного дерева (реализация операций поиска, чтения, редактирования, удаления и добавления логических записей)
- •Физическая организация бд: использование хеширования (реализация операций поиска, чтения, редактирования, удаления и добавления логических записей)
- •Параллельная обработка данных: необходимость в атомарных транзакциях
- •Параллельная обработка данных: проблема потерянного обновления, проблема несогласованного чтения
- •Блокировка ресурсов. Неявные и явные блокировки. Глубина детализации блокировки. Монопольная и коллективная блокировки
- •Блокировка ресурсов: сериализуемые транзакции
- •Блокировка ресурсов: взаимная блокировка
- •Блокировка ресурсов: оптимистическая и пессимистическая блокировки
- •Блокировка ресурсов: объявление характеристик блокировки
- •Свойства транзакций: атомарность, долговечность, согласованность
- •Свойства транзакций: изолированность транзакции, уровни изоляции
- •Курсор. Типы курсоров
- •Управление параллельной обработкой в ms sql Server
- •Xml как язык разметки. Общие черты и различия html и xml. Разделение между структурой документа, его содержимым и материализацией
- •Описание содержимого xml-документа с помощью dtd.
- •Описание содержимого xml-документа с помощью xml-схемы.
- •Материализация хмl-документов с помощью xslt.
- •Плоские и структурированные xml-схемы. Глобальные элементы
- •Создание хмl-документов на основе информации из базы данных
- •Select...For xml для нескольких таблиц
- •Понятие и архитектура системы поддержки принятия решений
- •Понятие хранилища данных
- •Физические и виртуальные хранилища данных
- •Проблематика построения хранилищ данных
- •Витрины данных
- •Понятие olap. Категории данных в хд. Информационные потоки в хд
- •Категории данных в хд
- •Информационные потоки в хд
- •Структура olap-куба. Иерархия измерений olap-кубов
- •Иерархия измерений olap-кубов
- •Операции, выполняемые над гиперкубом
- •Архитектура olap-систем
- •Слой извлечения, преобразования и загрузки данных
- •Слой хранения данных
- •Слой анализа данных
- •Клиентские и серверные olap-средства
- •Клиентские olap-средства
- •Серверные olap-средства
- •Технические аспекты многомерного хранения данных: molap, holap
- •Технические аспекты многомерного хранения данных: rolap, схема «звезда», схема «снежинка»
- •Основные характеристики системы Notes. Инфраструктура Lotus Domino. Типы клиентов. Основные характеристики системы No
- •Основные характеристики системы Notes [1]:
- •Инфраструктура Lotus Domino
- •Клиенты
- •Структура баз данных Lotus Domino. Типы документов Структура баз данных Lotus Domino
- •Типы документов
- •Механизм репликации в Lotus Domino.
- •Что происходит во время репликации
- •Некоторые соображения по поводу репликации
-
Параллельная обработка данных: необходимость в атомарных транзакциях
В большинстве приложений баз данных работа пользователей организована в форме транзакций (transactions), известных также как логические единицы работы (logical units of work, LUW). Транзакция - это последовательность действий с базой данных, в которой либо все действия выполняются успешно, либо не выполняется ни одно из них (в последнем случае база данных остается без изменений). Такая транзакция иногда называется атомарной (atomic), поскольку она выполняется как единое целое.
Рассмотрим следующую последовательность действий с базой данных, которые могут потребоваться при регистрации нового заказа.
-
Изменить запись данного покупателя, увеличив сумму к оплате.
-
Изменить запись продавца, увеличив сумму комиссионных.
-
Вставить в базу данных запись о новом заказе.
Предположим, что на последнем шаге нас постигла неудача – например, из-за недостатка файлового пространства. Представьте себе недоразумение, которое возникло бы, если бы выполнены были только первые два действия, но не третье. Покупателю был бы выставлен счет за заказ, который он не получал, а продавец получил бы комиссионные за товар, который он не отправлял покупателю. Ясно, что эти три действия должны выполняться как единое целое: либо все сразу, либо ни одного.
На рис. 1 и 2 приведено сравнение результатов этих действий в виде последовательности независимых шагов (рис. 1) и в виде атомарной транзакции (рис. 2). Обратите внимание, что когда терпит неудачу одно из действий, составляющих атомарную транзакцию, то изменения в базе данных не производятся. Также обратите внимание, что для указания рамок транзакции прикладная программа должна дать команды на начало транзакции (Start Transaction), сохранение транзакции (Commit Transaction) и откат транзакции (Rollback Transaction). Конкретная форма этих команд различается в разных СУБД.
-
Параллельная обработка данных: проблема потерянного обновления, проблема несогласованного чтения
Параллельная обработка, изображенная на рис. 3, не вызывает проблем, поскольку пользователи обрабатывают различные данные. Но предположим, что оба пользователя хотят обратиться к элементу 100. Например, пользователь А хочет заказать пять единиц товара 100, а пользователь В — три единицы этого же товара.
Рисунок 4 иллюстрирует возникающую проблему. Пользователь А считывает запись о товаре 100 в свою рабочую область. В соответствии с этой записью, в наличии имеется 10 единиц товара. Затем пользователь В читает запись о товаре 100 в свою рабочую область. Опять-таки, согласно этой записи, в наличии имеется 10 единиц товара. Теперь пользователь А берет пять единиц товара, уменьшает количество единиц товара в своей рабочей области до пяти и обновляет запись для товара 100. После этого пользователь В берет три единицы товара, уменьшает количество товара в своей рабочей области до семи единиц и записывает это количество в базу данных. Теперь база данных ошибочно показывает, что в наличии имеется семь единиц товара 100. Итак: мы начали с 10 единиц в наличии, пользователь А взял пять, пользователь В взял три, а база данных показывает, что осталось семь. Ясно, что это не так.
Данные обоих пользователей были верными на момент считывания. Но когда пользователь В считывал запись, у пользователя А уже была ее копия, которую он вот-вот собирался изменить. Эта ситуация носит название проблемы потерянного обновления (lost update problem), или проблемы параллельного обновления (concurrent update problem).
Существует другая, схожая проблема, называемая проблемой несогласованного чтения (inconsistent read problem). В этом случае пользователь А читает данные, которые были обработаны некоторым фрагментом транзакции пользователя В. Как следствие, у пользователя А оказываются ошибочные данные.
Одно из средств против несогласованностей, вызванных параллельной обработкой, состоит в том, чтобы не давать нескольким приложениям получать копии одной и той же записи, когда предполагается скорое изменение данной записи. Это средство называется блокировкой ресурсов (resource locking).