Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГАК-2026.docx
Скачиваний:
1
Добавлен:
16.06.2026
Размер:
2.66 Mб
Скачать

3. Пример работы acid на практике

Рассмотрим классический пример — банковский перевод.

  • Атомарность: либо обе операции выполнятся, либо ни одна.

  • Согласованность: проверки (баланс не может стать отрицательным, если есть такое ограничение) не дадут уйти в минус.

  • Изолированность: если одновременно два перевода со счёта 1, механизмы блокировок не дадут уйти в минус.

  • Долговечность: после COMMIT изменения гарантированно сохранятся на диске.

4. ACID vs BASE

Мы уже касались этого в вопросе 7. Реляционные БД строго следуют ACID. Многие NoSQL-системы следуют BASE:

  • Basically Available — система всегда доступна (возможно, с устаревшими данными).

  • Soft state — состояние может меняться само по себе.

  • Eventual consistency — данные в конечном счёте станут согласованными, но не мгновенно.

Это компромисс для распределённых систем, где невозможно идеально выполнить все требования ACID.

5. Механизмы реализации acid в субд

  • Журналирование (WAL — Write-Ahead Logging): перед изменением данных запись об изменении сохраняется в журнал. При сбое система может "проиграть" журнал для восстановления.

  • Блокировки (Locks): предотвращают одновременное изменение одних данных разными транзакциями.

  • MVCC (Multi-Version Concurrency Control): вместо блокировок создаются версии строк. Читатели видят старую версию, пока писатель не завершит транзакцию. Используется в PostgreSQL, Oracle.

  • Контрольные точки (Checkpoints): периодически "грязные" страницы сбрасываются на диск.

6. Заключение

Нормализация и ACID — это две стороны одной медали:

  • Нормализация отвечает за правильную структуру данных, устранение избыточности и аномалий.

  • ACID отвечает за надёжность операций с этими данными.

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

9. SQL-запросы и транзакции

SQL (Structured Query Language) — это язык структурированных запросов, который используется для работы с реляционными базами данных. С его помощью можно выполнять различные операции с данными: создавать таблицы, добавлять записи, изменять и удалять информацию.

Основные команды SQL:

  • SELECT — используется для выборки данных из таблицы

  • INSERT — добавляет новые записи

  • UPDATE — изменяет существующие данные

  • DELETE — удаляет записи

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

Транзакции позволяют сохранять целостность данных и предотвращают появление ошибок при одновременной работе нескольких пользователей с базой данных.

Вопрос 9: Реляционная модель бд: sql-запросы, транзакции Часть 1. Sql-запросы

1. Что такое sql?

SQL (Structured Query Language) — это язык структурированных запросов, предназначенный для работы с реляционными базами данных. Он позволяет:

  • создавать и изменять структуру базы данных (DDL — Data Definition Language);

  • управлять данными (DML — Data Manipulation Language);

  • управлять доступом (DCL — Data Control Language);

  • управлять транзакциями (TCL — Transaction Control Language).

SQL — декларативный язык: вы описываете ЧТО хотите получить, а СУБД сама решает КАК это сделать.

2. Основные группы команд SQL

DDL (Data Definition Language) — определение данных

  • CREATE — создание объектов (баз данных, таблиц, индексов, представлений).

  • ALTER — изменение структуры существующих объектов.

  • DROP — удаление объектов.

  • TRUNCATE — быстрое удаление всех данных из таблицы (без возможности отката).

DML (Data Manipulation Language) — манипуляция данными

  • SELECT — выборка данных (самая сложная и часто используемая команда).

  • INSERT — вставка новых записей.

  • UPDATE — обновление существующих записей.

  • DELETE — удаление записей.

DCL (Data Control Language) — управление доступом

  • GRANT — предоставление прав.

  • REVOKE — отмена прав.

TCL (Transaction Control Language) — управление транзакциями

  • BEGIN TRANSACTION / START TRANSACTION — начало транзакции.

  • COMMIT — фиксация транзакции (сохранение изменений).

  • ROLLBACK — откат транзакции (отмена изменений).

  • SAVEPOINT — установка точки сохранения внутри транзакции.

3. SELECT — самый важный запрос

Рассмотрим подробно команду SELECT, так как это основа работы с данными.

Полный синтаксис (упрощённо):

Порядок выполнения (логический, не синтаксический):

  1. FROM — определяем источник данных.

  2. WHERE — фильтруем строки.

  3. GROUP BY — группируем строки.

  4. HAVING — фильтруем группы.

  5. SELECT — выбираем поля и вычисляем выражения.

  6. ORDER BY — сортируем результат.

  7. LIMIT / OFFSET — ограничиваем количество строк.