Перейти к содержимому

Не используй 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 #базыданных #архитектура