프로젝트 소개
migrate는 Go로 작성된 데이터베이스 마이그레이션 도구로, 명령줄 인터페이스로 사용하거나 Go 프로젝트에 라이브러리로 임포트하여 사용할 수 있습니다. mattes/migrate에서 포크되었습니다.
작동 방식: migrate는 구성된 소스에서 마이그레이션 파일을 읽어 대상 데이터베이스에 올바른 순서로 적용합니다. 설계상 데이터베이스 드라이버는 경량이고 "단순(dumb)"하게 유지됩니다. 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가 포함됩니다. 연결 문자열은 dbdriver://username:password@host:port/dbname?param1=true 형식의 URL을 사용하며, 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 채널을 통한 graceful stop을 지원하고, 자체 로거를 사용할 수 있으며, 낮은 메모리 오버헤드를 위해 내부적으로 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.