Pull to refresh

Comments 4

Требование консистентности (Consistency) является вторым к транзакционным системам и логически вытекает из требования атомарности, т.е. каждая выполненная транзакция фиксирует только допустимые результаты

На самом деле вы тут повторяете принцип атомарности, только другими словами. Потому вам и кажется, что вытекает. СУБД вкладывает в понятие допустимости совсем не то, что можете вкладывать вы, как владелец продукта или разработчик.

Да, значению банковского счета нельзя присвоить отрицательное число, если так указано в схеме. А вот сделать что-то вроде update account set money_amount = 0 where 1=1 джвижок СУБД вам не запретит, несмотря ни на какой ACID. Потому есть мнение, что буква C была добавлена в акроним "чтобы красивее было". А в действительности задача поддержания согласованности лежит на бизнес-логике приложения, а не на СУБД.

Да, значению банковского счета нельзя присвоить отрицательное число, если так указано в схеме

Вот это же и есть согласованность.

Бытует мнение, что буковка C на уровне БД отвечает за ссылочную целостность, а не за консистентность уровня бизнес-логики.

1) Фраза "Некоторые транзакции выполняются мгновенно, а выполнение некоторых может занимать от нескольких минут до нескольких часов." не очень согласуется с заголовком "Принципы работы OLTP-систем"
2) Утверждение "В течении выполнения транзакции система будет оставаться несогласованной." для транзакционных ACID систем - оксюморон, хотя ряд систем не гарантирующих 100% ACID (где жертвуют гарантированной 100% атомарностью или 100% консистентностю, обычно ради повышенной производительности) тоже называют себя "транзакционными".

Sign up to leave a comment.