Skip to content

데이터베이스

dictionary-api가 사용하는 데이터베이스 구성과 Flyway 마이그레이션 정책이다.

local

MySQL — 개발자 개인 MySQL 서버, log4jdbc로 SQL 로깅

test

H2(in-memory, MODE=MySQL) — 매번 새로 마이그레이션됨

prod

H2(in-memory) — 무료 호스팅 데모 배포용

docker

MySQL(컨테이너) — docker-compose가 띄우는 MySQL. 데이터는 named volume(mysql-data)에 남아 docker compose down으로는 지워지지 않고, down -v로만 초기화된다.

  • Directorysrc/main/resources/db/migration/
    • Directorymysql/ local 프로파일
      • Directoryddl/ V1_01_x — 테이블 생성
        • …
      • Directorydata/ V1_02_x — 테스트/초기 데이터
        • …
    • Directoryh2/ test/prod 프로파일
      • Directoryddl/
        • …
      • Directorydata/
        • …

테이블은 t_ 접두어, 컬럼은 소문자 스네이크 케이스를 쓰고, 모든 테이블에 감사 컬럼 6개를 둔다. 전체 규칙은 테이블 생성 가이드, 감사 컬럼을 자동으로 채우는 코드는 MVC 코드 작성 가이드 참고.

spring-session-jdbc가 쓰는 SPRING_SESSION/SPRING_SESSION_ATTRIBUTES 테이블도 Flyway로 관리한다. 그래서 Spring Session의 자동 생성은 꺼둔다(spring.session.jdbc.initialize-schema: never).