- 데이터베이스 백업 덤핑, 익명화, 합성 데이터 생성 및 복원을 위해 설계된 오픈 소스 유틸리티
- Stateless이며 데이터베이스 스키마를 변경할 필요 없음
- 높은 수준의 커스터마이징이 가능하게 설계되었으며, 기존 PostgreSQL 유틸리티와 호환성이 뛰어나며 빠르고 안정적임
- Playground : Docker 안에 샘플DB와 함께 구성된 샌드박스 환경이 있어서 추가 작업없이 테스트 가능
- 주요 기능
- Deterministic transformers: 해시 함수에 기반한 결정적 데이터 변환 방식으로, 동일한 입력 데이터는 항상 동일한 출력 데이터를 생성함. 대부분의 트랜스포머는 랜덤 또는 해시 엔진을 지원하여 모든 사용 사례에 적합함.
- Dynamic parameters: 각 트랜스포머는 동적 매개변수를 지원하여 테이블 열의 값으로 트랜스포머를 매개변수화할 수 있음. 이 기능은 열 간의 기능적 종속성을 해결하고 제약을 충족시키는 데 유용함.
- Transformation validation and maintainability: Configuration 중에 검증 경고, 데이터 변환 차이 및 스키마 차이 기능을 제공하여 소프트웨어 수명 주기 동안 변환을 효과적으로 모니터링하고 유지 관리할 수 있음. 스키마 차이는 스키마 변경 시 데이터 유출을 방지하는 데 도움을 줌.
- Partitioned tables transformation inheritance: 한 번 Transformation 구성을 정의하면 파티션된 테이블의 모든 파티션에 적용할 수 있어(파라미터
apply_for_inherited
사용) 익명화 과정을 간소화함.
- Stateless: 논리적 덤프로 작동하며 기존 데이터베이스 스키마에 영향을 주지 않음
- Cross-platform: Go 기반 아키텍처로 인해 플랫폼 종속성을 제거하여 모든 플랫폼에서 쉽게 빌드하고 실행 가능함
- Database type safe: 데이터 무결성을 보장하기 위해 데이터 검증 및 인코딩/디코딩 작업에 데이터베이스 드라이버를 사용함. 이를 통해 데이터 형식이 보존됨
- Backward compatible: 기존 PostgreSQL 유틸리티와 동일한 기능과 프로토콜을 완벽히 지원하며, Greenmask로 생성된 덤프는 pg_restore 유틸리티를 사용하여 성공적으로 복원 가능함
- Extensible: 사용자는 다양한 프로그래밍 언어로 도메인 기반 변환을 구현하거나 사전 정의된 템플릿을 사용할 수 있음
- Integrable: CI/CD 시스템에 통합되어 자동화된 데이터베이스 익명화 및 복원 작업을 쉽게 처리할 수 있음
- Parallel execution: 병렬 덤프 및 복원 기능을 활용하여 결과 제공 시간을 크게 단축함
- Storage variety: 디렉토리 및 S3와 같은 원격 데이터 스토리지를 포함하여 로컬 및 원격 데이터 스토리지 옵션을 제공함
- Pgzip 지원:
--pgzip
설정 시 병렬 압축을 통해 덤프 및 복원 과정을 더 빠르게 처리 가능함