💀
Второй курс РПО
Основы проектирования баз данных
Основы проектирования баз данных
  • Понятия баз данных
  • Типы моделей данных
    • Реляционные базы данных
  • Реляционная алгебра
  • Модель процессов
  • Проектирование базы данных
  • Нормальные формы
    • Определения, и самое важное
  • Моделирование базы
    • Практическая работа: Решение
    • Для тех у кого iq как у Антона
  • Инструменты проектирования
  • Проектирование БД
  • Ключи и объекты
  • SQL Операции
  • Группировка данных
  • Пользовательский интерфейс
  • Проектирование БД
  • Управление таблицами
  • Ключи и индексы
  • Сортировка и поиск
    • 🤪Короткая версия
  • Работа с файлами
  • Запись массива в таблицу
  • Меню баз данных
  • Рабочие окна
  • Создание формы
  • Создание проекта БД и интерфейса
  • Ограничения полей
  • Работа с таблицами
  • Обработка транзакций
Powered by GitBook
On this page
  • Что такое транзакции и зачем они нужны?
  • Свойства транзакций (ACID)
  • Пример работы с транзакциями
  • Уровни изоляции транзакций
  • Использование функций защиты в базах данных
  • Заключение

Обработка транзакций

13.12.2024

Что такое транзакции и зачем они нужны?

Транзакция в базах данных — это совокупность операций, которые выполняются как единое целое. Основная цель транзакции — гарантировать, что данные останутся в согласованном состоянии даже в случае сбоя системы или других проблем.

Представьте, что вы переводите деньги с одного банковского счёта на другой. Этот процесс включает две операции:

  1. Снятие денег с одного счёта.

  2. Пополнение другого счёта.

Если одна из операций завершится ошибкой (например, отключится питание), то без транзакций база данных может остаться в несогласованном состоянии: деньги будут списаны, но не зачислены. Транзакции предотвращают такие ситуации, обеспечивая выполнение всех операций целиком или откат всех изменений, если произошла ошибка.

Свойства транзакций (ACID)

Для обеспечения надёжности транзакций применяются свойства ACID:

  1. Atomicity (Атомарность) Все операции внутри транзакции выполняются либо полностью, либо не выполняются вовсе.

  2. Consistency (Согласованность) После завершения транзакции данные остаются в согласованном состоянии.

  3. Isolation (Изолированность) Выполнение одной транзакции не должно влиять на выполнение других транзакций.

  4. Durability (Надёжность) После успешного завершения транзакции изменения данных сохраняются, даже если произойдёт сбой системы.

Пример работы с транзакциями

Рассмотрим SQL-код, демонстрирующий использование транзакции:

SQL
BEGIN TRANSACTION;

-- Снятие денег с первого счёта
UPDATE accounts
SET balance = balance - 1000
WHERE account_id = 1;

-- Пополнение второго счёта
UPDATE accounts
SET balance = balance + 1000
WHERE account_id = 2;

-- Фиксация изменений
COMMIT;

Если на любом этапе произойдёт ошибка, можно выполнить откат:

SQL
ROLLBACK;

Уровни изоляции транзакций

Чтобы избежать конфликтов между параллельными транзакциями, используются уровни изоляции. Они определяют, насколько одна транзакция видит изменения другой транзакции до её завершения.

  1. Read Uncommitted - Позволяет читать изменения, которые ещё не подтверждены (грязное чтение). Быстрый, но ненадёжный.

  2. Read Committed - Транзакция видит только подтверждённые изменения. Грязное чтение исключено.

  3. Repeatable Read - Транзакция видит одинаковые данные при повторных чтениях, даже если другие транзакции изменяют данные.

  4. Serializable - Самый высокий уровень изоляции. Гарантирует полную изолированность, но медленнее остальных.

Пример задания уровня изоляции:

SQL
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN TRANSACTION;
-- Ваши операции
COMMIT;

Использование функций защиты в базах данных

Защита данных в базах данных — это набор механизмов, которые помогают предотвратить несанкционированный доступ, утечку данных и их повреждение. Рассмотрим основные функции.

Аутентификация и авторизация

  • Аутентификация — проверка личности пользователя (логин и пароль, токены, сертификаты).

  • Авторизация — проверка прав доступа пользователя к определённым ресурсам или операциям.

Пример создания пользователя и задания ролей в PostgreSQL:

SQL
CREATE USER db_user WITH PASSWORD 'secure_password';
GRANT SELECT, INSERT ON TABLE accounts TO db_user;

Резервное копирование и восстановление

Создание резервной копии позволяет восстановить данные в случае сбоя. Например, команда для создания бэкапа в MySQL:

mysqldump -u username -p database_name > backup.sql

Восстановление данных:

mysql -u username -p database_name < backup.sql

Шифрование данных

Шифрование защищает данные от несанкционированного доступа. Пример в PostgreSQL с использованием расширения pgcrypto:

SQL
-- Хранение зашифрованного пароля
INSERT INTO users (username, password)
VALUES ('user1', crypt('secure_password', gen_salt('bf')));

-- Проверка пароля
SELECT username FROM users
WHERE password = crypt('secure_password', password);

Журналы аудита

Аудит фиксирует действия пользователей в базе данных, чтобы обнаружить подозрительную активность. Пример настройки аудита в Oracle:

SQL
AUDIT SELECT ON accounts BY ACCESS;

Ограничение доступа

Можно ограничить доступ по IP-адресу или времени. Пример настройки в MySQL:

SQL
CREATE USER 'remote_user'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON database_name.* TO 'remote_user'@'192.168.1.100';

Заключение

Обработка транзакций и функции защиты — ключевые механизмы для обеспечения надёжности и безопасности данных в базах данных. Их правильное использование позволяет предотвратить потерю данных, защитить их от несанкционированного доступа и обеспечить согласованность в любых ситуациях.

PreviousРабота с таблицами

Last updated 5 months ago