home.social

#транзакции — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #транзакции, aggregated by home.social.

fetched live
  1. Refresh прошёл, сессия сломалась: разбираем ротацию токенов

    Две вкладки обновили токены. Оба запроса вернули 200 OK , а при следующем обновлении пользователя отправило на экран входа. Такое возможно даже с транзакцией и FOR UPDATE . Разберём, как это получается, почему повтор refresh не обязательно означает потерю ответа и как новый токен может пережить отзыв всего семейства. Последнюю гонку воспроизведём в двух соединениях PostgreSQL.

    habr.com/ru/articles/1096460/

    #аутентификация #postgresql #транзакции #jwt #backend #race_condition #refresh_token #управление_сессиями #ротация_токенов #read_commited

  2. Как не списать дважды за одну кнопку

    Между нажатием кнопки и результатом у нас проходит от трёх до шестидесяти секунд: очередь, воркер, внешний API, иногда таймаут. А снаружи — пользователь, у которого на счету ровно одна генерация, и палец, который очень хочет нажать ещё раз. Разбираю двухфазное списание: резерв при постановке в очередь, списание ровно зарезервированного при успехе, удаление строки при провале. Плюс мьютекс на пользователя через UNIQUE-индекс, почему цену нельзя пересчитывать при списании, что делать с резервами от умерших воркеров и зачем суточные лимиты обновлять скользящим окном, а не кроном в полночь.

    habr.com/ru/articles/1084302/

    #php #биллинг #транзакции #очереди #laravel #telegram_bot #идемпотентность

  3. @CacheEvict уходит раньше коммита, и кэш врёт до перезапуска

    В Spring кэш и транзакции существуют рядом, но не знают друг о друге — из-за этого корректный на первый взгляд код может приводить к расхождениям между данными в базе и кэше. Особенно легко столкнуться с такими сценариями при использовании @CacheEvict , когда порядок операций влияет на итоговое состояние приложения. В статье разберемся, почему Spring-кэш может сохранять несуществующие значения, как возникает проблема с откатами и какие подходы помогают сохранить согласованность данных. Разобрать кейс

    habr.com/ru/companies/otus/art

    #spring #spring_framework #java #кэширование #транзакции #микросервисы #оптимизация_кода #производительность_приложений #Redis

  4. Четверо в одной транзакции: кейс-батлы, PgBouncer под Prisma и реплика, которая показывает пустой инвентарь

    Обе мои предыдущие статьи про этот сайт с кейсами CS2 заканчивались списком того, чего в нём нет: платежей, депозита предметов, кейс-баттлов, рефералки, KYC. Список закрыт — и почти всё сложное в нём свелось к одному вопросу: что происходит, когда несколько человек одновременно двигают одни и те же деньги. Батл на четверых в одной транзакции, порядок блокировок, из-за которого не случается дедлок, PgBouncer под Prisma и правило чтения с реплики, которое нельзя выразить типом.

    habr.com/ru/articles/1084056/

    #postgresql #конкурентность #транзакции #дедлок #pgbouncer #prisma #репликация #кэширование #нагрузочное_тестирование #nestjs

  5. HikariCP в проде: три раза, когда пул соединений уронил сервис, и почему maximumPoolSize тут был ни при чём

    В прошлой статье про PostgreSQL я разбирал три инцидента на стороне базы — блокировки, bloat и ночные пересчёты. В комментариях несколько человек написали примерно одно и то же: «база базой, а покажи, что творилось на стороне приложения — пул-то небось тоже горел». Горел. Ещё как. Это продолжение того же разбора, но на слой выше — про HikariCP , дефолтный пул соединений в Spring Boot. Тот самый, который «просто работает», пока не перестаёт. Проекты те же, что и в статье про миграцию и в статье про PostgreSQL: банковская система после переезда с Oracle (терабайт, 70+ таблиц, 500–3000 RPS на чтение и 50–300 на запись в пике) и enterprise-платформа на Java/Spring, где PostgreSQL жил под Hibernate. Разные команды, разные нагрузки, но сюжет один: сервис встаёт, в логах Connection is not available , и первое, что делает любой человек, — лезет крутить maximumPoolSize . И почти всегда делает хуже. Это не туториал «как настроить HikariCP за 10 строк». Таких на Хабре хватает, и половина из них сводится к «поставьте пул побольше». Здесь — список мест, где у нас всё ломалось, в порядке от «это все знают, но всё равно наступают» до «поняли только в проде под нагрузкой». Если вы сейчас живёте на HikariCP — читайте как чеклист. Если уже прошли через это — сверьте, сколько совпало. Дисклеймер: проекты под NDA, названия, точные объёмы и часть деталей изменены. Порядок величин, конфиги и сами инциденты — настоящие.

    habr.com/ru/articles/1081494/

    #hikaricp #пул_соединений #Spring_Boot #PostgreSQL #connection_pool #JDBC #транзакции #производительность #connection_leak #высоконагруженные_системы

  6. PostgreSQL в проде: блокировки, bloat и ночные пересчёты. Три инцидента и как их чинили

    В прошлой статье я рассказывал, как мы перевозили терабайт банковской базы с Oracle на PostgreSQL без даунтайма. Там был раздел про производительность, и в комментариях несколько человек спросили примерно одно и то же: «а что конкретно вы дебажили и как?». Это продолжение. Три инцидента из двух разных проектов — банковской системы после миграции и enterprise-платформы на Java/Spring, где PostgreSQL жил под Hibernate. Разные домены, разные команды, но сюжет один: запрос, который вчера работал, сегодня не работает, а EXPLAIN показывает, что всё хорошо. Если вы пришли в PostgreSQL из Oracle или из мира, где база — это «то, куда ORM пишет», три четверти статьи будут про вещи, о существовании которых вы не подозревали. Я тоже не подозревал. Дисклеймер: проекты под NDA, названия, объёмы и часть деталей изменены. Порядок величин и сами инциденты — настоящие.

    habr.com/ru/articles/1079692/

    #PostgreSQL #базы_данных #СУБД #блокировки #deadlock #MVCC #bloat #транзакции #индексы #производительность

  7. Как я случайно напечатал инфляцию в Discord-боте и переделал ставки в тотализатор

    Всё, что ниже — из живого пет-проекта: бот начисляет участникам голосовых каналов баллы лояльности (LP), а на эти баллы люди устраивают пари в стиле Twitch Predictions.

    habr.com/ru/articles/1077434/

    #Java #Spring_Boot #JDA #Discordбот #PostgreSQL #конкурентность #идемпотентность #тотализатор #игровая_экономика #транзакции

  8. Регистр выбирают за минуту, а перепроводят историю выходными

    База 1С может годами работать «нормально», пока отчёты не начинают открываться минутами, а проведение документов — упираться в таймауты. В статье разберём архитектурные решения, которые тихо накапливают проблемы с производительностью, и покажем, как обнаружить их до дорогого перепроведения истории. Проверить архитектуру

    habr.com/ru/companies/otus/art

    #1С #архитектура_1С #регистры_накопления #производительность_1С #проектирование_системы #оптимизация_1С #планы_обмена #транзакции #блокировки #технический_долг

  9. Go SDK для YDB: уменьшаем количество запросов к СУБД для интерактивных транзакций

    Привет, Хабр! Меня зовут Степан Пестерников, мы с командой делаем Алису и активно используем СУБД Яндекса. Недавно коллеги из YDB провели большой рефакторинг в YDB Go SDK , где по умолчанию теперь используется новый Query Service. Я воспользовался этим рефакторингом, чтобы уменьшить количество сетевых запросов от SDK к YDB. Клиентские SDK устанавливают к распределённой СУБД Яндекса gRPC-подключения, поверх которых отправляются низкоуровневые команды. Какие-то из этих команд можно объединять: например, команду начала транзакции и выполнения первого запроса. В статье я покажу фрагменты кода и расскажу, как мы делали улучшения, которые вошли в релизы v3.126.0 и v3.126.5 Go SDK. Фрагменты кода получились небольшие, и на их примере удобно показать, как этими оптимизациями пользоваться.

    habr.com/ru/companies/yandex/a

    #ydb #субд #база_данных #транзакции #go #sdk

  10. База встала под нагрузкой: как найти, кто кого блокирует в PostgreSQL

    CPU и диск свободны, а сервис уже задыхается: транзакции ждут блокировок, соединения заканчиваются, база перестаёт отвечать. Разберём, как найти корневой процесс в PostgreSQL, отличить длинную транзакцию от конкуренции за строки и остановить каскадный сбой.

    habr.com/ru/companies/otus/art

    #PostgreSQL #блокировки #транзакции #дедлоки #pg_stat_activity #pg_blocking_pids #idle_in_transaction #LWLock #пул_соединений #высокая_нагрузка

  11. Go SDK для YDB: уменьшаем количество запросов к СУБД для интерактивных транзакций

    Привет, Хабр! Меня зовут Степан Пестерников, мы с командой делаем Алису и активно используем СУБД Яндекса. Недавно коллеги из YDB провели большой рефакторинг в YDB Go SDK , где по умолчанию теперь используется новый Query Service. Я воспользовался этим рефакторингом, чтобы уменьшить количество сетевых запросов для интерактивных транзакций. Клиентские SDK устанавливают к распределённой СУБД Яндекса gRPC-подключения, поверх которых отправляются низкоуровневые команды. Какие-то из этих команд можно объединять: например, команду начала транзакции и выполнения первого запроса. В статье я покажу фрагменты кода и расскажу, как мы делали улучшения, которые вошли в релизы v3.126.0 и v3.126.5 Go SDK. Фрагменты кода получились небольшие, и на их примере удобно показать, как этими оптимизациями пользоваться.

    habr.com/ru/companies/ydb/arti

    #ydb #субд #транзакции #go #sdk

  12. Референсная архитектура платёжной платформы на.NET: схемы, границы транзакций, модули, кластер

    В прошлой статье я разбирал платёжную платформу с точки зрения сметы: три слоя, где уходят человеко‑годы, что можно не писать. Главный вопрос, который она честно оставляла открытым, звучал так: окей, а как это собрать? Эта статья — ответ. Референсная архитектура: модель учёта, границы транзакций, разбиение на модули, топология кластера, маршруты интеграций и точки восстановления. С кодом и схемами. Оговорка сразу: это референс‑модель , а не выгрузка из конкретного прода. Код показывает реальный API и рабочие приёмы, но ваша модель учёта будет отличаться — и должна отличаться, об этом ниже отдельно. Стек: типизированное хранилище redb поверх PostgreSQL, интеграционный движок redb.Route , рантайм redb.Tsak и сервер идентичности redb.Identity . Всё Pro, всё бесплатно на линейке 3.x.

    habr.com/ru/articles/1064218/

    #архитектура #финтех #платёжная_система #ledger #идемпотентность #транзакции #EIP #NET #redb #микросервисы

  13. [Перевод] Атомарность в реактивных системах

    Ранее мы говорили о чрезвычайных ситуациях при вычислении инвариантов . Однако они также могут возникать и во время одновременных изменений нескольких исходных состояний. Давайте посмотрим, какие тут есть варианты поведения.. Читать транзакцию

    habr.com/ru/articles/1063664/

    #атомарность #транзакции #реактивное_программирование

  14. Django ORM ломается не там, где вы смотрели: шесть ошибок

    Django ORM умеет долго скрывать проблемы: лишние запросы, гонки при save() , затянувшиеся транзакции и выборки, которые незаметно съедают память. В статье разберём шесть типичных ошибок, которые редко проявляются на тестовых данных, зато быстро становятся заметны под нагрузкой.

    habr.com/ru/companies/otus/art

    #Django_ORM #QuerySet #оптимизация_запросов #PostgreSQL #транзакции #индексы #N+1 #блокировки #массовые_операции #производительность

  15. Дело о зависшем пуле: @Transactional, connection leak и deadlock в Spring Boot. Production-нуар

    Приложение было живо. Health check зелёный, CPU холодный, логи чистые. Но ни один запрос не возвращался. Детективная история о том, как пять соединений с базой держат в заложниках весь production. В деле: connection leak из легаси-отчёта, @Transactional , который вышел покурить вместе с чужим API, аннотация с фальшивым алиби, дуэль двух транзакций, REQUIRES_NEW с двойной бронью столиков — и один дворецкий, которого никто не подозревал, потому что его нанял сам фреймворк. Каждое преступление воспроизводится одной командой: демо-проект с Docker, Prometheus и Grafana прилагается. Открыть дело

    habr.com/ru/articles/1059234/

    #springboot #transactional #hikaricp #connectionpool #deadlock #postgresql #транзакции #selfinvocation #opensessioninview #микросервисы

  16. Как создать AI‑агента на Java: связка Spring AI + MCP

    В статье разбираем: как за пятнадцать минут превратить обычный метод с @McpTool в инструмент для модели, где проходит граница ответственности (решение принимает LLM — действует ваш код) и почему до прода доезжают единицы.

    habr.com/ru/companies/otus/art

    #Java #Spring_AI #MCP #AIагенты #Spring_Boot #LLM #backendразработка #JVM #транзакции #продакшен

  17. Как создать AI‑агента на Java: связка Spring AI + MCP В статье разбираем: как за пятнадцать минут превратить обычн...

    #Java #Spring #AI #MCP #AI-агенты #Spring #Boot #LLM #backend-разработка #JVM #транзакции

    Origin | Interest | Match
  18. [Перевод] Unit of Work в Go: практический гайд по транзакциям между репозиториями

    Когда у каждого репозитория есть свой Tx , код может выглядеть чисто, но атомарность всё равно сломается: один Store откатится, другой уже успеет закоммитить изменения. В статье показан более надёжный вариант для Go-кода: репозитории остаются небольшими интерфейсами, транзакционная логика уезжает в Unit of Work , а сервис работает с готовым набором хранилищ, построенных поверх одного sql.Tx . Разобраться в Go

    habr.com/ru/companies/otus/art

    #golang #go #репозиторий #транзакции #Unit_of_Work #интерфейсы #сервисный_слой #sqlc

  19. [Перевод] Unit of Work в Go: практический гайд по транзакциям между репозиториями Когда у каждого репозитория есть...

    #golang #go #репозиторий #транзакции #Unit #of #Work #интерфейсы #сервисный #слой #sqlc

    Origin | Interest | Match
  20. Как научить языковую модель читать транзакции: превращаем историю платежей в базу знаний

    Меня зовут Дмитрий Валов, я тимлид команды «Инструменты для банка (агенты)» в Sber AI Lab — Центре практического искусственного интеллекта Сбера. Большие языковые модели (LLM) научились отвечать на вопросы, писать код и анализировать документы. Логично спросить: «А может ли одна универсальная модель заменить зоопарк специализированных систем, которыми банк описывает своих клиентов?» Сегодня под каждую задачу — отток, кредитный риск, NBA — заводится отдельный пайплайн: свой набор фичей поверх истории транзакций, своё обучение, свои перетренировки при каждом изменении. Данные об одном и том же клиенте растаскиваются по разным системам и плохо переиспользуются. Сложнее всего — сопровождение и актуализация: стоит появиться новому источнику или фиче, как модель приходится переобучать, иначе она просто не умеет ими пользоваться. LLM выглядит идеальным кандидатом на роль единого интерфейса к этим данным: данные переводятся в текст, и новый источник достаточно дописать в промпт на инференсе, без переобучения. Но есть проблема: если просто скормить модели историю транзакций, она справляется заметно хуже специализированных моделей. В нашей работе FinTRACE мы разобрались, почему так происходит, и предложили способ это починить — не дообучая модель на огромных размеченных датасетах, а перестраивая то, что именно мы ей показываем. Статья принята на SIGIR 2026 .

    habr.com/ru/companies/sberbank

    #машинное_обучение_и_нейросети #llm #rag #retrievalaugmented_generation #транзакции #knowledge_base #антифрод #sber_ai_lab #эмбеддинги #finance

  21. Spring Boot 4, Flyway и Postgres: как не стрелять по ногам

    Разберемся, как на самом деле устроена интеграция Flyway в Spring Boot 4: что изменилось с появлением отдельного starter’а, как Boot прокидывает настройки и почему в связке с PostgreSQL одна неочевидная опция может намертво зависнуть миграцию

    habr.com/ru/articles/1047382/

    #flyway #миграции #postgresql #spring_boot #транзакции

  22. Spring Boot 4, Flyway и Postgres: как не стрелять по ногам Разберемся, как на самом деле устроена интеграция Flyway в Spring Boot 4: ...

    #flyway #миграции #postgresql #spring #boot #транзакции

    Origin | Interest | Match
  23. Как Jepsen ломает распределённые базы: разбор бага в CockroachDB

    Запись вернула ошибку, но значение всё равно оказалось в базе. Именно такие сбои Jepsen вытаскивает из распределённых систем: в статье разбираем реальный баг CockroachDB, путь от странного симптома до причины и то, почему на расследование ушло два месяца. Разобрать баг

    habr.com/ru/companies/otus/art

    #Jepsen #CockroachDB #распределённые_базы_данных #консистентность #линеаризуемость #сериализуемость #транзакции #отказоустойчивость #конкурентные_ошибки #тестирование_сбоев

  24. Ваш PostgreSQL болеет молча. Десяток запросов, чтобы это увидеть

    Пятница, вечер. Один эндпоинт начал отвечать восемь секунд вместо двухсот миллисекунд, а в Grafana всё зелёное. PostgreSQL редко падает громко — он неделями копит мёртвые строки, лишние индексы и зависшие транзакции, пока не станет совсем плохо. В статье — пять SQL-запросов из моего queries.sql, которыми я реально пользуюсь: bloat и dead tuples, топ тяжёлых запросов по pg_stat_statements, неиспользуемые индексы, висящие транзакции и блокировки. Работают на голом PostgreSQL 13+

    habr.com/ru/articles/1041480/

    #postgresql #производительность #ide #sql #индексы #vacuum #bloat #транзакции #тяжелые_запросы

  25. Ваш PostgreSQL болеет молча. Десяток запросов, чтобы это увидеть Пятница, вечер. Один эндпоинт начал отвечать вос...

    #postgresql #производительность #ide #sql #индексы #vacuum #bloat #транзакции #тяжелые #запросы

    Origin | Interest | Match
  26. Ваш PostgreSQL болеет молча. Десяток запросов, чтобы это увидеть Пятница, вечер. Один из эндпоинтов начал отвечат...

    #bloat #IDE #postgresql #sql #vacuum #индексы #производительность #транзакции #тяжелые #запросы

    Origin | Interest | Match
  27. Контекстные менеджеры в Python за пределами with open(): пишем свои и упрощаем код

    with open() знают все. Но контекстные менеджеры в Python — это не только про файлы. Они помогают безопасно управлять соединениями с БД, транзакциями, async‑ресурсами, временными настройками и cleanup‑логикой без бесконечных try/finally. В статье разбираем, как работают контекстные менеджеры, как писать свои через contextlib и где они реально упрощают продакшен‑код.

    habr.com/ru/companies/otus/art

    #контекстные_менеджеры #Python #with #contextmanager #async_Python #транзакции #работа_с_БД #cleanup #contextlib #asynccontextmanager

  28. Хотелось пополнить резюме, а написала LSM-движок с MVCC, снапшотами и Value Log на чистом Go

    Неделю назад я не думала, что буду писать базу данных . Начиналось всё с банального «хочу строчку в резюме». А получилось: LSM‑дерево, MVCC, снапшоты, Value Log, WAL, компакшн, Column Families и даже GC. Всё на чистом Go, без cgo. Плюс gRPC, REST, CLI и Docker из коробки. Рассказываю, как собирала конструктор, где наступала на грабли и почему fsync — это боль, и в конце даже небольшая любовная драма в CLI Узнать, что у меня получилось

    habr.com/ru/articles/1032208/

    #scoriadb #lsmtree #mvcc #keyvalue_database #go #транзакции #column_families

  29. «Алгоритмы на языке Go». Книга, которую ждали

    Привет, Хабр. Сегодня познакомим вас с самой долгожданной новинкой апреля — книгой «Алгоритмы на языке Go», которую мы успели выпустить в продажу 30 числа.

    habr.com/ru/companies/bhv_publ

    #Алгоритмы #Go #книги #криптография #транзакции #paxos

  30. PostgreSQL: транзакции, блокировки и почему Serializable падает

    Несколько лет назад я делал внутренние доклады по PostgreSQL для команды — разбирали транзакции, блокировки и уровни изоляции на живых примерах. Потом ушёл на другой стек, а недавно вернулся к PostgreSQL и пересмотрел свои записи. Материал до сих пор актуален — базовые концепции не изменились. В статье: почему UPDATE из двух сессий «висит», чем Read Committed отличается от Repeatable Read на практике, почему Serializable падает даже без логического конфликта, и как VACUUM на самом деле работает с мёртвыми строками. Всё с SQL-примерами, которые можно повторить.

    habr.com/ru/articles/1011996/

    #транзакции #блокировки #vacuum #postgresql #sql

  31. PostgreSQL: транзакции, блокировки и почему Serializable падает Несколько лет назад я делал внутренние доклады по PostgreS...

    #транзакции #блокировки #vacuum #postgresql #sql

    Origin | Interest | Match
  32. [Перевод] Почему так сложно создавать событийно-ориентированные системы?

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

    habr.com/ru/companies/bhv_publ

    #микросервисы #события #транзакции #распределенные_системы

  33. Переход MultiXactOffset на 64 бита в Postgres

    Ещё в 1987 году Майкл Стоунбрейкер в основополагающем документе «The Design of POSTGRES» написал, что транзакции должны быть 64-битными. Прошло почти 40 лет — и Postgres до сих пор живёт в мире 32-битных счётчиков. Но в декабре 2025 года в кодовую базу тихо вошёл мой коммит, который стал первым реальным шагом к тому, о чём думал Стоунбрейкер. Расскажу, что именно изменилось и почему это важнее, чем кажется.

    habr.com/ru/companies/postgres

    #postgresql #64битные_счетчики #MultiXactOffset #wraparound #транзакции #транзакции_в_бд #производительность #производительность_sql

  34. JDBC для профи: пулы, batch, транзакции и скрытые риски

    JDBC — технология, которую каждый Java-разработчик учил на курсах, но мало кто применяет правильно. В этой статье расскажу о лучших практиках работы с базами данных из Java-приложений, которые обеспечивают максимальную производительность в продакшене.

    habr.com/ru/companies/otus/art

    #java #JDBC #Базы_данных #Оптимизация_производительности #Connection_Pool #Batch_processing #Транзакции

  35. Цена ошибки: почему антифрод-системы блокируют ваши покупки, но пропускают мошенников на миллиарды

    Почему ваша банковская карта может быть заблокирована, когда вы покупаете кофе в другом городе, хотя мошенники умудряются отмывать миллиарды? В этой статье мы подробно рассмотрим, как работают системы защиты от мошенничества, объясним, что такое компромисс между прецизионностью (точностью) и полнотой на понятном примере, проанализируем потерю $3,1 миллиарда у TD Bank и поговорим о том, как банки и киберзлоумышленники соревнуются, используя Adversarial AI (враждебный искусственный интеллект).

    habr.com/ru/articles/1002092/

    #антифрод #мошенничество #precision #recall #TD_Bank #false_positive #bank_of_america #враждебный_ИИ #платежи #транзакции

  36. Bitcoin — ответы на редкие, но важные вопросы

    Как взломать Bitcoin? Как блокчейн считает время? Как меняется сложность майнинга? Что будет если два майнера одновременно смайнили блок? Где хранятся транзакции до подтверждения, как высчитывается их комиссия и можно ли отправить без нее? Какие узлы есть в блокчейне и чем они отличаются? Когда можно пользоваться наградой от майнинга?

    habr.com/ru/articles/988260/

    #Bitcoin #майнинг #транзакции #узлы #квантовый_компьютер #Атака_51

Share on Mastodon

Enter the server where you have an account.