| Свойство | Что означает |
|---|---|
| C — Consistency (Согласованность) | Все узлы возвращают одни и те же данные при обращении. |
| A — Availability (Доступность) | Каждый запрос получает ответ (успешный или с ошибкой) — даже если какие-то узлы отвалились. |
| P — Partition tolerance (Устойчивость к разделению сети) | Система продолжает работать, даже если есть сбой связи между узлами. |
В распределённой системе невозможно одновременно гарантировать все три свойства: C, A и P. При наличии сетовой перегородки (Partition), нужно выбрать между Consistency и Availability.
| Выбор | Поведение |
|---|---|
| CP (Consistency + Partition tolerance) | Лучше отказать в доступности, чем вернуть несогласованные данные |
| AP (Availability + Partition tolerance) | Всегда возвращать ответ, даже если он устарел или неточный |
| CA невозможно при P | Если есть Partition, ты не можешь обеспечить и C, и A одновременно |
| Система | Класс CAP | Пояснение |
|---|---|---|
| MongoDB (в базе) | AP | Гарантирует доступность, но может вернуть устаревшие данные |
| HBase / Bigtable | CP | Строгая согласованность, но может быть недоступна |
| Cassandra | AP (по умолчанию), но можно настраивать tradeoff | |
| Zookeeper | CP | Используется там, где критична согласованность |
Операторы определения данных (Data Definition Language, DDL): • CREATE создает объект БД (базу, таблицу, представление, пользователя и т. д.); • ALTER изменяет объект; • DROP удаляет объект; • TRUNCATE удаляет таблицу и создает ее пустую заново, но если в таблице были foreigh key, то создать таблицу не получится, rollback после TRUNCATE невозможен.
❔ ****Создание view к какому типу sql операций относится? ❔
Создание представления (VIEW) в SQL относится к DDL-операциям (Data Definition Language) — языку определения данных
Операторы манипуляции данными (Data Manipulation Language, DML): • SELECT выбирает данные, удовлетворяющие заданным условиям; • INSERT добавляет новые данные; • UPDATE изменяет существующие данные; • DELETE удаляет данные при выполнении условия WHERE;
Операторы управления транзакциями (Transaction Control Language, TCL): • BEGIN служит для определения начала транзакции; • COMMIT применяет транзакцию; • ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции; • SAVEPOINT разбивает транзакцию на более мелкие
В SQL SetTransaction используется для установки свойств текущей транзакции, таких как уровень изоляции. В зависимости от СУБД (PostgreSQL, Oracle, Firebird и т.д.), синтаксис может немного отличаться, но общее назначение — установить параметры до начала транзакции.
Операторы определения доступа к данным (Data Control Language, DCL): • GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом; • REVOKE отзывает ранее выданные разрешения; • DENY задает запрет, имеющий приоритет над разрешением