PreOnboarding ⎮ aimmo 과제

Chris-Yang·2021년 11월 4일
1

Project

목록 보기
2/4
post-thumbnail

🤗 과제 내용 전반을 다루지 않고 기억에 남는 부분만을 작성하였습니다!

🥕 전체 과제 링크
https://github.com/chrisYang256/wanted-aimmo-assignment




> 과제 중 모델링 관련 내용

- 원티드 지원 개인과제 내용 포함

  • 회원가입/로그인, 게시물 CRUD, 로그인한 유저만 게시물 작성 가능

- 게시글 카테고리

- 대댓글(1 depth)

- 게시글 읽힘 수

  • 같은 User가 게시글을 읽는 경우 count 수 증가하면 안 됨


▶︎ ERD




▶︎ 모델링 의도

- 대댓글

대댓글은 테이블을 따로 만들지 않고 댓글 테이블에 column을 추가하여
같은 테이블의 부모 댓글을 참조하게 하였습니다.

해당 column에 값(부모댓글의 pk)이 있으면 그 댓글의 대댓글로 판단합니다.


- 같은 user 게시글 중복 카운팅 금지

회원 테이블과 게시물 테이블의 중간테이블에 읽은사람id column을 넣어
해당 게시물을 읽은 경우 그 유저의 id가 입력되도록 처리하여
중복 카운트를 방지하려 했습니다.

게시물 읽힘 카운팅 역시 이 중간테이블을 통해 조회하여 계산하려 했습니다.

하지만 테이블 조회가 너무 빈번한 방법이라는 생각이 들었습니다.




> Djongo&Django - MongoDB 연결

인터넷에 별별 방법이 다 나와있었지만 다 작동하지 않았었습니다.

결국 공식문서에서 발견할 수 있었고 함께 고생하던 다른 팀원분께도 알려드려
도움을 드릴 수 있어서 기뻤습니다.

host 부분 및 compass연결에 필요한 key들은 은 MongoDB 웹페이지에서
DB생성 후 connect를 클릭하여 받아올 수 있었습니다.

배포는 MySQL을 사용할 때와 다르게 AWS에서 RDS를 생성하는게 아닌
MongoDB 웹페이지에서 연결하는 개념이라 낮설었던 기억이 납니다.


🥕 몽고디비 연결
https://www.mongodb.com/compatibility/mongodb-and-django




> 결론 / 배움

"같은 user는 게시글 중복 카운팅 금지"의 경우
API에서 로그인한 유저의 경우 request.session['user'] = user과 같이
session에 유저 정보를 저장함으로써 해당 유저는 반복 카운팅이 되지 않게
하는 방법이 있고 이 방법에 의해 테이블 조회를 줄일 수 있었습니다.

따라서 조회수 카운팅 또한 게시물 테이블에 read_counting column을
추가해 처리할 수 있고 테이블 조회 또한 줄일 수 있는 방법이 있었습니다.

MongoDB 사용은 같은 팀원분들이나 다른 팀원분들 모두 경험이 없었고
테이블에 id가 생성되지 않는 등 여러가지 고난이 좀 있었습니다.

테이블에 id가 생기지 않는 부분은 검색으로도 해결되지 않았는데 결국
혹시나 시도해본 기존 DB를 삭제 후 migration과 migrate를 다시
함으로써 해결되었습니다.(허무...)




🌈 작은 회고 🤔

프로젝트의 전체적인 설계를 하면서 모델링을 할 때
API에서 처리할 수 있는 것들을 충분히 고려하지 못한
미숙함을 발견했습니다.

하지만 결과적으로 새로운 방법들에 대해 알게 되었고
제가 생각한 결과의 한계도 확인할 수 있었는데
부정적인 감정보다는 즐거움이 컸습니다.

오늘의 부족함이 거름이 되는 이 분명한 느낌이 좋습니다😻

profile
sharing all the world

0개의 댓글