Приветствую тебя читатель, я решил написать про ACID и Транзакции PostgreSQL своим языком, с понятными примерами, эта статья ориентирована на людей готовящихся к собеседованию, кто захотел узнать нюансы транзакций в PostgreSQL или про ACID, а также для людей которые знают теорию, но сами ещё ни разу не писали транзакции. Я не ставил перед собой цели рассмотреть и объяснить работу транзакций на очень глубоком уровне. Была цель привести понятные примеры, дать макет работы с транзакциями, а также пощупать основные возможные проблемы при работе с транзакциями в PostgreSQL.
Рубрика «транзакции»
Транзакции PostgreSQL, Требования ACID, примеры. Подготовка к собеседованию, изучение
2024-09-16 в 14:31, admin, рубрики: acid, postgresql, базы данных, Принципы ACID, транзакции, транзакция, требования, что такое ACID, Что такое транзакцииБэкэнд для начинающих или типовые ошибки бэкэндера
2024-05-14 в 11:39, admin, рубрики: backend, конкурентность, согласованность, транзакцииВсем привет! Я Олег, fullstack‑разработчик в компании Тензор, тимлид небольшой команды.
Одна из моих обязанностей в роли тимлида — code review. За годы работы многое повидал и выделил для себя типовые ошибки, с которыми сталкиваются начинающие backend‑разработчики. Сегодня расскажу о некоторых из них.
О чем пойдет речь
Разберем типовые ошибки, которые допускаются при работе с SQL‑базами данных в рамках сервиса с высокой нагрузкой и конкурентными запросами.
В качестве БД возьмем PostgreSQL, в примерах кода будет использоваться как SQL-запросы, так и «некий ORM чем‑то напоминающий Sequelize» (все совпадения случайны).Читать полностью »
Единая нейросетевая модель кредитного скоринга
2023-07-19 в 8:36, admin, рубрики: big data, искусственный интеллект, кредитная история, кредитный скоринг, машинное обучение, нейронные сети, транзакцииКредитный скоринг - известная и давно решаемая банковская задача, суть которой заключается в оценке рисков банка при выдаче кредита. Для формализации риска в банке используется понятие дефолта.
Существуют разные определения дефолта. Самое распространенное, которое используем и мы — по просрочке на K дней в пределах N месяцев.
Подобное определение дефолта также приводится в соревновании от American ExpressЧитать полностью »
Нерушимая память, нерушимые процессы
2020-02-24 в 14:19, admin, рубрики: C, Анализ и проектирование систем, космос, осрв, системное программирование, транзакции
Прочитав недавно (1, 2, 3) с каким трудом даются “космические” процессоры, невольно задался мыслью, раз “цена” за устойчивое железо настолько высока, может быть стоит сделать шаг и с другой стороны — сделать устойчивый к спецфакторам “софт”? Но не прикладной софт, а скорее среду его выполнения: компилятор, ОС. Можно ли сделать так, чтобы выполнение программы в любой момент можно было оборвать, перезагрузить систему и продолжить с того же (или почти с того же) места. Существует же в конце концов гибернация.
Читать полностью »
Транзакции в глобалах InterSystems IRIS
2019-07-29 в 15:45, admin, рубрики: acid, intersystems iris, nosql, высокая производительность, глобалы, транзакции, хранение данных, хранилища данныхСУБД InterSystems IRIS поддерживает любопытные структуры для хранения данных — глобалы. По сути это многоуровневые ключи с различными дополнительными плюшками в виде транзакций, быстрых функций для обхода деревьев данных, блокировок и своего языка ObjectScript.
Подробнее о глобалах в цикле статей «Глобалы — мечи-кладенцы для хранения данных»:
Деревья. Часть 1.
Деревья. Часть 2.
Разреженные массивы. Часть 3.
Мне стало интересно как реализованы транзакции в глобалах, какие там есть особенности. Ведь это совершенно иная структура для хранения данных, чем всем привычные таблицы. Намного более низкоуровневая.
Читать полностью »
Транзакции и механизмы их контроля
2019-04-03 в 16:42, admin, рубрики: sql, Администрирование баз данных, блокировки, взаимоблокировки, журнал транзакций, изоляция транзакций, контроль параллельных заданий, метод временных меток, планировщик, транзакцииТранзакции
Транзакцией называется последовательность операций над данными имеющая начало и конец
Транзакция это последовательное выполнение операций чтения и записи. Окончанием транзакции может быть либо сохранение изменений (фиксация, commit) либо отмена изменений (откат, rollback). Применительно к БД транзакция это нескольких запросов, которые трактуются как единый запрос.
Транзакции должны удовлетворять свойствам ACID
Атомарность. Транзакция либо выполняется полностью либо не выполняется вовсе.
Согласованность. При завершении транзакции не должны быть нарушены ограничения накладываемые на данные (например constraints в БД). Согласованность подразумевает, что система будет переведена из одного корректного состояния в другое корректное.
Изолированность. Параллельно выполняемые транзакции не должны влиять друг на друга, например менять данные которые использует другая транзакция. Результат выполнения параллельных транзакций должен быть таким, как если бы транзакции выполнялись последовательно.
Устойчивость. После фиксации изменения не должны быть утеряны.
Читать полностью »
Двухфазный коммит и будущее распределённых систем
2018-12-26 в 19:52, admin, рубрики: paxos, TLA+, Алгоритмы, асимметричность информации, атомарность, высокая производительность, двухфазный коммит, моделирование, распределенные системы, согласованность, транзакции, трёхфазный коммитВ этой статье мы смоделируем и исследуем протокол двухфазного коммита с помощью TLA+.
Протокол двухфазного коммита практичный и сегодня используется во многих распределённых системах. Тем не менее, он достаточно краткий. Поэтому мы можем быстро смоделировать его и многому научиться. На самом деле этим примером мы проиллюстрируем, какой результат в распределённых системах фундаментально невозможен.
Проблема двухфазного коммита
Транзакция проходит через диспетчеры ресурсов (RM). Все RM должны договориться, будет транзакция завершена или прервана.
Менеджер транзакций (TM) принимает окончательное решение: коммит или отмена. Условием для коммита является готовность к коммиту всех RM. В противном случае транзакцию следует отменить.
Читать полностью »
Bitfury Crystal: как работает инструмент для отслеживания подозрительных транзакций в биткоин-сети
2018-12-25 в 9:01, admin, рубрики: bitcoin, bitcoin cash, Bitfury Crystal, Bitfury Group, Bitfury Russia, Блог компании Bitfury Group, информационная безопасность, криптография, транзакции, финансы в ITСегодня мы расскажем о Bitfury Crystal — платформе которая анализирует блокчейны Bitcoin и Bitcoin Cash и позволяет выявлять подозрительные транзакции с криптовалютой. Рассмотрим инструменты, используемые системой, и принципы их работы.
Инфраструктура System.Transactions в мире .NET
2018-12-20 в 6:49, admin, рубрики: .net, C#, Блог компании CUSTIS, распределенные транзакции, транзакции
Встречали ли вы в C# конструкцию типа using (var scope = new TransactionScope(TransactionScopeOption.Required))
? Это значит, что код, выполняющийся в блоке using
, заключается в транзакцию и после выхода из этого блока изменения будут зафиксированы или отменены. Звучит понятно, пока не начинаешь копать глубже. И чем глубже копаешь, тем «страньше и страньше» становится. Во всяком случае, у меня при более близком знакомстве с классом TransactionScope
и вообще транзакциями .NET возникла целая уйма вопросов.
Что за класс TransactionScope
? Как только мы используем конструкцию using (var scope = new TransactionScope())
, все в нашей программе сразу становится транзакционным? Что такое «управляющий ресурсами» (Resource Manager) и «управляющий транзакциями» (Transaction Manager)? Можно ли написать свой управляющий ресурсами и как он «подключается» к созданному экземпляру TransactionScope
? Что такое распределенная транзакция и правда ли, что распределенная транзакция в SQL Server или Oracle Database — это то же самое, что и распределенная транзакция .NET?
В данной публикации я постарался собрать материал, помогающий найти ответы на указанные вопросы и сформировать понимание транзакций в мире .NET.
Читать полностью »
Эффективное управление транзакциями в Spring
2018-11-29 в 12:14, admin, рубрики: java, spring, Блог компании Отус, Программирование, транзакцииВсем добрый день!
Что ж, конец месяца у нас всегда интенсивные, вот и тут остался всего день до старта второго потока курса «Разработчик на Spring Framework» — замечательного и интересного курса, который ведёт не менее прекрасный и злой Юрий (как его называют некоторые студент за уровень требований в ДЗ), так что давайте рассмотрим ещё один материал, который мы подготовили для вас.
Поехали.
Введение
Большую часть времени разработчики не придают значения управлению транзакциями. В результате либо большую часть кода приходится переписывать позже, либо разработчик реализует управление транзакциями без знаний того, как оно на самом деле должно работать или какие аспекты необходимо использовать конкретно в их случае.
Важный аспект в управлении транзакциями — определение правильных границы транзакции, когда транзакция должна начинаться и когда заканчиваться, когда данные должны быть добавлены в БД и когда они должны быть откачены обратно (в случае возникновения исключения).