인프런 커뮤니티 질문&답변
질문이있습니다.!!
작성
·
142
0
안녕하세요 강의 잘 보고 있습니다.
다름이아니라 질문이 두개 있습니다. 1.쿠키관련 2. 게시물 제거 실무 관련
예를 들어 댓글쓸때 댓글 info에 들어갈 내 nickname 을 가지고 오기 위해 comment user 간 join을 하는데
user.id 값을 쿠키에 저장해놓는거 처럼
nickname도 쿠키에 저장해서 join안하고 그냥 가지고와서 쓰는 형식은 어떤가요?
강의에선 쿠키에 데이터를 저장했을떄 사용자의 비율에 따른 과부하가 걸린다고 하셨는데
보통 쿠키 값으로 몇개까지 괜찮을까요? 동시 접속자 비율 and 프로젝트에 따라 다르겠지만 대게 어떤 값들을 쿠키에 저장하는지 궁금합니다.
또 궁금한게 게시물 같은거 지울때
실무에서는
게시물(메인글) 테이블, 댓글 테이블, 이미지 테이블가 있다고 하면 보통은 테이블 설계할때
삭제시 DB에서 바로 날리는게 아니라
예를 들어 글, 댓글, 이미지 에 각각 삭제여부의 칼럼하나 만들어서 Y==있음, N ==삭제됨
생성시 Y
제거시 글, 제거된 post.id 와 같은 comment, image 의 삭제여부를 N
글 조회시 where = Y면 select
또한 이 부분은 프로젝트의 정책의 따라 다르겠지만
예를들어 삭제여부가 N인 데이터들은 100일동안 N의 형태인경우 DB에서 날리는 쿼리
보통 이런 느낌이나요? 실무에서는
답변 1
0
쿠키는 로그인 유지용, 애널리틱스용 제외하고는 안 쓰시는 게 좋습니다.
comment-user간 join에서 user.id를 쿠키에서 가져오는 건 말이 안 되는 게, 남의 댓글 작성자 이름은 어떻게 하실 건가요?
삭제한 게시글들(정확히는 삭제여부 컬럼이 N인 게시글들)은 웬만하면 그대로 남겨둡니다.
다만 개인정보법에 의해 탈퇴한 회원은 1년 후에 데이터 파기해야하는 것이 있어서 그 때만 주기적으로 지웁니다.
댓글 불러올 때가 아니라 댓글 작성할 때 말씀하시는 건가요? 이 부분 join은 사실 join 하나 안 하나 0.03초 차이도 안 날 것 같습니다. 오히려 성능 걱정을 하셔야 하는건 댓글 불러올 때입니다. 거기는 nested join이거든요.
아 현 강의 테이블 구조상 insert 할때만 되겠군요. 제가 착각했네요 네 불러올때는 무조건 join 해야겠네요.
그럼 여기서 질문이 있는데요
생각해보니 nickname을 쿠키에 저장할 필요없이 첨에 로그인할때 nickname도 가지고 와서 reduces 변수 me에 저장하잖아요
comment 컬럼(id, content, UserId, PostId)로 되어있는데 여기에 nickname 이라는 컬럼을 그냥 하나 더 늘려서 상태변수 me에 저장되어있는 nickname 값을 useSlector로 가지고와서 댓글 작성 시 comment 에 insert 하고 댓글들 불러올때 join 없이 댓글들 select 하는 방법은 안좋은 방식인가요? 안좋다면 그이유를 설명해줄 수 있을까요?
매번 친절한 답변 감사합니다.
그게 사실 nosql 방식입니다. nosql 방식은 불러올 때 join을 안 해도 돼서 성능상으로 좋지만 값이 변경될 때 매우 취약합니다. 만약 사용자의 nickname이 수정되면 사용자의 nickname만 바꾸는 게 아니라 게시글, 댓글의 nickname 컬럼을 전부 다 변경해야 합니다. 일장일단이 있는 것이죠.
아 그러네요 도움되는 답변감사합니다! 참고하겠습니다.
그 혹시 댓글 관련해서
페이지 로딩시 게시글 select 되는 만큼 글아래 달려있는 댓글들이 모두 select 되는 것 같은데
관련해서 댓글 말풍선 클릭시 클릭한 해당 글의 댓글만 selelct 되는 구조는 어떠한가요?





답변 감사합니다. 그 comment-user 간 join 부분에서의 user.id를 가져온다는 말이아니라
comment-user 간 join 해서 select 할때 user.id, user.nickname, comment.content 가져오잖아요
하지만 쿠키에 user.id 와 nickname을 가지고오면 join 할필요없이 쿠키에 있는 user.id 와 nickname+comment에 있는 값들 content만 join없이 comment테이블에서 들고 올 수 있잖아요 그 얘기를 한거에요
제가 그 join은 최대한 안할수록 성능상 유리하다는게 뇌에 박혀서 강박관념이 있어요 그래서 테이블 설계할때나 필요시에는 당연히 join을 해야하지만 최대한 join은 안하려고 하는게 박혀있어서.....
이부분 관련해서 제대로 개념이 박혀있지않아서 고민하는걸꺼에요
공부를 해야겠죠 아무래도... 직접 쿼리쓰면서 test를... join 형태의 따른 속도차이도 찍어보면서