Транзакции могут и не понадобиться (Владимир Кузнецов)

preview_player
Показать описание
Скука и бзсхднст. Что такое транзакции в системах хранения данных, и почему они вам могут никогда не понадобиться.
Рекомендации по теме
Комментарии
Автор

Ключевой момент в том, что транзакция бывает либо явной (begin, commit/rollback), т.е. мы явно указываем это или не явной, когда мы не указываем beg/com/rol. По сути, любая инструкция, которая что-то изменяет (состав или состояние бд) - это транзакция, и она действует от начала и до конца инструкции. И соответственно, любая транзакция обладает свойствами acid - atomicity, consistency, isolation, durability, чтобы обеспечить ее протекание и завершение, в результате которого данные переходят из состояния А в состояние Б и являются согласованными и целостными.

vladislavkuzmenko
Автор

Такие загадки.. тут про @Transactional что ли и Isolation levels? :)

sayhellotoroy
Автор

В следующей серии товарищ скажет что такое взаимные блокировки )))

daniil
Автор

Серёга, классный офис у вашей компании.

АндрейШепшелей
Автор

Осторожно, На этом бла-бла-бла закончится, дальше пойдем щупать, что там под капотом :)

vladymyrkuznietsov
Автор

Контент очень интересен, но 7 минут это слишком коротко. Санта Барбара выйдет если в день по чайной ложке выдавать.

pavloesaulov
Автор

когда вы уже начнете показывать практику хотя бы на mysql ?

b.g.
Автор

Далеко не все базы поддерживают транзакции.

HowItWorks
Автор

Мысль правильная, но нужно пойти еще дальше. Человек явно намекает на нетранзакционные СУБД. Допустим, вы внедрили оную в свой проект или стартап, пока еще маленький. И если он таким и останется, у вас нет проблем: нет конкурентного доступа к данным, данных мало, сбои редки и последствия от них не критичны, транзакции не нужны. Но что если вы выросли, и вам внезапно понадобились транзакции? Ваша СУБД их не поддерживает. Внедрять транзакционную СУБД? Но ваша СУБД может сильно отличаться и в других аспектах, например в принципе хранения данных (нереляционные СУБД). Т.о. вам придется переделывать схему под новую СУБД, переписывать код работы с данными, перегонять данные, возможно, нормализовать их, чтобы уложить в реляционную БД. Так как бизнес требует все уже вчера, столько времени у вас просто нет. И придется городить костыли и прикручивать монструозный параллелизм в своем коде, тогда как можно было бы его получить в декларативном стиле из коробки. Сюда же и другие фичи вроде ссылочной цеолстности, сложных аналитических запросов и т.д.
Что же если бы сразу выбрали реляционную транзакционную СУБД? Никто вас не заставляет морочиться с транзакциями: они практически везде работают автоматически. Никто не заставляет вас собирать огромные статистики в одной транзакции. Данные за прошлые 10 лет вряд ли меняются, и читающие запросы по ним можно вообще выполнить с грязным чтением почти без блокировок (получив допустимую погрешность в результате). Но зато вы застрахованы от внезапных новых требований бизнеса к безопасности изменений данных.
Производительность таких СУБД меньше, но вы реально думаете, что ваш бизнес упрется в этот потолок, серьезно? В него упираются лишь некоторые топовые компании. А вы - не Гугл (с). Зато у вас из коробки есть ACID, SQL, ссылочная целостность, реляционная структура без дублирований, индексы, репликация, синхронизация, кластеризация и еще миллион фич, которые с ростом бизнеса спасут вам задницу не один раз.

AlexP-jcrz
Автор

Есть неточности (например, то что транзакции важны только для конкурентной среды) и вообще непонятно что хочет донести автор до зрителя.

jewgenijmoldawski
Автор

Поднят очень интересный и важный вопрос, Но "комментатор" абсолютно не умеет расположить к себе аудиторию и обсудить вопрос. Все происходит "чтением с экрана" ноутбука.Не чувствуется живого общения и заинтересованностью темой, хотя вероятно знания есть....Ребята, не в обиду, просто впечатления..

vladslav
Автор

Причём тут транзакция к конкуретной среде? Транзакция может понадобится и в однопоточном приложении, поэтому определение, что транзакция это что-то только для конкурентной среды не верно! А вообще, если говорить про конкурентные среды, то к этому аспекту относится больше уровень изоляции транзакций, чем сама транзакция. Так сказать, транзакция не знает о других транзакциях, у неё свой маленький мир. А о том, что есть много транзакций и какой уровень изоляции у них - это уже другой уровень\слой, который составляет транзакционную систему БД.

AlexJPep
Автор

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

igoraleksandrovich