Введение
В системах баз данных, согласованность (или корректность) относится к требованию, чтобы любая операция с базой данных изменяла затронутые данные только допустимыми способами. Любые данные, записанные в базу данных, должны быть валидными в соответствии со всеми определенными правилами, включая ограничения, каскады, триггеры и любые их комбинации. Это не гарантирует корректность транзакции во всех аспектах, которые мог бы ожидать разработчик приложения (это ответственность кода на уровне приложения), а лишь то, что ошибки программирования не приведут к нарушению определенных ограничений базы данных. Согласованность также подразумевает, что после успешной записи, обновления или удаления записи, любой последующий запрос на чтение немедленно вернет последнее значение этой записи.
В качестве гарантии ACID
Последовательность — одна из четырех гарантий, определяющих ACID-транзакции; однако существует значительная неопределенность относительно сути этой гарантии. Она определяется по-разному:
Гарантия того, что ограничения базы данных не нарушаются, особенно после завершения транзакции. Гарантия того, что любые транзакции, начатые в будущем, обязательно увидят результаты транзакций, зафиксированных в прошлом. Поскольку эти различные определения не являются взаимоисключающими, возможно спроектировать систему, гарантирующую "согласованность" во всех смыслах этого слова, что, вероятно, делают большинство реляционных систем управления базами данных, используемых в настоящее время.
The guarantee that database constraints are not violated, particularly once a transaction commits. The guarantee that any transactions started in the future necessarily see the effects of other transactions committed in the past. As these various definitions are not mutually exclusive, it is possible to design a system that guarantees "consistency" in every sense of the word, as most relational database management systems in common use today arguably do.
Как компромисс в рамках ОСП
Теорема CAP основана на трех компромиссах, один из которых — «атомная согласованность» (сокращенно «согласованность» для аббревиатуры), о которой авторы отмечают: «Обсуждение атомной согласованности несколько отличается от обсуждения ACID-баз данных, поскольку согласованность базы данных относится к транзакциям, а атомная согласованность относится только к свойству единичной последовательности операций запрос/ответ. И она имеет другое значение, чем «Атомарность» в ACID, поскольку охватывает понятия атомарности и согласованности, используемые в базах данных». В теореме CAP можно иметь только два из следующих трех свойств: согласованность, доступность или устойчивость к разделению. Следовательно, в некоторых системах баз данных может потребоваться пожертвовать согласованностью.