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