RU

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

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

springspring frameworkjavaкэшированиетранзакциимикросервисыоптимизация кодапроизводительность приложенийRedis
Habr
RU

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

В прошлой статье про PostgreSQL я разбирал три инцидента на стороне базы — блокировки, bloat и ночные пересчёты. В комментариях несколько человек на…

hikaricpпул соединенийSpring BootPostgreSQLconnection poolJDBCтранзакциипроизводительностьconnection leakвысоконагруженные системы
Habr
RU

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

В прошлой статье я рассказывал, как мы перевозили терабайт банковской базы с Oracle на PostgreSQL без даунтайма. Там был раздел про производительнос…

PostgreSQLбазы данныхСУБДблокировкиdeadlockMVCCbloatтранзакциииндексыпроизводительность
Habr
RU

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

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

JavaSpring BootJDADiscord-ботPostgreSQLконкурентностьидемпотентностьтотализаторигровая экономикатранзакции
Habr
RU

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

Привет, Хабр! Меня зовут Степан Пестерников, мы с командой делаем Алису и активно используем СУБД Яндекса. Недавно коллеги из YDB провели большой ре…

ydbсубдбаза данныхтранзакцииgosdk
Habr
RU

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

Привет, Хабр! Меня зовут Степан Пестерников, мы с командой делаем Алису и активно используем СУБД Яндекса. Недавно коллеги из YDB провели большой ре…

ydbсубдбаза данныхтранзакцииgosdk
Habr
RU

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

В  прошлой статье  я разбирал платёжную платформу с точки зрения сметы: три слоя, где уходят человеко‑годы, что можно не пи…

архитектурафинтехплатёжная системаledgerидемпотентностьтранзакцииEIP.NETredbмикросервисы
Habr
RU

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

Приложение было живо. Health check зелёный, CPU холодный, логи чистые. Но ни один запрос не возвращался. Детективная история о том, как пять соедине…

spring-boottransactionalhikaricpconnection-pooldeadlockpostgresqlтранзакцииself-invocationopen-session-in-viewмикросервисы
Habr
RU

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

Когда у каждого репозитория есть свой Tx , код может выглядеть чисто, но атомарность всё равно сломается: один Store откатится, другой уже успеет за…

golanggoрепозиторийтранзакцииUnit of Workинтерфейсысервисный слойsqlc
Habr
RU

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

Пятница, вечер. Один эндпоинт начал отвечать восемь секунд вместо двухсот миллисекунд, а в Grafana всё зелёное. PostgreSQL редко падает громко — он…

postgresqlпроизводительностьidesqlиндексыvacuumbloatтранзакциитяжелые запросы
Habr
RU

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

with open() знают все. Но контекстные менеджеры в Python — это не только про файлы. Они помогают безопасно управлять соедин…

контекстные менеджерыPythonwithcontextmanagerasync Pythonтранзакцииработа с БДcleanupcontextlibasynccontextmanager
Habr
RU

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

Неделю назад я не думала, что буду писать базу данных . Начиналось всё с банального «хочу строчку в резюме». А получилось: LSM‑дерево, MVCC, снапшот…

scoriadblsm-treemvcckey-value databasegoтранзакцииcolumn families