팀과 환경 전반에서 일반 SQL 데이터베이스 마이그레이션을 관리하는 경량 프레임워크 독립형 CLI 도구입니다.
pressly/goose
버전 관리되는 SQL 파일이나 Go 함수로 데이터베이스 스키마 변경을 관리하는 CLI 및 Go 라이브러리입니다.
- 스타
- 11,599
- 포크
- 719
- 열린 이슈
- 145
- 마지막 커밋
- 3일 전
어떤 프로젝트인가요?
Goose는 명령줄 프로그램으로 실행하거나 Go 라이브러리로 가져와 사용할 수 있는 데이터베이스 마이그레이션 도구입니다. 스키마 변경을 점진적 마이그레이션으로 관리하며, 각 마이그레이션은 순방향으로 적용하거나 역방향으로 롤백할 수 있고 데이터베이스에 적용된 버전도 추적합니다.
마이그레이션은 up 및 down 주석이 있는 일반 SQL 파일이나, 직접 만든 바이너리에 등록하는 Go 함수로 작성할 수 있습니다. Postgres, MySQL, MariaDB, SQLite, Spanner, ClickHouse, MSSQL, Vertica 등 다양한 데이터베이스를 지원하며, embed 패키지를 사용해 마이그레이션 파일을 Go 바이너리에 포함할 수 있습니다. 그 밖에 순서가 맞지 않는 마이그레이션 처리, SQL 파일의 환경 변수 치환, 타임스탬프 기반 마이그레이션을 프로덕션용 순차 번호로 변환하는 fix 명령도 지원합니다.
사용하지 않는 드라이버는 빌드 태그로 빌드 시 제외해 바이너리 크기를 줄일 수 있습니다.
핵심 기능
- 01SQL 마이그레이션과 Go 함수 마이그레이션을 실행합니다.
- 02Postgres, MySQL, MariaDB, SQLite, Spanner, ClickHouse, MSSQL 등을 지원합니다.
- 03embed.FS를 사용해 마이그레이션 파일을 Go 바이너리에 포함합니다.
- 04순서가 맞지 않는 마이그레이션과 순차 번호로 변환하는 fix 명령을 지원합니다.
- 05SQL 마이그레이션 파일의 환경 변수를 치환합니다.
활용 사례
- Postgres나 MySQL을 사용하는 Go 백엔드의 스키마 버전을 관리합니다.
- 배포 가능한 단일 바이너리에 데이터베이스 마이그레이션을 포함합니다.
- CI에서 스키마 변경을 실행해 여러 환경에 마이그레이션을 일관되게 적용합니다.
빠른 시작
- 1
Go로 goose CLI 설치하기
go install github.com/pressly/goose/v3/cmd/goose@latest - 2
SQLite 데이터베이스의 마이그레이션 상태 확인하기
goose sqlite3 ./foo.db status - 3
사용 가능한 마이그레이션 모두 적용하기
goose sqlite3 ./foo.db up
사용 전 알아둘 점
- README에 따르면 CLI의 각 명령에는 데이터베이스 드라이버와 연결 문자열이 필요하므로 데이터베이스를 직접 준비해야 합니다.
- go install로 CLI를 설치하려면 Go가 필요합니다. Homebrew는 macOS 사용자에게만 제공됩니다.
토픽
자주 묻는 질문
- goose은(는) 무엇인가요?
- 버전 관리되는 SQL 파일이나 Go 함수로 데이터베이스 스키마 변경을 관리하는 CLI 및 Go 라이브러리입니다. Goose는 명령줄 프로그램으로 실행하거나 Go 라이브러리로 가져와 사용할 수 있는 데이터베이스 마이그레이션 도구입니다. 스키마 변경을 점진적 마이그레이션으로 관리하며, 각 마이그레이션은 순방향으로 적용하거나 역방향으로 롤백할 수 있고 데이터베이스에 적용된 버전도 추적합니다.
- goose은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
- goose은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
- goose은(는) 아직 유지보수되고 있나요?
- 활발히 유지보수 중. goose의 마지막 커밋은 2026년 10월 17일입니다.
- goose은(는) 어디에 사용할 수 있나요?
- Postgres나 MySQL을 사용하는 Go 백엔드의 스키마 버전을 관리합니다. 배포 가능한 단일 바이너리에 데이터베이스 마이그레이션을 포함합니다. CI에서 스키마 변경을 실행해 여러 환경에 마이그레이션을 일관되게 적용합니다.
- goose는 어떻게 설치하나요?
- Go로 goose CLI 설치하기: go install github.com/pressly/goose/v3/cmd/goose@latest SQLite 데이터베이스의 마이그레이션 상태 확인하기: goose sqlite3 ./foo.db status 사용 가능한 마이그레이션 모두 적용하기: goose sqlite3 ./foo.db up
- goose은(는) 어디서 받을 수 있나요?
- 소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/pressly/goose
요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.
관련 프로젝트
Node.js, Bun, Deno 및 엣지 런타임에서 사용할 수 있는 PostgreSQL, MySQL, SQLite용 경량 헤드리스 TypeScript ORM입니다.
Linux, macOS, Windows에서 MySQL, PostgreSQL, SQLite, SQL Server 등 다양한 DB를 지원하는 크로스 플랫폼 SQL 편집기 및 데이터베이스 관리자입니다.
복잡하고 규모가 큰 데이터베이스의 ERD를 제공하는 풀스택 스키마 탐색 도구
Postgres, MySQL, MariaDB, SQL Server, ClickHouse, SQLite를 지원하는 데스크톱 및 웹용 AI 기반 데이터베이스 클라이언트 겸 MCP 서버입니다.
JDBC 및 ODBC 드라이버를 통해 100개 이상의 데이터베이스를 지원하는 무료 멀티플랫폼 데스크톱 SQL 클라이언트이자 데이터베이스 도구입니다.