Файл: 1. Введение в теорию баз данных Вопрос Основные понятия.docx
Добавлен: 07.12.2023
Просмотров: 830
Скачиваний: 3
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
LEVEL READ UNCOMMITTED
READ COMMITTED – завершенное чтение, при котором отсутствует черновое, «грязное» чтение. Тем не менее в процессе работы одной транзакции другая может быть успешно завершена и сделанные ею изменения зафиксированы. В итоге первая транзакция будет работать с другим набором данных. Это проблема неповторяемого чтения. Данный уровень изоляции установлен в SQL Server по умолчанию и устанавливается посредством команды:
SET TRANSACTION ISOLATION
LEVEL READ COMMITTED
REPEATABLE READ – повторяющееся чтение. Повторное чтение строки возвратит первоначально считанные данные, несмотря на любые обновления, произведенные другими пользователями до завершения транзакции. Тем не менее на этом уровне изоляции возможно возникновение фантомов. Его установка реализуется командой:
SET TRANSACTION ISOLATION
LEVEL REPEATABLE READ
SERIALIZABLE – сериализуемость. Чтение запрещено до завершения транзакции. Это максимальный уровень изоляции, который обеспечивает полную изоляцию транзакций друг от друга. Он устанавливается командой:
SET TRANSACTION ISOLATION
LEVEL SERIALIZABLE
В каждый момент времени возможен только один уровень изоляции.
Таблица 13.
Уровень изоляции конкурирующей транзакции принят по умолчанию (READ COMMITTED). В примере шаги 4, 6 и 8 демонстрируют черновое чтение. Шаги 9 и 10 блокируются, потому что данные захвачены конкурирующей транзакцией. | |
Пользователь user1 Конкурирующая транзакция | Пользователь user2 Текущая транзакция |
USE basa_user2 BEGIN TRANSACTION TRA | USE basa_user2 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED BEGIN TRANSACTION TRB |
1.SELECT * FROM Товар | 2.SELECT * FROM Товар |
3.UPDATE Товар SET остаток=остаток+10 WHERE КодТовара=4 | 4.SELECT * FROM Товар (читает измененные неподтвержденные данные) |
5.DELETE FROM Товар WHERE КодТовара=4 | 6.SELECT * FROM Товар (читает измененные неподтвержденные данные) |
7.INSERT Товар (Название, остаток) VALUES ('SS',999) | 8.SELECT * FROM Товар (читает измененные неподтвержденные данные) |
12.ROLLBACK TRANSACTION TRA | 9.UPDATE Товар SET остаток=остаток+10 WHERE КодТовара=4 (блокируется до окончания конкурирующей транзакции) |
10.DELETE FROM Товар WHERE КодТовара=4 (блокируется до окончания конкурирующей транзакции) | 11.INSERT Товар(Название, остаток) VALUES ('SS',999) (выполняется) |
13.ROLLBACK TRANSACTION TRB SELECT @@TRANCOUNT | |
Таблица 14.
Уровень изоляции конкурирующей транзакции принят по умолчанию (READ COMMITTED). В примере шаги 4, 6 и 8 демонстрируют блокировку данных, захваченных другой транзакцией, в то время как работа с другими данными разрешается (шаг 10). | |
Пользователь user1 Конкурирующая транзакция | Пользователь user2 Текущая транзакция |
USE basa_user2 BEGIN TRANSACTION TRA | USE basa_user2 SET TRANSACTION ISOLATION LEVEL READ COMMITTED BEGIN TRANSACTION TRB |
1.SELECT * FROM Товар | 2.SELECT * FROM Товар |
3.UPDATE Товар SET остаток=остаток+10 (захватывает данные) | 4.SELECT * FROM Товар WHERE КодТовара=4 (блокируется до окончания конкурирующей транзакции) |
5.DELETE FROM Товар WHERE КодТовара=4 | 6.UPDATE Товар SET остаток=остаток+10 WHERE КодТовара=4 (блокируется до окончания конкурирующей транзакции) |
7.UPDATE Товар SET остаток=остаток+10 WHERE КодТовара=4 (выполняется той транзакцией, которая первой захватила данные на изменение или удаление) | 8.DELETE FROM Товар WHERE КодТовара=4 (блокируется до окончания конкурирующей транзакции) |
9.INSERT Товар (Название, остаток) VALUES ('SS',999) | 10.INSERT Товар(Название, остаток) VALUES ('SS',999) (выполняется) |
11.ROLLBACK TRANSACTION TRA SELECT @@TRANCOUNT | 12.ROLLBACK TRANSACTION TRB SELECT @@TRANCOUNT |
Таблица 15.
Уровень изоляции конкурирующей транзакции принят по умолчанию (READ COMMITTED). На шаге 2 транзакция захватила данные чтением и блокирует работу с ними со стороны конкурирующей транзакции (шаги 3, 5), которая может лишь добавлять записи (шаг 7). | |
Пользователь user1 Конкурирующая транзакция | Пользователь user2 Текущая транзакция |
USE basa_user2 BEGIN TRANSACTION TRA | USE basa_user2 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ BEGIN TRANSACTION TRB |
1.SELECT * FROM Товар | 2.SELECT * FROM Товар (захватывает данные) |
3.UPDATE Товар SET остаток=остаток+10 WHERE КодТовара=4 (блокируется) | 4.SELECT * FROM Товар (блокируется до окончания конкурирующей транзакции) |
5.DELETE FROM Товар WHERE КодТовара=4 (блокируется) | 6.UPDATE Товар SET остаток=остаток+10 WHERE КодТовара=4 (выполняется, т.к. данные захвачены текущей транзакцией) |
7.INSERT Товар (Название, остаток) VALUES ('SS',999) (выполняется) | 8.DELETE FROM Товар WHERE КодТовара=4 (выполняется, т.к. данные захвачены текущей транзакцией) |
10.ROLLBACK TRANSACTION TRA SELECT @@TRANCOUNT | 9.INSERT Товар(Название, остаток) VALUES ('SS',999) (выполняется) |
| 11.ROLLBACK TRANSACTION TRB SELECT @@TRANCOUNT |
Таблица 16.
Уровень изоляции конкурирующей транзакции принят по умолчанию (READ COMMITTED). Пример демонстрирует, что текущая транзакция захватила данные чтением (шаг 2) и блокирует любые действия с ними со стороны конкурирующей транзакции вплоть до вставки данных (шаг 7). | |
Пользователь user1 Конкурирующая транзакция | Пользователь user2 Текущая транзакция |
USE basa_user2 BEGIN TRANSACTION TRA | USE basa_user2 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE BEGIN TRANSACTION TRB |
1.SELECT * FROM Товар | 2.SELECT * FROM Товар (захватывает данные) |
3.UPDATE Товар SET остаток=остаток+10 WHERE КодТовара=4 (блокируется) | 4.SELECT * FROM Товар (выполняется) |
5.DELETE FROM Товар WHERE КодТовара=4 (блокируется) | 6.UPDATE Товар SET остаток=остаток+10 WHERE КодТовара=4 (выполняется, т.к. данные захвачены текущей транзакцией) |
7.INSERT Товар (наименование, остаток) VALUES ('SS',999) (блокируется) | 8.DELETE FROM Товар WHERE КодТовара=4 (выполняется, т.к. данные захвачены текущей транзакцией) |
10.ROLLBACK TRANSACTION TRA SELECT @@TRANCOUNT | 9.INSERT Товар(Название, остаток) VALUES ('SS',999) (выполняется) |
| 11.ROLLBACK TRANSACTION TRB SELECT @@TRANCOUNT |
Тема 6. Информационные хранилища и склады данных
Вопрос 1. Хранилища данных.[17]
Хранилище данных (Data Warehouse) - предметно - ориентированный, интегрированный, привязанный ко времени и неизменяемый набор данных, предназначенный для поддержки принятия решений.
Хранилище данных содержит непротиворечивые консолидированные исторические данные и предоставляет инструментальные средства для их анализа с целью поддержки принятия стратегических решений. Информационные ресурсы хранилища данных формируются на основе фиксируемых на протяжении продолжительного периода времени моментальных снимков баз данных оперативной информационной системы и, возможно, различных внешних источников. В хранилищах данных применяются технологии баз данных, OLAP, глубинного анализа данных, визуализации данных.
Основные характеристики хранилищ данных.
содержит исторические данные;
хранит подробные сведения, а также частично и полностью обобщенные данные;
данные в основном являются статическими;
нерегламентированный, неструктурированный и эвристический способ обработки данных;
средняя и низкая интенсивность обработки транзакций;
непредсказуемый способ использования данных;
предназначено для проведения анализа;
ориентировано на предметные области;
поддержка принятия стратегических решений;
обслуживает относительно малое количество работников руководящего звена.
Термин OLAP (On-Line Analytical Processing) служит для описания модели представления данных и соответственно технологии их обработки в хранилищах данных. В OLAP применяется многомерное представление агрегированных данных для обеспечения быстрого доступа к стратегически важной информации в целях углубленного анализа. Приложения OLAP должны обладать следующими основными свойствами:
многомерное представление данных;
поддержка сложных расчетов;
правильный учет фактора времени.
Преимущества OLAP:
повышение производительности производственного персонала, разработчиков прикладных программ. Своевременный доступ к стратегической информации.
предоставление пользователям достаточных возможностей для внесения собственных изменений в схему.
приложения OLAP опираются на хранилища данных и системы OLTP, получая от них актуальные данные, что дает сохранение контроля целостности корпоративных данных.
уменьшение нагрузки на системы OLTP и хранилища данных.
Вопрос 2. OLAP и OLTP. Характеристики и основные отличия.[18]
Таблица 17.
OLAP | OLTP |
Хранилище данных должно включать как внутренние корпоративные данные, так и внешние данные | основным источником информации, поступающей в оперативную БД, является деятельность корпорации, а для проведения анализа данных требуется привлечение внешних источников информации (например, статистических отчетов) |
Объем аналитических БД как минимум на порядок больше объема оперативных. для проведения достоверных анализа и прогнозирования в хранилище данных нужно иметь информацию о деятельности корпорации и состоянии рынка на протяжении нескольких лет | Для оперативной обработки требуются данные за несколько последних месяцев |
Хранилище данных должно содержать единообразно представленную и согласованную информацию, максимально соответствующую содержанию оперативных БД. Необходима компонента для извлечения и «очистки» информации из разных источников. Во многих крупных корпорациях одновременно существуют несколько оперативных ИС с собственными БД (по историческим причинам). | Оперативные БД могут содержать семантически эквивалентную информацию, представленную в разных форматах, с разным указанием времени ее поступления, иногда даже противоречивую |
Набор запросов к аналитической базе данных предсказать невозможно. хранилища данных существуют, чтобы отвечать на нерегламентированные запросы аналитиков. Можно рассчитывать только на то, что запросы будут поступать не слишком часто и затрагивать большие объемы информации. Размеры аналитической БД стимулируют использование запросов с агрегатами (сумма, минимальное, максимальное, среднее значение и т.д.) | Системы обработки данных создаются в расчете на решение конкретных задач. Информация из БД выбирается часто и небольшими порциями. Обычно набор запросов к оперативной БД известен уже при проектировании |
При малой изменчивости аналитических БД (только при загрузке данных) оказываются разумными упорядоченность массивов, более быстрые методы индексации при массовой выборке, хранение заранее агрегированных данных | Системы обработки данных по своей природе являются сильно изменчивыми, что учитывается в используемых СУБД (нормализованная структура БД, строки хранятся неупорядоченно, B-деревья для индексации, транзакционность) |
Информация аналитических БД настолько критична для корпорации, что требуются большая грануляция защиты (индивидуальные права доступа к определенным строкам и/или столбцам таблицы) | Для систем обработки данных обычно хватает защиты информации на уровне таблиц |