Об этом проекте
migrate — это инструмент миграции баз данных, написанный на Go, который можно использовать либо как интерфейс командной строки, либо импортировать как библиотеку в проекты на Go. Он был форкнут из mattes/migrate.
Как это работает: migrate читает файлы миграций из настроенного источника и применяет их в правильном порядке к целевой базе данных. Дизайн сохраняет драйверы баз данных легковесными и «глупыми» — migrate сам координирует логику и проверяет поведение, а драйверы избегают предположений или исправлений пользовательского ввода, выдавая ошибку при сомнении.
Поддерживаемые базы данных включают PostgreSQL, PGX v4 и v5, Redshift, Ql, Cassandra/ScyllaDB, SQLite, SQLite3, SQLCipher, MySQL/MariaDB, Neo4j, MongoDB, CrateDB, Shell, Google Cloud Spanner, CockroachDB, YugabyteDB, ClickHouse, Firebird, MS SQL Server и rqlite. Строки подключения используют формат URL, например dbdriver://username:password@host:port/dbname?param1=true, и зарезервированные символы URL должны быть процентно-закодированы.
Источники миграций включают локальную файловую систему, Go io/fs, Go-Bindata, pkger, GitHub, GitHub Enterprise, Bitbucket, GitLab, AWS S3 и Google Cloud Storage.
CLI — это тонкая обёртка вокруг библиотеки, корректно обрабатывает Ctrl+C (SIGINT) и намеренно избегает путей поиска конфигурации, конфигурационных файлов или магического внедрения переменных окружения. Базовый вызов выглядит так: migrate -source file://path/to/migrations -database postgres://localhost:5432/database up 2. Также публикуется Docker-образ (migrate/migrate).
Как библиотека Go, API описывается как стабильное и замороженное для релизов v3 и v4, использует модули Go, поддерживает корректную остановку через канал GracefulStop для предотвращения повреждения базы данных, позволяет использовать собственный логгер, внутренне использует потоки io.Reader для низкого потребления памяти и описывается как потокобезопасное без утечек горутин. Его можно использовать отдельно или с существующим клиентом базы данных через WithInstance.
Файлы миграций поставляются парами: миграции up и down, например 1481574547_create_users_table.up.sql и .down.sql. Проект указывает на руководство по началу работы, учебные пособия для CockroachDB и PostgreSQL, документацию по лучшим практикам написания миграций и FAQ. Версия v3 больше не поддерживается; поддерживаются линии v4 и master.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.