More actions
OMS
- 정우현 학우님 : 데이터베이스 설계를 고치는 법
- 다음 주자: [] 학우님
내용
데이터베이스 설계란?
- 어떤 데이터를 어떤 형식으로 저장할지, 데이터 사이의 관계를 어떻게 표현할지 설계하는 것
설계를 잘해야하는 이유
- 되돌이키기 어려움
- 원하는 데이터를 빠르게 찾기 위해
데이터베이스 설계를 고치는 법
- 배포전
- 수정하는게 당연
- DDL, Migration 파일 기록
- 어떻게 설계를 변경했는지 기록 (코드 or GitHub commit)
- 배포 직후, 재배포 및 수정가능시기
- 해당 기능을 숨길 수 있으면 잠시 서비스를 숨겨두고 수정
- 상용화된지 오래됨 (무중단)
- 수정하는데 며칠, 몇주가 걸릴 수도 있음
- copy본에 기존, 새로운 데이터 옮겨줌
- 수정과 삭제에 대한 로그를 읽어서 copy에 적용
- 복사, 수정, 삭제 실시간으로 구현
- rename, 서비스가 바라보는 테이블 이동
결론
- 한 번 설계를 잘못하면 고치기 어려움
- 고칠 수 있을 때 빠르게 고치자
Q&A
Q. 숨길 수 있는 단계에서 왜 상용화 도중에 수정하는 방법을 안쓰나요?
- 많은 사람이 쓰고 있는 기능일 경우 숨길 수 없음
Q. 새로운 column 추가가 어렵나요?
- MySql 기준으로 새로운 column 추가 기능을 지원함
Q. migration 고려해주나요?
- 고려해줘서 설계해야함