Об этом проекте
Goose — это инструмент для миграции баз данных, распространяемый как интерфейс командной строки, так и как библиотека Go. Он управляет эволюцией схемы базы данных с помощью инкрементальных файлов миграции, написанных либо на SQL, либо в виде функций Go.
Поддерживаемые базы данных включают Postgres, MySQL, MariaDB, Spanner, SQLite, YDB, ClickHouse, MSSQL, Vertica, Redshift, TiDB, StarRocks, Turso и Azure SQL. Бинарный файл можно уменьшить, исключив ненужные драйверы с помощью тегов сборки.
Установка доступна через `go install`, Homebrew на macOS или пользовательскую сборку. Конфигурация может передаваться как аргументы командной строки или через переменные окружения, такие как GOOSE_DRIVER, GOOSE_DBSTRING, GOOSE_MIGRATION_DIR и GOOSE_TABLE, включая загрузку из файлов `.env`.
CLI предлагает команды для создания миграций (`create`), их применения (`up`, `up-by-one`, `up-to`), отката (`down`, `down-to`, `reset`, `redo`), проверки состояния (`status`, `version`) и валидации файлов (`validate`, `fix`). Флаг `-allow-missing` позволяет выполнять миграции не по порядку, а для командной работы рекомендуется гибридный подход к версионированию, сочетающий временные метки с последовательной нумерацией.
SQL-миграции используют аннотации, такие как `-- +goose Up` и `-- +goose Down`, с опциональными маркерами `NO TRANSACTION` и `StatementBegin`/`StatementEnd` для сложных операторов. Подстановка переменных окружения может быть включена для каждого файла с помощью `ENVSUB ON`/`ENVSUB OFF`. Миграции на Go регистрируются через `goose.AddMigration` и могут быть встроены в бинарный файл с помощью пакета embed из Go. Также поддерживаются сидирование данных и встроенные миграции.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.