Repolode
pressly

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. 1

    Go로 goose CLI 설치하기

    go install github.com/pressly/goose/v3/cmd/goose@latest
  2. 2

    SQLite 데이터베이스의 마이그레이션 상태 확인하기

    goose sqlite3 ./foo.db status
  3. 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 통계는 매일 갱신됩니다.

관련 프로젝트