Не используй Postgres для всего, пока не посмотришь это
Матвей Попов
0:00 / 0:00
Не используй Postgres для всего, пока не посмотришь это
1 568 просмотров · 9 часов назад
Матвей Попов
2,63 тыс. подписчиков
1 568 просмотров · 9 часов назад
Может ли PostgreSQL заменить Redis, MongoDB, Elasticsearch и RabbitMQ? Что скрывается за советом «Just Use Postgres» и где заканчивается удобство одной базы на всё?
В этом видео разбираем подход на SQL-примерах, собственных экспериментах и историях компаний. Посмотрим, как хранить документы, делать поиск, кэш и очереди в Postgres. Проверим, почему очередь замедляется из-за долгой транзакции, как NOTIFY ограничивает параллельную запись и что происходит, когда все задачи приложения живут в одном кластере.
В этом видео:
— Откуда появился тренд Just Use Postgres и что нам обещают его сторонники
— JSONB вместо MongoDB: гибкая схема, GIN-индексы и цена обновления документов
— Полнотекстовый поиск вместо Elasticsearch: tsvector, ранжирование и ограничения
— Кэш вместо Redis: UNLOGGED-таблицы, очистка и поведение после сбоя
— Очереди вместо RabbitMQ: SKIP LOCKED, повторная обработка и гарантии доставки
— LISTEN/NOTIFY для Pub/Sub и возможность объединить всё одной транзакцией
— Как MVCC, долгие транзакции и VACUUM влияют на очередь и её индексы
— Почему общий замок в NOTIFY становится ограничением под нагрузкой
— Единственный кластер: общая точка отказа и предел масштабирования записи
— Что произошло у Trigger.dev, Recall.ai и Quo и когда Postgres действительно достаточно
━━━ Материалы из видео ━━━
Just Use Postgres for Everything — эссе Стефана Шмидта
https://www.amazingcto.com/postgres-f...
37signals — Solid Queue и 20 миллионов задач в день в HEY
https://dev.37signals.com/solid-queue...
Trigger.dev — инцидент с зависшим горизонтом MVCC и VACUUM
https://trigger.dev/blog/stopping-xmi...
Recall.ai — проблемы масштабирования LISTEN/NOTIFY
https://www.recall.ai/blog/postgres-l...
Quo — почему хранилище Temporal переросло Postgres и переезжает на Cassandra
https://www.quo.com/blog/postgres-to-...
━━━ Таймкоды ━━━
00:00 Введение: Just Use Postgres
02:04 Postgres вместо MongoDB
03:59 Postgres вместо Elasticsearch
06:09 Postgres вместо Redis
07:52 Postgres вместо RabbitMQ
09:59 Postgres вместо Pub/Sub
11:49 Одна транзакция на всё
12:34 Проблема: MVCC и VACUUM
18:14 Проблема: LISTEN/NOTIFY
21:06 Проблема: Единственный кластер
23:54 Выводы
━━━━━━━━━━━━
#postgresql #systemdesign #highload #backend #базыданных #архитектура