Снова про Postgres
Mar. 8th, 2026 06:27 pmРаз уж подял всю эту тему про PostgreSQL.
... Оказывается, я слоупок (никогда такого не было, и вот опять). Один хороший человек давным-давно написал утилиту под названием "pgcopydb". Пакет с ней есть в репозиториях PGDG. Эта утилита выполняет пресловутый "pg_dump | pg_restore", но в несколько потоков и без необходимости писать в промежуточные файлы. Плюс умеет ещё в разную магию наподобие декодирования WAL-ов и "досылки" изменений.
... Не я первый, не я последний столкнулся с проблемой копирования этих самых BLOB-ов. Некий индус тоже не выдержал и написал свой скрипт на питоне, который копирует BLOBы. Утверждает, что ему удается сократить время копирования в сто раз за счёт многопоточности. Хотя мне пока что непонятно как потом эти OID-ы приводить в соответствие между "старыми" и "новыми" таблицами.
... И на самом деле все эти пресловутые "Large Objects" есть ни что иное как... та-да-а-а-ам... bytea-поля в отдельной таблице под названием "pg_largeobject". Просто Postgres "из коробки" предоставляет для них набор готовых wrapper-функций. Блин, а разговоров-то... И чего я раньше эту статью не нашёл. Так что вопрос переделки софта с LO OIDS на bytea-поля обретает внезапную актуальность.
... В природе существует готовое расширение "dblink", которое позволяет нативно выполнять запросы к другой базе данных. То есть технически возможно скопировать сперва только реляции, а BLOB-ы затаскивать в новую базу по мере обращения к ним. Если ничего лучше не придумаю, то попрошу программиста вставить небольшой кусок кода в приложение, который будет эксплуатировать этот dblink. Тоже вариант.
А так, попробую сперва вариант с pgcopydb + SSD. Может и прокатит.