В системах баз данных согласованность ( или корректность ) относится к требованию, что любая данная транзакция базы данных должна изменять затронутые данные только разрешенными способами. Любые данные, записанные в базу данных, должны быть действительными в соответствии со всеми определенными правилами, включая ограничения , каскады , триггеры и любую их комбинацию. Это не гарантирует корректность транзакции всеми способами, которые мог бы пожелать программист приложения (это ответственность кода уровня приложения), а лишь то, что любые ошибки программирования не могут привести к нарушению любых определенных ограничений базы данных. [1]
В распределенной системе, ссылаясь на теорему CAP , согласованность также можно понимать как то, что после успешной записи, обновления или удаления записи любой запрос на чтение немедленно получает последнее значение записи.
Согласованность — одна из четырех гарантий, определяющих транзакции ACID ; однако, существует значительная двусмысленность относительно природы этой гарантии. Она определяется по-разному:
Поскольку эти различные определения не являются взаимоисключающими, можно разработать систему, которая гарантирует «согласованность» во всех смыслах этого слова, как, вероятно, и делают большинство систем управления реляционными базами данных, широко используемых сегодня.
Теорема CAP основана на трех компромиссах, одним из которых является «атомарная согласованность» (сокращенно «согласованность» для акронима), о которой авторы отмечают: «Обсуждение атомарной согласованности несколько отличается от разговора о базе данных ACID, поскольку согласованность базы данных относится к транзакциям, в то время как атомарная согласованность относится только к свойству одной последовательности операций запроса/ответа. И она имеет другое значение, чем Atomic в ACID, поскольку она включает в себя понятия базы данных как Atomic, так и Consistent». [7] В теореме CAP вы можете иметь только два из следующих трех свойств: согласованность, доступность или устойчивость к разделам. Поэтому согласованность может быть компромиссом в некоторых системах баз данных.