일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스프링 부트 프로젝트 세팅
- 펙토리얼
- string과 stringbuilder 성능 최적화
- 스프링 부트 배너 설정
- 배열 순환 자바
- 숨어있는 숫자의 덧셈 (1) 자바
- 배열 순환
- string과 stringbuilder 성능 차이
- stringbuilder란
- 티스토리챌린지
- 배열 순환 문제 공식
- 소인수분해 구하는 공식
- 왓챠피디아 클론 코딩
- 스프링부트 의존성 설정
- string과 stringbuilder의 차이점
- spring boot 배너 설정
- string과 stringbuilder의 차이
- string과 stringbuilder
- 자바 팩토리얼
- 모스부호(1) 자바
- 경우의 수 자바
- 프로그래머스 공 던지기 게임
- 프로그래머스 문자열 정렬하기(1)
- 자바 소인수분해
- 프로그래머스
- 자바 합성수 찾기
- 오블완
- 외계행성의 나이 자바
- 피그마 썸네일
- 접속 url 출력
- Today
- Total
여름 언덕에서 배운 것
flyway 란? 본문
Flyway & DB Migration 을 적용시켜 보자
스프링 프로젝트를 진행하면서 나는 DB 테이블을 한 번에 다 생성하고 시작하는 것이 아닌 필요한 것을 만들어가면서 진행하고 있었다. 그러고 Front를 만들지 않기 때문에 DB data를 직접 mysql을 열
sweeeetgoguma.tistory.com
** 스키마 : DB 내에 어떤구조로 데이터가 저장 되었는지를 나타내는 구조
예시
### 상황
개발자 '지민'은 온라인 쇼핑몰 프로젝트를 진행하고 있습니다. 초기에는 상품 정보만 저장하는 `products` 테이블이 데이터베이스에 있었습니다.
### 1단계: `products` 테이블 생성 (V1)
지민은 `V1__Create_products_table.sql`이라는 파일을 만들고, 이 파일에 다음의 SQL 명령어를 넣습니다:
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2)
);
### 2단계: 리뷰 기능 추가 (V2)
몇 주 후, 상품 리뷰 기능이 필요하다는 요청이 들어옵니다. 지민은 새로운 `reviews` 테이블을 만들어야 합니다.
그래서 `V2__Create_reviews_table.sql` 파일을 만들고 다음 내용을 넣습니다:
CREATE TABLE reviews (
id INT PRIMARY KEY,
product_id INT,
comment TEXT,
rating INT,
FOREIGN KEY (product_id) REFERENCES products(id)
);
### Flyway 사용
이제 지민은 로컬에서 개발을 할 때, Flyway 명령어를 사용해 데이터베이스 스키마를 최신 상태로 유지할 수 있습니다:
```bash
flyway migrate
```
Flyway는 `V1__Create_products_table.sql`과 `V2__Create_reviews_table.sql`을 순서대로 실행하여 데이터베이스를 업데이트합니다.
### 협업
지민의 동료 '유나'도 이 프로젝트에 참여합니다. 유나는 지민의 코드를 받아서 자신의 로컬 환경에서 작업을 시작하려고 합니다. 그런데 유나의 데이터베이스는 아직 초기 상태입니다. 여기서 Flyway의 장점이 발휘됩니다.
유나는 단순히:
flyway migrate
이 명령어를 실행만 하면, 그녀의 로컬 데이터베이스도 지민의 최신 스키마로 업데이트됩니다.
### 결론
이 예시를 통해 Flyway는 다음과 같은 이점을 제공한다는 것을 알 수 있습니다:
1. 데이터베이스의 변경 이력을 명확하게 버전으로 관리할 수 있습니다.
2. 코드를 공유하거나 협업할 때, 각 개발자의 로컬 환경의 데이터베이스 상태를 쉽게 일치시킬 수 있습니다.
3. 데이터베이스 변경사항을 순차적으로 적용하므로, 데이터베이스의 상태를 예측 가능하게 만들어 줍니다.
즉, Flyway는 데이터베이스 스키마 변경을 안정적이고 일관성 있게 관리하는 데 큰 도움을 줍니다.
'여름 언덕에서 배운 것 > 👩💻 CS' 카테고리의 다른 글
Enum 클래스 (0) | 2023.10.09 |
---|---|
객체 지향의 특징 (1) | 2023.10.09 |
Nexus Repository(넥서스 리포지토리)란? (1) | 2023.10.05 |
젠킨스란? (1) | 2023.10.04 |
MobaXterm 어떤 프로그램인지 (0) | 2023.10.04 |