Многие разработчики используют шаблонные базы данных для настройки дев-окружений. Суть подхода в следующем: вы запускаете один экземпляр Postgres для разработки и при необходимости создаёте/удаляете базы данных. При этом база данных для разработки создаётся на основе шаблона, который синхронизирован со схемой продакшена.
Для распределённых команд, использующих облачные решения, шаблонная база — это экономичный и безопасный способ работы.
Преимущества использования шаблонной базы данных для разработки:
● Упрощает работу с расширениями, конфигурацией Postgres, управлением версиями и установкой зависимостей — всё, что обычно замедляет локальную разработку
● Обеспечивает соответствие схемы продакшену, так как шаблон можно быстро создать из полной копии базы без данных
● Сокращает время на развёртывание и удаление дев-машин
● Позволяет использовать анонимизированные тестовые данные, подходящие для разработки
Подробнее о шаблонных базах данных
➡️ Создайте шаблон на основе продакшена, выгрузив только схему и расширения:
pg_dump -U my_user -h my_host -p 5432 -d my_database --exclude-table-data --no-owner --no-privileges > template.sql
Флаг
--exclude-table-data исключает данные, но сохраняет полную схему и все расширения.➡️ Создайте базу и восстановите в неё шаблон:
-- создаём базу
CREATE DATABASE my_template_db OWNER postgres;
-- восстанавливаем из дампа
psql -U my_user -h my_host -p 5432 -d my_template_db -f template.sql
Добавьте сид-данные на этом этапе. Это позволит быстро клонировать шаблон без необходимости повторного восстановления.
➡️ Разрешите использовать базу как шаблон:
ALTER DATABASE my_template_db IS_TEMPLATE TRUE;
Важно: использовать шаблонные базы можно только от имени суперпользователя Postgres. На платформе Crunchy Bridge это поддерживается, но не все облачные провайдеры предоставляют доступ к суперюзеру.
➡️ Создайте новую базу на основе шаблона:
CREATE DATABASE new_db WITH TEMPLATE my_template_db OWNER my_user;
Это создаст копию
my_template_db под именем new_db➡️ Обновите строку подключения, чтобы использовать новую базу в разработке — и можно начинать писать код.
👉 @SQLPortal
