Обновить
128K+

PostgreSQL *

Свободная объектно-реляционная СУБД

201,32
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Мы написали автономного агента для VACUUM/ANALYZE и запустили на 800+ тестовых БД: что из этого вышло

Время на прочтение9 мин
Охват и читатели5.5K

Как упростить управление целым парком из 800+ экземпляров СУБД на базе PostgreSQL? Можно доработать postgres_exporter, чтобы настроить получение метрик под себя. А если ещё проще? Мониторить связкой Grafana, Prometheus и кастомизированным postgres_exporter, а данные получать через ИИ‑отчёт, который будет агрегировать данные Prometheus через прямые PromQL‑запросы.

Но если и этого мало, то можно вообще поручить ИИ‑агенту типовые тикеты вроде очистки места на диске и плановой остановки БД.

Меня зовут Станислав Епишин, я из команды «R4C.Support.Всадники апокалипсиса» в СберТехе. Я уже писал, как мы дорабатывали postgres_exporter → pangolin_exporter, исправляя баг в расчёте длительности транзакций, и как внедряли связку Prometheus + Pipeliner + TaskTracker + GigaChat для автоматического создания тикетов.

В этой статье расскажу про R&D‑исследование для небольшой команды DBA, в котором мы тестировали гипотезу: получится ли собрать автономного агента, который сам будет обрабатывать тикеты: очищать дисковое пространство, выполнять VACUUM/ANALYZE и планировать остановки БД?

Здесь я описал инструкцию по созданию агента (с полным кодом и пояснениями) и развёрнутый реальный пример про автономный VACUUM/ANALYZE с обнаружением аномалий через LLM. Также покажу, как организовать ленту событий для мониторинга работы агента, и детально разберу, где и как в проекте используется LLM.

Читать далее

Новости

Записки оптимизатора 1С (ч.20). На сколько реально настройки Huge Pages для Postgres могут ускорить запросы 1С

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.9K

После прошлой статьи про Huge Pages мы получили несколько вопросов, в которых особо пытливые читатели возмущались отсутствием в статье реальных замеров «С HP» и «Без HP» и сравнением результатов. Материалов по этой теме в интернете крайне мало, а подобных замеров и подавно. Те же, что есть, все какие-то синтетические (в основном переводы зарубежных источников), оторванные от реальности, от работы информационных систем и, тем более, от 1С систем. Поэтому мы, как дотошные исследователи, решили закрыть этот гештальт и проверить всё самим.

Читать далее

pg_anon: как быстро обезличить базу 1С без промежуточной копии

Уровень сложностиПростой
Время на прочтение24 мин
Охват и читатели7K

База 1С:ERP размером 650 Гб. 74 секунды на поиск всех персональных данных. Маскирование прямо в дампе, без незащищенных копий. Четыре часа до готовой обезличенной копии. В статье все разбираю пошагово, с готовым мета-словарём, который можно взять для своей базы.

Читать далее

Миграции от ИИ агента: почему я бы не пускал их в прод без отдельного firewall

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели5.6K

ИИ агент отлично справляется с тем, что раньше раздражало своей механичностью: протянуть поле через модель и сериализатор, обновить тесты, поправить клиент, сгенерировать миграцию. Последний пункт выглядит особенно безобидно. ORM сама умеет строить DDL, агент всего лишь запускает знакомую команду, diff небольшой, тесты зелёные.

Но миграция — странный вид кода. Она может состоять из пяти строк и при этом иметь больший blast radius, чем изменение на тысячу строк в бизнес-логике. Ошибка в Python обычно ломает конкретный путь выполнения. Неудачный ALTER TABLE способен поставить в очередь запросы ко всей таблице, съесть пул соединений и превратить локальную правку схемы в отказ сервиса.

С появлением coding agents эта асимметрия стала заметнее. Генерировать изменения схемы стало почти бесплатно, а стоимость проверки не уменьшилась. Поэтому я бы рассматривал миграцию, созданную агентом, не как обычный файл в diff, а как привилегированный артефакт — примерно как изменение Terraform, Kubernetes RBAC или CI-секрета. Агент может его подготовить, но право пройти в production должно определяться отдельным набором проверок.

Читать далее

Новый функционал Dasha 1.8 дашборда PostgreSQL: рекомендации по индексам, ввод-вывод, анализ логов

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.3K

В прошлой статье о Dasha, описана версия 1.5.0. С тех пор вышли релизы с 1.5.1 по 1.8.1: в них появились рекомендации по индексам, страница ввода-вывода на pg_stat_io, проверки схемы и анализ логов с планами auto_explain, новые mcp tools.

Читать далее

Одна карточка на всех без сервера: детерминированная генерация, RLS и флаг retired в шахматном бинго

Время на прочтение4 мин
Охват и читатели5.2K

Разбираю несколько инженерных решений из небольшого браузерного проекта: бинго на шахматных задачах Lichess без собственного сервера. Как получить одну и ту же карточку у всех игроков в один день с помощью детерминированного сида, почему запись из пула данных нельзя удалять (флаг retired), как записать правило «одна партия в день» частичными уникальными индексами и почему политик RLS в Supabase недостаточно: по умолчанию клиентским ролям выданы права, в том числе TRUNCATE, который RLS не проверяет.

Читать далее

Apache Iceberg: Индиана Джонс и Каталог судьбы в Lakehouse

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели10K

В феврале этого года проект с красивым именем Polaris незаметно стал полноценным проектом фонда Apache. Новость прошла как-то мимо, ну стал и стал, мало ли. Между тем это одна из тех новостей, которые лет через пять, возможно, будут называть поворотной точкой. Потому что Polaris — это каталог. А каталог в мире Iceberg — то самое место, где на самом деле лежит власть над вашими данными.

Звучит громко, понимаю. Поясню, откуда такая уверенность.

Последние несколько лет хранилища данных строят по новой схеме: файлы лежат в объектном хранилище, поверх них открытый формат в виде метаданных, движки обработки живут отдельно в виде федеративного обработчика и ходят за данными. Схему назвали лейкхаусом (Data LakeHouse), а формат в ней почти везде один и тот же — Apache Iceberg. Вендоры за него отвоевались, открыли и согласовали, и все выдохнули. Данные наконец-то ничьи (формат parquet): лежат у вас, читаются чем угодно, никакой платформы-хозяина.

Выдохнули рано. Зависимость от вендора никуда не делась, она переехала на другой уровень — в каталог. Сервис с виду лаконичный, держит одну-единственную вещь, указатель на актуальную версию таблицы. Заодно через него идут права доступа и временные ключи от хранилища. Получается, кто держит каталог, тот и решает, какие движки увидят ваши данные, а какие останутся снаружи.

Начнём даже не с каталогов, а на шаг раньше — с того, что такое вообще Iceberg, вокруг которого последний год прыгают все вендоры.

Читать далее

Четверо в одной транзакции: кейс-батлы, PgBouncer под Prisma и реплика, которая показывает пустой инвентарь

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели8.9K

Обе мои предыдущие статьи про этот сайт с кейсами CS2 заканчивались списком того, чего в нём нет: платежей, депозита предметов, кейс-баттлов, рефералки, KYC. Список закрыт — и почти всё сложное в нём свелось к одному вопросу: что происходит, когда несколько человек одновременно двигают одни и те же деньги. Батл на четверых в одной транзакции, порядок блокировок, из-за которого не случается дедлок, PgBouncer под Prisma и правило чтения с реплики, которое нельзя выразить типом.

Читать далее

Одна буква «Е», две раскладки и 87 тысяч составов

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели10K

Задача звучала просто: посчитать, у скольких товаров в базе есть в составе хоть одна Е-добавка. Я думал, это работа на полчаса. Работа заняла вечер, и большая часть вечера ушла на одну букву.

Читать далее

Кнопка нажата, а ответа нет: как не потерять действие пользователя и не наделать дублей

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели9.7K

Пользователь нажал кнопку, сеть пропала, а браузер не знает, дошёл ли запрос до сервера. Повторите запрос — можно получить дубль. Не повторяйте — потеряете действие.

Показываю схему, которая решает обе проблемы: API без toggle, ключ идемпотентности в PostgreSQL, очередь в IndexedDB, Service Worker и проверка офлайна в Playwright. Это не полный offline-first — только защита действий в момент обрыва связи.

Разобраться с повторами

SQL‑инъекция через декомпиляцию: от JAR‑файла до захвата пароля

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели8.2K

SQL‑инъекция через декомпиляцию: от JAR‑файла до захвата пароля

Материал носит образовательный характер. Все работы велись легально, в рамках пентеста, с письменного согласия владельца системы и в изолированном контуре. Название клиента и продукта не раскрываем — NDA. Имена классов, пакетов и таблиц в листингах изменены. Применяйте это только на системах, доступ к которым у вас есть. Доступ к чужим системам без разрешения преследуется по закону.

Корпоративная Java‑система: складской учет, веб‑интерфейс, HTTPS. Внутри — SQL‑инъекция без аутентификации в одном GET‑запросе, из‑за строки «... WHERE ID=» + параметр.

Разберем, как найти такую в приложении без исходников: декомпиляция JAR → чтение сервлетов → уязвимая строка → подтверждение через pg_sleep. Каждый шаг воспроизводим.

Читать далее

Статьи по Go, которые стоит почитать

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели6.1K

Если посмотреть на самые обсуждаемые публикации Go‑сообщества последних месяцев, можно заметить любопытную закономерность. Среди них почти нет материалов про новые конструкции языка, generics или очередные изменения синтаксиса.

Зато много статей про диагностику утечек горутин, профилирование памяти, внутреннее устройство рантайма, особенности современных процессоров и эксплуатацию высоконагруженных PostgreSQL‑кластеров.

В 2026 году экосистема Go значительно «повзрослела». Сама спецификация языка уже стабилизировалась, и фокус инженерного внимания сместился в сторону эксплуатации (Production Engineering) — предсказуемости памяти, автоматической диагностики рантайма, управлению ресурсами железа и устойчивости баз данных под высокой нагрузкой.

На связи команда Golang‑инженеров Авито, а ниже — несколько публикаций, которые хорошо показывают этот сдвиг.

Читать далее

Каким по счёту ты родился

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.7K

Представь очередь. В ней все, кто когда-либо жил на Земле — от первого человека до ребёнка, родившегося минуту назад. Очередь длиной примерно в сто семнадцать миллиардов. Где-то в ней стоишь ты. Место у тебя есть с рождения, его никто не отнимет и не отдаст другому. Просто до сих пор никто его не называл.

Как посчитать порядковый номер человека по дате рождения, почему таблица из пятидесяти точек честнее плавной кривой, и как заставить Postgres держать анонимность ответов конструкцией, а не политикой — с одной дырой, которую я нашёл у себя сам.

Читать далее

Ближайшие события

Транзакции в Go через context: одна граница для нескольких репозиториев

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели6.9K

Как открыть транзакцию на уровне use case, передать её репозиториям без зависимости бизнес-логики от ORM и правильно обработать вложенные вызовы.

Читать далее

Так как же всё-таки искать с агентами по нормативке?

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели9.3K

Аналитик на вебинаре поинтересовался иерархическими индексами для нормативки: дерево «документ → статья → пункт», модель спускается от корня и выбирает ветку, как человек листает оглавление. И сразу про затраты: индексация — это проход по всему корпусу.

Я сравнил такой индекс с B-деревом. Потом сел считать, и сравнение выдержало.

В B-дереве на диске узел подгоняют под блок, чтобы реже перемещать головку. Здесь блок — эффективное окно маленькой модели, а движение головки — обращение к ней.

Прикинем. Шесть актов на ~200 страниц — глубина 2. 2M токенов — глубина 3. Навигатор читает 8–12 тысяч токенов вместо всего корпуса. А само дерево в законах уже есть: главы, статьи, части, пункты. Строится регекспами по нумерации, без модели. Затраты один раз и только за краткое описание внутренних узлов.

Навигатору остаётся выбрать одну из пятидесяти веток по короткому описанию. Это ближе к классификации, чем к рассуждению. В зале спросили, справится ли с этим модель на 1,5–3 млрд параметров. Интрига.

В статье разберём, какие есть способы получать точные ответы по юридически значимой документации.

Читать далее

Переезд с OpenCart 2 после двадцати лет работы: что лежит в дампе и откуда берутся восемь тысяч редиректов

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели5.4K

Разбираем переезд интернет-магазина с OpenCart 2 на Next.js и PostgreSQL. Магазин оптовый, электронные компоненты, сайту двадцать лет, в каталоге 4 751 товар. Если у вас OpenCart и вы думаете уезжать, то будет полезно почитать, что может всплыть в самый неожиданный момент.

Магазин запущен в боевом режиме, поэтому всё ниже про то, что уже перенесено и работает. Про трафик после переключения домена говорить рано, замера ещё нет. Обмен с учётной системой - отдельная большая тема, и здесь его нет.

Читать далее

DATAREON Platform под нагрузкой: настройка высоконагруженной интеграции DATAREON + PostgreSQL + REST

Время на прочтение7 мин
Охват и читатели6K

Всем привет! Я Дмитрий Пономарев, разработчик ESB ИТ-интегратора «Белый код»! Сначала всё выглядело довольно просто: забираем данные по REST API, обрабатываем и сохраняем в PostgreSQL. Проблемы начались, когда объём таблицы вырос до десятков миллионов строк, а несколько миллионов записей пришлось регулярно проверять заново.

В одном из проектов мы столкнулись именно с такой задачей. DATAREON Platform должен был получать данные через REST API, сохранять их в PostgreSQL, хранить историю состояний и каждый день повторно проверять актуальные записи. На небольших объёмах схема работала нормально, но после роста данных стало ясно: последовательная обработка и вычисление актуальной версии записи «на лету» больше не укладываются в рабочее окно.

В этой статье разберём, как мы перестроили интеграцию: вынесли актуальность записи в отдельный признак, добавили специализированные индексы PostgreSQL, распараллелили обработку через воркеры DATAREON и предусмотрели безопасное восстановление после сбоев. В итоге производительность промышленной актуализации удалось довести примерно до 1,1–1,2 млн объектов в час.

Читать далее

redb для бизнеса: программируем только бизнес, инфраструктура уже написана

Время на прочтение9 мин
Охват и читатели5.8K

С redb команда пишет только бизнес-логику: что экосистема заменяет, во что обходится, какие риски снимает и что важно знать до старта.

12 сентября вышла redb 4.0.0. Четыре продукта экосистемы (хранилище, интеграционный движок, рантайм и сервер идентификации) получили общий мажорный номер: 76 пакетов, внутренний аудит безопасности и сборку на .NET 10, который Microsoft поддерживает до ноября 2028 года. Для инженеров изменения разобраны в отдельной статье. Этот текст для тех, кто решает, на чём строить бэкенд: что экосистема заменяет, во что обходится, какие риски снимает и что важно знать до старта.

Коротко, из чего она состоит:

Читать далее

Анатомия FASTTRUNCATE: как 1С работает с временными таблицами в PostgreSQL

Время на прочтение19 мин
Охват и читатели6.4K

SELECT FASTTRUNCATE нет в документации PostgreSQL, но на боевой базе эта команда занимала 12.9% времени всех запросов. Разбираем, как платформа 1С на самом деле работает с временными таблицами, почему УНИЧТОЖИТЬ в запросе ничего не уничтожает и что изменилось в 8.3.25.

Читать далее

Зачем нужны векторные БД в эпоху LLM

Время на прочтение12 мин
Охват и читатели17K

Не открою секрет, если скажу, что обычный поиск по ключевым словам уже не особо помогает. Чтобы нейросети могли отвечать точно, опираясь на ваши корпоративные базы знаний, им нужно «понимать» смысл текста. А это уже сложнее, чем просто искать точные совпадения букв. 

В этой статье мы разберем, как устроены векторные базы данных, почему без них не работает современный RAG, чем они отличаются от привычных реляционных БД и как выбрать подходящий инструмент для своего проекта.

Читать далее
1
23 ...