반응형
2022.07.07 - [개발/spring] - [liquibase] springboot과 연동가능 한 db형상관리 툴
이전에 liquibase에 대해 알아본 적이 있다. 그 외로 알고 있던 flyway와의 차이점이 궁금하여 비교해본다.
공통점
- DB 스키마 변화를 관리하는 도구
- 오픈소스 기반
- 자바와 연동 가능; springboot, vert.x
- maven, gradle과 연동 가능
- cli와 독립적으로 작동 가능
- 여러 DB 지원
차이점
flyway | liquibase | |
변화 정의 | sql 작성 | xml, yaml, json 으로 정의 |
변화 파일 규칙 | prefix: V (for versioned), U (for undo), and R (for repeatable) separator: __(two underscores) suffix: .sql V01__Add_New_Column.sql |
이름 규칙 없음 |
로깅 테이블 | flyway_schema_history | databasechangelog |
수정 순서 관리 | 변화 파일 명의 버전 순서대로 | master_changelog 파일에 순서 작성 |
롤백 | (유료버전) 취소해야하는 부분의 파일 이후에 변화 파일의 이름을 U로 해서 실행 | (유료버전) 전체 롤백/ 버전별 취소(undo)가능 |
수정 부분반영(환경별) | 각 환경별 config 파일을 다르게 세팅해서 | context, label 이라는 기능을 통해서 일부만 반영가능(마치 태그를 걸러 그 태그만 모아서 적용) |
자바 기반의 migration지원 | 지원, 자바 파일 안에서의 migration을 정의가능 | 지원 안 함 |
스냅샷 | 지원 안 함 | 지원 |
pre-condition(조건부 적용) | 지원 안 함(procedure를 이용해 적용) | 지원 |
when to use?
Flyway
- java코드나 sql문을 통해 변화 적용, DB에 직접적인/full control 필요할 경우(ex. oracle, postgresql)
Liquibase
- xml, yaml, json 사용 가능 -> 다양한 환경, 다양한 DB언어에 대응 가능
728x90
반응형
'개발 > sql' 카테고리의 다른 글
[mysql] 유저의 등수 구하기 rank under v8 (0) | 2024.02.06 |
---|---|
[DB] 분산환경에서 데이터 저장소 선택과 활용 (0) | 2023.07.24 |
[mysql] jsonpath (0) | 2022.05.27 |
[sql] case vs if (0) | 2022.05.02 |
[sql] aggregate / window function(mysql) (0) | 2022.05.02 |