КСУ: COW
Copy-on-Write (COW)
Copy-on-Write (COW) —
технология для СУБД, которая позволяет создавать копии рабочих баз данных для разработчиков:- быстро
- практически без затрат дискового пространства
Технология работает за счёт того, что база данных не копируется полностью. Вместо этого используется готовый слепок (snapshot) рабочей базы как общий начальный образ.
Все последующие копии работают поверх него и сохраняют только изменения («дельту» транзакций), которые и занимают место на диске.
Разработчикам и тестировщикам 1С необходимы актуальные копии продуктивной базы для поиска ошибок и тестирования нового кода. При традиционном подходе это приводит к ряду проблем:
- длительное время создания копии базы (чем больше объём, тем дольше процесс)
- высокие требования к дисковому пространству
- (например, при базе 5 Tb и 10 разработчиках требуется до 50 Tb хранения — 5 Tb × 10 копий)
- необходимость участия администраторов при восстановлении базы
- (разработчики обычно не имеют доступа и компетенций для самостоятельного развёртывания)
Решение: Copy-on-Write с Database Lab
Развёртывание копии продуктивной БД занимает 1.6 секунды (без учёта создания контейнера)
Каждая копия базы не дублирует исходные 5 Tb данных, а использует общий слой данных
После создания копии хранится только «дельта» изменений разработчика (обычно 5–10 Gb, зависит от объёма изменений)
Дополнительно используется реплика продуктивной БД объёмом около 500 Gb, которая поддерживается в актуальном состоянии через WAL-записи
Особенности продукта
- Размер БД: 5 Tb
- Создаётся снапшот с использованием ZFS
- Итоговый размер снапшота: около 500 Gb (зависит от уровня сжатия)
- Database Lab хранит сжатую реплику продуктивной БД: 500 Gb (всегда актуальные данные)
- создаётся снапшот состояния базы
- разворачивается БД на основе выбранного снапшота
- каждая копия для разработчика увеличивается только за счёт изменений (5–10 Gb)
- технология совместима с PostgreSQL и его форками (Postgres Pro, Tantor, Pangolin и др.)
- инфраструктура Database Lab использует Docker-контейнеризацию
- поддерживаются большинство Linux-подобных операционных систем
-
требуется ZFS или LVM + ext4/xfs
(при отсутствии ZFS сжатие реплики не применяется, и размер может составлять до 5 Tb)
Выводы
Ускорение разработки и тестирования за счёт:
- быстрого развёртывания базы
- отсутствия необходимости участия администраторов (автоматизация процессов)
Существенная экономия дискового пространства