Инструментарий сопровождения и разработки для СУБД PostgreSQL переживает заметную эволюцию: граница между изоляцией базы данных и прикладным кодом становится все более прозрачной. Разработчики больше не согласны тестировать сложные политики безопасности на неточных моках, а привычные десктопные административные клиенты вынуждены отказываться от тяжелого Electron в пользу легковесного Tauri и встраивать серверы протокола MCP для прямого взаимодействия с автономными AI-агентами. Сентябрьские обновления официальной ленты PostgreSQL наглядно показывают, как эти тренды меняют рабочий процесс инженеров.
pgsql-test
Бизнес-логика, реализованная на уровне СУБД — внешние ключи, триггеры, ограничения и особенно политики безопасности на уровне строк (Row-Level Security, RLS), — традиционно выпадала из быстрого цикла обратной связи разработчиков. Тестовые фреймворки в TypeScript или Python обычно проверяют код приложения через моки, но мок не способен проверить, вернет ли реальный PostgreSQL нужную строку под конкретной ролью или случайно допустит утечку конфиденциальных данных.
Открытая библиотека pgsql-test под лицензией MIT решает эту проблему, запуская эфемерный инстанс PostgreSQL непосредственно внутри существующих тестовых раннеров. База инициализируется один раз, а каждый тестовый кейс заворачивается в транзакцию и автоматически откатывается после проверки:
import { getConnections } from 'pgsql-test';
let db, teardown;
beforeAll(async () => {
// Запуск свежей эфемерной базы данных и накат схемы проекта
({ db, teardown } = await getConnections());
});
afterAll(() => teardown());
beforeEach(() => db.beforeEach());
afterEach(() => db.afterEach());
test('Пользователь видит только свои документы через RLS', async () => {
// Установка контекста сессии и роли приложения через SET LOCAL
db.setContext({
role: 'authenticated_user',
'jwt.claims.user_id': '11111111-1111-1111-1111-111111111111'
});
const result = await db.query(
'SELECT id, title FROM app.documents ORDER BY id'
);
// В выборку попадают только строки, разрешенные политикой RLS для данного пользователя
expect(result.rows).toEqual([{ id: 101, title: 'Личный отчет' }]);
});
В тестах Supabase и Drizzle подход с транзакционным откатом показал выполнение сотен тестов по десяткам баз данных всего за несколько секунд, позволяя проверять безопасность еще до отправки кода в репозиторий.
PostgresCompare 2.2.0
Разработчики утилиты сравнения и синхронизации схем PostgresCompare представили версию 2.2.0, ставшую крупнейшим архитектурным обновлением продукта. Приложение полностью переписано с Electron на базе Rust-фреймворка Tauri. В результате вдвое снизилось потребление оперативной памяти, уменьшился размер дистрибутива, а клиент получил встроенный механизм автоматических обновлений на Linux, macOS и Windows.
Ключевым технологическим добавлением стал встроенный сервер Model Context Protocol (MCP), позволяющий подключать к анализу различий схем внешних AI-ассистентов:
# Запуск PostgresCompare в режиме MCP-сервера для агентов разработки
pgc mcp serve --read-only --config ./database-pipelines.json
Через интерфейс MCP агенты могут исследовать структуру таблиц, выявлять дрейф схем между средами разработки (dev → staging → prod), формировать скрипты миграций и запрашивать объяснения конкретных различий в DDL без ручного экспорта файлов.
SQL Manager for PostgreSQL 7.0
Компания EMS Software Development выпустила мажорный релиз SQL Manager 7.0, в котором центральное место занял встроенный AI-ассистент для автоматизации повседневных задач администрирования. Инструмент умеет не только объяснять синтаксис сложных запросов и расшифровывать планы выполнения EXPLAIN, но и генерировать комплексные DDL-миграции по текстовому описанию требований.
Принципиальным аспектом новой реализации стал контроль за приватностью данных:
- Контекстное ограничение: Администратор может точно определить, какая часть метаданных базы передается в модель — вплоть до отдельной изолированной таблицы.
- Поддержка локального рантайма Ollama: Для работы в закрытых корпоративных контурах с повышенными требованиями к безопасности запросы направляются в локально развернутые открытые модели без передачи схем данных во внешние облачные API.
Согласованное развитие инструментов тестирования и администрирования демонстрирует зрелость экосистемы: правила доступа и структуры данных становятся полноправными участниками автоматизированных инженерных конвейеров.
