MySQL 확장성 있는 테이블 구조

오준석·2023년 10월 4일
1

TIL (Today I Learned)

목록 보기
98/105

1. 테이블 구조 설계의 이유

: 선호도 조사 기반 메뉴 추천하는 프로젝트를 진행 중 MySQL를 이용해 확장성 있는 구조와 유저의 행동을 고려한 테이블이 필요하다는 걸 인식하여 튜터 님에게 힌트를 얻어 테이블 구조 설계

2. 장점

: 뛰어난 확장성. 예를 들어, 맛에 대한 가중치(weight)를 추가할 필요가 있다면 테이블 추가 없이 action 칼럼에 taste만으로 추가 가능

유저의 행동을 고려한 테이블 (유저가 9월 26일에 선호도 체크를 언제 했는 지 문의한다면 답변 가능. 해당 user_id와 action 칼럼의 favorite을 조회한다면 CreatedAt row를 보고 확인 가능)

하나의 테이블로 메인 로직을 관리하기에 테이블 복잡성을 최소화 하였습니다.

3. 고려할 사항

: 하나의 테이블로만 메인 로직을 계산할 경우 과부하 우려가 있을 수 있다.

  • DB셀렉터를 실시간으로 하지 않고 선호도 조사를 미리 해놓고 특정 DB에 담아두는 방식의 사용으로 방지할 수 있다. 같은 방법으로 가중치 연산을 미리 해놓을 수도 있다.
profile
개발자를 목표로 열심히 하려고 합니다.

1개의 댓글

comment-user-thumbnail
2023년 10월 6일

굿굿 좋은 정보 감사합니다

답글 달기