소개
GFS(Git For database Systems)는 데이터베이스에 Git과 같은 버전 관리를 제공하는 도구입니다. Guepard 팀이 개발했으며, AI 코딩 에이전트와 개발자를 위해 데이터베이스 변경사항을 안전하게 관리할 수 있게 설계되었습니다. Docker를 활용하여 격리된 데이터베이스 환경을 관리하며, 커밋, 브랜치, 체크아웃 등 Git과 유사한 워크플로우를 데이터베이스에 적용할 수 있습니다.
상세정보
데이터베이스 버전 관리
- 데이터베이스 상태를 커밋(commit)하여 의미 있는 메시지와 함께 저장할 수 있습니다.
- 커밋 기록(log)을 확인하고 이전 커밋으로 되돌아갈(checkout) 수 있습니다.
- 데이터베이스 변경사항을 실험하기 위해 브랜치(branch)를 만들고 전환할 수 있습니다.
AI 에이전트 통합
- Claude Code, Cursor, Cline, Windsurf 등 다양한 MCP 호환 AI 에이전트와 네이티브로 통합됩니다.
- AI 에이전트가 데이터베이스 작업을 수행하기 전후로 자동 스냅샷을 생성하여 안전한 체크포인트를 만듭니다.
데이터베이스 쿼리 및 스키마 관리
- CLI를 통해 SQL 쿼리를 직접 실행하거나 대화형 터미널 세션을 열 수 있습니다.
- 커밋 간 스키마를 추출, 확인 및 비교(diff)할 수 있습니다.
- 데이터를 SQL, 커스텀 PostgreSQL 바이너리 덤프 형식으로 가져오기(import) 및 내보내기(export)할 수 있습니다.
레이지 클론 (실험적 기능)
- 원격 PostgreSQL 데이터베이스를 복사하지 않고 읽기(on-read) 방식으로 지연 복제할 수 있습니다.
- 원본 데이터베이스 변경사항을 자동으로 감지하여 클론이 오래된 데이터를 반환하는 것을 방지합니다.
다운로드·설치 방법
공식 웹사이트에서 제공하는 설치 스크립트를 사용하여 쉽게 설치할 수 있습니다.
터미널에서 다음 명령어를 실행합니다:
curl -fsSL https://gfs.guepard.run/install | bash
기본 사용법/명령어
설치 후 다음과 같은 기본 명령어를 사용할 수 있습니다:
- gfs providers: 사용 가능한 데이터베이스 프로바이더와 지원 버전을 확인합니다.
- gfs init –database-provider <provider> –database-version <version>: 새로운 GFS 저장소를 초기화하고 지정된 데이터베이스를 Docker 컨테이너에서 시작합니다.
- gfs status: 현재 저장소와 컴퓨팅 리소스의 상태를 보여줍니다.
- gfs query “SQL 쿼리”: SQL 쿼리를 직접 실행합니다.
- gfs commit -m “커밋 메시지”: 현재 데이터베이스 상태를 커밋합니다.
- gfs log: 커밋 기록을 확인합니다.
- gfs checkout <커밋 해시 또는 브랜치>: 특정 커밋 또는 브랜치로 전환합니다.
이런 경우에 유용합니다
- AI 코딩 에이전트 사용자: Claude, Cursor 등 AI 에이전트가 데이터베이스 마이그레이션, 테이블 생성/수정 등 위험한 작업을 수행할 때, 실수를 저질렀더라도 한 번의 커밋으로 손쉽게 데이터베이스를 이전 상태로 되돌릴 수 있습니다.
- 데이터베이스 개발자: 여러 명의 개발자가 하나의 데이터베이스에서 동시에 작업할 때, 브랜치 기능을 사용하여 실험적인 변경사항을 격리된 환경에서 테스트한 후 안전하게 병합할 수 있습니다.
- 데이터베이스 백업 및 복구: 중요한 데이터베이스 변경(스키마 업데이트, 대량 데이터 입력 등)을 수행하기 전 커밋을 생성하면, 문제가 발생했을 때 빠르고 정확하게 이전 상태로 복구할 수 있습니다.
- 원격 데이터베이스 분석: 프로덕션 환경의 PostgreSQL 데이터베이스를 클론하여 영향을 주지 않고 안전하게 데이터 분석이나 쿼리 테스트를 수행할 수 있습니다.
지원 환경·시스템 요구사항
GFS는 Windows, macOS, Linux를 포함한 여러 운영 체제에서 작동합니다. Docker가 설치되어 실행 중이어야 합니다. Bash 또는 Zsh 셸 환경이 필요하며, 설치 스크립트 실행을 위해 curl, 릴리스 압축 해제를 위해 tar 유틸리티가 필요합니다.
최신 버전·업데이트
현재 Chocolatey 패키지 기준으로 제공된 버전은 0.4.0입니다. 프로젝트는 활발히 개발 중이며, API와 기능이 지속적으로 업데이트될 수 있습니다.
제한 사항·확인 사항
- 레이지 클론은 실시간 데이터베이스 스냅샷이 아닙니다. 서로 다른 테이블을 다른 시점에 복사할 수 있어, 원본에 존재하지 않았던 조합된 상태가 될 수 있습니다. reproducibility가 필요하면 원본을 고정(freeze)해야 합니다.
- 고유 키가 없는 PostgreSQL 테이블 상속 구조(INHERITS)는 클론할 수 없습니다.
- 원본 데이터베이스가 유휴 상태라도 WAL 위치가 변경될 수 있어, 클론이 모든 테이블을 변경된 것으로 인식할 수 있습니다.
- autoschema가 비활성화된 상태에서 새로운 파티션이 원본에 추가되면, gfs pull을 실행할 때까지 해당 파티션의 데이터를 제대로 읽지 못할 수 있습니다.
시스템 요구사항
Docker가 설치되어 있어야 합니다. Bash/Zsh 셸 환경과 설치 스크립트 실행을 위한 curl, 릴리스 압축 해제를 위한 tar가 필요합니다.


