PgQue - управление очередями в Postgres без лишнего раздувания. Один SQL-файл для установки, pg_cron для отслеживания прогресса.Большинство очередей
PostgreSQL используют операторы SKIP LOCKED плюс DELETE и/или UPDATE. Это работает в простых примерах, но затем приводит к появлению "мертвых" кортежей, перегрузке VACUUM, раздуванию индексов и снижению производительности при длительной нагрузке.PgQue избегает целого класса проблем. Он использует пакетную обработку на основе снимков и ротацию таблиц с помощью команды TRUNCATE вместо удаления каждой строки. Путь "горячей точки" остается предсказуемым:- отсутствие избыточности по задумке: никаких ненужных кортежей в основном пути очереди.
- отсутствие снижения производительности: программа не замедляется даже после нескольких месяцев работы.
- создана для систем с высокой нагрузкой: для режима длительной нагрузки, для которого и была разработана оригинальная архитектура
PgQ.- настоящие гарантии
PostgreSQL: ACID-транзакции, блокировка/потребление транзакций, WAL, резервное копирование, репликация, прозрачность SQL-запросов.- работает на управляемых серверах
PostgreSQL: без пользовательской сборки, без расширений на C, без отдельного демона.PgQue обеспечивает семантику очередей внутри PostgreSQL, сохраняя при этом надежность и транзакционное поведение PostgreSQL, без излишнего раздувания, которое в конечном итоге возникает при использовании большинства очередей внутри баз данных.Для команд, которым нужен надежный поток событий внутри
PostgreSQL. Модель ближе к Kafka (логи), чем к ActiveMQ или RabbitMQ (очередь сообщений задач). Общий журнал событий, независимые курсоры для каждого потребителя, отсутствие раздувания под постоянной нагрузкой. Чистый SQL и PL/pgSQL, любая версия PostgreSQL 14+ - управляемая или самодостаточная, без демона-дополнения.https://github.com/NikolayS/pgque
Опубликовано в @gitgate
#postgres #vacuum