프로젝트 소개
Goose는 명령줄 인터페이스와 Go 라이브러리로 모두 배포되는 데이터베이스 마이그레이션 도구입니다. SQL 또는 Go 함수로 작성된 증분 마이그레이션 파일을 통해 데이터베이스 스키마 진화를 관리합니다.
지원 데이터베이스에는 Postgres, MySQL, MariaDB, Spanner, SQLite, YDB, ClickHouse, MSSQL, Vertica, Redshift, TiDB, StarRocks, Turso, Azure SQL이 포함됩니다. 빌드 태그를 통해 불필요한 드라이버를 제외하여 바이너리 크기를 줄일 수 있습니다.
설치는 `go install`, macOS의 Homebrew 또는 사용자 정의 빌드를 통해 가능합니다. 구성은 명령 인수 또는 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`을 통해 등록되며 Go의 embed 패키지를 사용하여 바이너리에 포함할 수 있습니다. 시드 데이터와 임베디드 마이그레이션도 지원됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.