`StudyWithMe` 프로젝트를 진행하며 처음으로 `DB Migration Tool`인 `Flyway`를 사용하고 있다.
아래는 내가 `Flyway`에 관해 작성한 포스팅이다.
2024.12.01 - [Infra/Flyway] - [Flyway] Flyway - database migration tool
2024.12.01 - [Infra] - [Flyway] Flyway 사용 시 함께 알면 좋은 것들 With 스프링부트
`Flyway`를 사용해보니 정말 ERD 설계부터 DDL 작성, 엔티티 작성에 있어서 굉장히 신중에 신중을 다하게 된다.
왜냐.. 잘못 설정하면 바로 `ddl-auto: validate`에 의해 `Spring Boot`가 실행이 되지 않을 뿐더러
잘못설정하면 `DB`가 맛이 가버릴 수도 있다.
지금까지 사용한 Flyway의 `.sql` 파일들 캡처
`Flyway`는 `DB`를 위한 `git`이라고 할 수 있을 것 같다.
이런식으로 잘못 설정한.. 시퀀스의 삭제도 가능하고
alter table study_room_bookmark ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_bookmark_study_room_id_seq;
alter table study_room_like ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_like_study_room_id_seq;
alter table study_room_qna ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_qna_study_room_id_seq;
alter table study_room_reserve_type ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_reserve_type_study_room_id_seq;
alter table study_room_review ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_review_study_room_id_seq;
alter table study_room_tag ALTER COLUMN study_room_id DROP DEFAULT;
DROP SEQUENCE IF EXISTS study_room_tag_study_room_id_seq;
아래처럼 새로운 컬럼 추가도 가능하다.(물론 인덱스 추가도)
alter table study_room
add column entire_min_headcount integer not null,
add column entire_max_headcount integer not null;
주의해야 할 점은, 이전에 작성한 `.sql` 파일을 수정하면 바로 오류가 발생하며 실행이 안된다.
파일의 맨 마지막 엔터?는 문제가 되지는 않지만,
`SQL문` 사이에 있는 공백에 무슨 짓을 하면 체크섬 값이 달라져 오류가 발생해버린다.
checksum(flyway_schema_history)
그래도, 사용하면서 느낀 것이 저렇게 `Flyway`를 사용함으로, DB 이전 시에도 휴먼 폴트 없이
최신 상태의 `DB`를 계속해서 유지할 수 있다는게 큰 장점이 될 것 같다.
만약, 인간의 실수로 인해 특정 DB에는 적용이 되지 않아 A서버와 B서버가 활용하는 DB의 상태가 다른 건 말이 안되기 때문이다.
'프로젝트 > StudyWithMe' 카테고리의 다른 글
[StudyWithMe] 멀티 스레드에서 트랜잭션 작업 간 정보 불일치 문제 (0) | 2024.12.08 |
---|---|
[StudyWithMe] 페이징 시 Offset 방식 대신 Cursor 방식 적용(약 111배 성능 향상) (0) | 2024.12.07 |
[StudyWithMe] 스터디 룸 UPDATE API 작성 시 했던 고민들 (0) | 2024.12.06 |
[StudyWithMe] PostgreSQL을 처음 접해보며 (0) | 2024.12.06 |
[StudyWithMe] StudyWithMe 프로젝트 시작 (0) | 2024.12.06 |