-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
외래키 제거 완료 #391
외래키 제거 완료 #391
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저희 DB구조 변경이 있는 경우 새로 설정한 PR 규칙에 대해서 질문이 있습니다.
이번 작업이 DB구조 변경이 있던 경우라 예시를 들어서 궁금했던 점 질문드릴게요!
- "DB 구조에 변경이 있는 경우에는 기존 데이터 마이그레이션을 포함하도록 하고"에 대한 작업은 프로덕션 서버의 데이터를 덤프를 떴다가 어디로 마이그레이션을 하는건가요?
- "쿼리문 같이 올려주도록 한다"에 대한 것은 실제 쿼리문을 프로덕션 서버와 연결된 DB에 접속해서 실행하신건가요?
제가 로컬 작업과 배포작업을 연결지어 생각하는게 아직 미숙해서 질문 남깁니다!
데이터를 다른 서버로 옮긴다는 의미가 아니라, 구조 변경이 생겼을 때 기존 데이터가 정상적으로 작동할 수 있도록 호환시키는 것을 의미합니다. 데이터베이스 변경은 직접 조작이 필요하기 때문에 쿼리문을 통해 수정을 해야 하며, 현재는 직접 접속해서 실행하는 방식을 사용할 계획입니다. 서버가 올라갈 때 즉각적으로 반영할 수 있는 방법에 대해서는 추가적인 고민이 필요하지만, 현재는 젠킨스 CD 과정에서 쿼리문이 실행되도록 하는 것도 고려 중입니다. |
그렇다면 pr에 적어주신 쿼리문은 머지가 되고 프로덕션DB에 접속하여 실행될 예정인건가요? |
src/main/java/page/clab/api/domain/member/event/MemberEventDispatcher.java
Show resolved
Hide resolved
참조된 member 객체로 넘어가는 것을 전부 memberId로 변경하셨네요! 코드를 전부 보는데도 한참 걸렸는데, |
답변이 도움 되셨길 바랍니다. |
뒤늦게 봤네요. 스테이징에 먼저 적용해서 테스트하고, 문제 없으면 프로덕션에 배포하면서 쿼리문으로 DB 변경 예정입니다. |
Summary
외래키를 제거하고 엔티티 간의 직접 참조를 ID를 통한 간접 참조로 전환하였습니다. 이는 헥사고날 아키텍처의 외부-내부 의존성 역전을 준수함과 동시에 성능 및 운영적인 측면에서의 문제를 해결하기 위함입니다. 외래키 사용의 단점을 극복하고 애플리케이션의 확장성과 유지보수성을 높이기 위해 다음과 같은 작업을 수행하였습니다.
Tasks
ETC
활동 관련 테이블과 미사용 테이블은 작업에 포함하지 않았습니다.
Query
다음은 변경된 테이블 구조를 반영하는 쿼리문입니다.