EterDB: форк Postgres с отменой отдельных транзакций для отката ошибок ИИ-агентов

На Hacker News, в разделе Show HN (витрине авторских проектов), представили EterDB, форк Postgres с отменой на уровне транзакции: инструмент откатывает не всю базу данных, а одну конкретную плохую транзакцию. Продукт совместим с PostgreSQL 18, а по заявлению создателей драйверы, SQL-запросы и расширения при переходе на форк остаются прежними.

Заявленный набор возможностей: отменить один UPDATE, DELETE или целую бракованную пачку записей уже после того, как она закоммичена, причём откат «хирургический», меняются только строки, которые затронула сама транзакция, а весь остальной массив данных остаётся нетронутым. EterDB отслеживает не только записи, но и чтения, поэтому умеет находить более поздние транзакции, которые опирались на уже испорченные данные: их можно откатить вместе с исходной ошибкой или просто увидеть, в чём расхождение, обычный бэкап так не умеет, он отматывает назад сразу всё. Отдельно заявлена «починка схемы»: удалённую миграцией колонку или таблицу можно вернуть вместе со значениями, не восстанавливая базу целиком, и «путешествие во времени», прочитать таблицу такой, какой она была в любой момент в прошлом, и откатить целое временное окно одной командой. История хранится по принципу «только дописывание» и никогда не чистится, поэтому отменить можно и транзакцию многомесячной давности.

Инструмент явно рассчитан на автоматизацию: по заявлению разработчиков, каждое восстановление выполняется одной командой, а вывод в формате --json со стабильными кодами возврата предназначен для вызова из скриптов и самих же ИИ-агентов. Эта адресация видна и в оформлении сайта: во всех трёх демонстрациях отката агент, вызвавший восстановление, подписан как сессия Claude Code, а слоган лендинга гласит «нас любят агенты, которые ломают вашу базу данных». Один из демо-сценариев, вымышленная закупочная ERP-система «Avengers» с 42 открытыми заказами на закупку, $8,4 млн товарных запасов, 17 поставщиками и 9 счетами к оплате, иллюстрирует, как выглядит восстановленная после сбоя таблица; это постановочный пример для лендинга, а не описание реального клиента или реального инцидента.

На странице продукта не названы ни компания, ни основатель, ни состав команды, таких сведений нет нигде в тексте. Цена не названа, а вот лицензия и способ поставки известны: движок и CLI eter распространяются под Apache 2.0, разворачивается EterDB самостоятельно, командой docker compose up, на собственной базе; отдельная размещённая многоарендная control plane в открытый репозиторий не входит, и её условия не описаны. Механизм «отслеживания зависимостей по чтениям» на лендинге раскрыт только в маркетинговых терминах, но отдельный разбор «как это работает» на eterdb.com/tech описывает его по шагам: запись фиксируется логическим декодированием WAL при включённом REPLICA IDENTITY FULL, а чтение, логикой SSI (предикатные блокировки, рёбра rw-антизависимости) в режиме observe под READ COMMITTED, причём прочитанная строка опознаётся по паре «таблица плюс первичный ключ».

Ключевые факты

  • EterDB, форк Postgres, совместимый с PostgreSQL 18, с отменой на уровне транзакции: убирает один UPDATE, DELETE или целую бракованную пачку записей уже после коммита, не восстанавливая всю базу.
  • Откат «хирургический», меняются только строки, которые задела сама транзакция; EterDB также отслеживает чтения и находит более поздние транзакции, зависевшие от испорченных данных, тогда как обычный бэкап откатывает сразу всё.
  • Можно вернуть удалённую миграцией колонку или таблицу вместе со значениями без полного восстановления, читать таблицу такой, какой она была в любой момент в прошлом, и откатывать целое временное окно одной командой; история хранится без ограничения по сроку и никогда не чистится.
  • Все три демонстрации отката на сайте подписаны как сессия Claude Code, а слоган лендинга, «нас любят агенты, которые ломают вашу базу данных»: продукт прямо адресован ошибкам ИИ-агентов, пишущих в боевую базу.
  • На странице EterDB не названы ни компания, ни команда, ни цена; лицензия (Apache 2.0) и способ хостинга (самостоятельное развёртывание через docker compose up) названы. Демо-сценарий вымышленной ERP-системы «Avengers» (42 заказа на закупку, $8,4 млн запасов, 17 поставщиков, 9 счетов к оплате), постановочная иллюстрация, а не реальный случай.

Почему это важно

Рост числа ИИ-агентов с доступом на запись к боевым базам данных, в демонстрациях на сайте EterDB такая сессия прямо подписана как Claude Code, делает старый рецепт восстановления, полный откат из бэкапа, слишком грубым: он останавливает всю систему и вместе с плохой транзакцией отменяет и все хорошие записи, сделанные после неё. EterDB предлагает более точный инструмент для того же нового класса инцидентов, не «перемотать всё», а вернуть ровно те строки, которые задела одна плохая транзакция, и отдельно учесть более поздние записи, которые от неё зависели. Сам факт появления форка Postgres, который на сайте адресован прежде всего ошибкам автономных кодовых агентов, а чинит при этом любую плохую запись независимо от того, кто её сделал, агент или человек, показывает: для этого класса сбоев начинает складываться отдельная категория инструментов восстановления.

Кому это важно

В первую очередь, командам, которые уже дали ИИ-агентам вроде Claude Code доступ на запись к боевой базе Postgres и ищут более быстрый и точный способ отката, чем полное восстановление из бэкапа. Также, администраторам баз данных и бэкенд-инженерам, которым нужно отменить отдельную ошибочную транзакцию или миграцию без остановки всей системы. Тем, кому нужна поддержка СУБД помимо Postgres или готовое управляемое облачное решение, EterDB пока не подходит либо требует уточнения: сайт не говорит о поддержке других баз, а модель хостинга называет, EterDB разворачивают самостоятельно, двумя контейнерами с общим томом, на любой среде с контейнерами (Kubernetes, Cloud Run, Fargate, Docker Desktop); готового управляемого облачного варианта при этом не описывает.

Как это применить

По заявлению разработчиков, каждое восстановление выполняется одной командой, а вывод в формате --json со стабильными кодами возврата рассчитан на вызов из скриптов и самих ИИ-агентов. Так можно: откатить один UPDATE или DELETE; откатить целую бракованную пачку записей уже после коммита; вернуть удалённую миграцией колонку или таблицу вместе со значениями без восстановления всей базы; прочитать таблицу такой, какой она была в любой момент в прошлом, и откатить целое временное окно одной командой. Инструмент совместим с PostgreSQL 18, а стандартные драйверы, SQL-запросы и расширения, по заявлению создателей, менять не требуется. Цена на сайте не указана, это придётся выяснять напрямую у авторов; лицензия и способ развёртывания названы: движок и CLI распространяются под Apache 2.0, а разворачивается EterDB самостоятельно, командой docker compose up.

Можно ли доверять

Это типичный пост в разделе Show HN, витрине Hacker News для авторских проектов, без объявленной компании, имени основателя или состава команды: на сайте EterDB таких сведений нет вообще. Все демонстрации отката на лендинге постановочные: например, сценарий вымышленной закупочной ERP-системы «Avengers» (42 открытых заказа на закупку, $8,4 млн товарных запасов, 17 поставщиков, 9 счетов к оплате), прямо иллюстративный пример, а не описание реального инцидента у реального клиента. То есть все нынешние заявления о возможностях EterDB, это самоописание продукта его же создателями, без независимого подтверждения боевой эксплуатации.

Риски и подводные камни

История правок копится вечно и не чистится, на eterdb.com/tech сказано, что она растёт на один образ строки на каждую запись в отслеживаемую таблицу; базовые бэкапы и WAL по умолчанию хранятся, но ограничены настройками ETER_BACKUP_RETAIN_COUNT и ETER_BACKUP_HORIZON_DAYS, при этом бэкапы, это полные физические копии, а REPLICA IDENTITY FULL добавляет нагрузку на запись при широких строках. Там же приведены замеры: около 3% накладных расходов на чтение и около 13% на запись в режиме observe, ещё около 10%, на захват записей вне пути коммита; при включённом observe запросы выполняются без параллельных воркеров. Механизм «отслеживания зависимостей по чтениям» на лендинге описан только в маркетинговых терминах, но разбор «как это работает» на eterdb.com/tech раскрывает и его полноту: по словам авторов, при нехватке памяти предикатные блокировки огрубляются и граф зависимостей становится избыточным, но реальное ребро не теряется никогда; их тестовый стенд держит 100% recall по рёбрам чтения, а патч проходит изоляционный (119/119) и регрессионный (231/231) наборы тестов PostgreSQL 18 при выключенном режиме observe. Это самоотчёт авторов, без независимой проверки. EterDB, форк, а не надстройка над обычным Postgres, поэтому каждое будущее обновление PostgreSQL зависит от того, успеют ли за ним авторы форка. Лицензия и способ хостинга известны: движок и CLI, Apache 2.0 (патч к WAL, по README, распространяется под лицензией самого PostgreSQL), разворачивается EterDB самостоятельно, двумя контейнерами; неизвестна только цена. А выяснить до того, как ставить инструмент на боевые данные, стоит и другое: автор в посте Show HN сам предупреждает, что проект, по его словам, ещё далёк от готовности к боевой эксплуатации.

«Нас любят агенты, которые ломают вашу базу данных.»

— слоган на сайте EterDB