Skip to content

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

ACID

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

Расшифровка ACID:

1. Atomicity (Атомарность):

• Все операции в транзакции должны быть выполнены полностью или не выполнены вовсе. Если одна часть транзакции не удалась, все изменения откатываются, и система возвращается к предыдущему состоянию.

• Пример: Если вы переводите деньги между двумя счетами, либо оба счёта обновляются, либо ни один.

2. Consistency (Согласованность):

• После завершения транзакции данные должны оставаться в согласованном состоянии, то есть все правила целостности данных (например, ограничения, связи) должны соблюдаться.

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

3. Isolation (Изоляция):

• Параллельно выполняемые транзакции не должны влиять друг на друга. Промежуточные изменения транзакции не должны быть видимы другим транзакциям, пока транзакция не завершится.

• Пример: Если два пользователя одновременно переводят деньги, они не должны видеть промежуточные результаты друг друга.

4. Durability (Долговечность):

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

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

ACID принципы традиционно используются в реляционных базах данных, таких как PostgreSQL, MySQL, Oracle, для обеспечения высокой согласованности и надежности данных.

BASE

BASE — это подход, применяемый в распределённых системах и NoSQL-базах данных, где согласованность может быть ослаблена ради повышения производительности и доступности.

Расшифровка BASE:

1. Basically Available (Простая доступность):

• Система должна быть всегда доступной, даже если она возвращает устаревшие или неполные данные. Важна высокая доступность системы.

• Пример: Даже при отказе одной из реплик данных система может вернуть данные с другой реплики.

2. Soft State (Мягкое состояние):

• Состояние системы может изменяться со временем, даже без явных обновлений, из-за асинхронных обновлений данных.

• Пример: Система может временно иметь неконсистентные данные, пока реплики синхронизируются.

3. Eventual Consistency (Окончательная согласованность):

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

• Пример: Запись может быть обновлена на одной реплике, но до того, как обновления распространятся на другие реплики, может быть возвращено старое значение.

BASE-принципы часто используются в NoSQL базах данных (например, Cassandra, DynamoDB, CouchDB), которые предпочитают высокую доступность и масштабируемость за счёт строгой согласованности.