Как реализовать оптимистичные обновления через базу данных?

Senior
206 просмотров
AFK Offer AI

Оптимистичный подход: читаем данные, изменяем, сохраняем с проверкой что данные не изменились. С pg: UPDATE items SET data = $1, version = version + 1 WHERE id = $2 AND version = $3 RETURNING *. Если вернул 0 строк — conflict, retry. С Prisma нет встроенной поддержки, делаем через $executeRaw или проверку updatedAt. В высоконагруженных системах оптимистичные блокировки лучше пессимистичных (FOR UPDATE) — меньше ждём блокировки. Счётчик версий в каждой обновляемой таблице — стандартный паттерн.

Следующий вопрос

Как реализовать Transform Stream в Node.js?