개발자
안녕하세요! 현재 진행 중인 사이드 프로젝트에서 게시글 신고 기능을 구현하고 있습니다. 1. 게시글이 누적 신고를 받으면 모든 유저한테 안 보입니다. 2. 유저가 특정 게시글을 신고했을 때 해당 유저한테는 신고한 게시글이 안 보입니다. 1번의 경우에는 신고가 될 때마다 count를 해서 일정 횟수 누적이 되면 해당 게시글을 soft delete를 합니다. 2번의 경우에는 게시글 조회 시 신고 테이블을 outer join 해서 해당 유저가 신고하지 않은 게시글만 조회합니다. 신고 특성상 순간적으로 발생하는 경우가 많을 것 같아서 redis를 사용해볼까 하는 생각도 드는데 조언, 피드백 좀 주시면 정말 감사하겠습니다!
답변 1
제가 생각하는 방식을 전달해드립니다. 유저가 신고시 신고테이블에 Insert 및 Async하게 후속작업을 진행 후속작업은 count를 증가시키고, count가 일정수 이상일경우 softdelete 진행하도록 변경. count 증가는 count = 숫자 업데이트가 아닌 count = count + 1 식이 될수 있도록 변경. 별도 Count 컬럼이 없을경우는 신고테이블 count만 진행하여 softdelete 진행 위 방식은 어떤가요?
익명
작성자
2024년 03월 08일
생각하지 못했던 부분을 많이 배워가네요.. 클라이언트에서 신고 누적을 계산하고 처리하는 작업을 기다릴 필요가 없고 신고 관련 별도의 count 칼럼은 없지만 다른 부분에서 count 칼럼을 optimistic lock으로 업데이트를 하고 있었는데 count = count +1 식으로 업데이트하면 애플리케이션 레벨에서 락을 안 걸어도 될 것 같네요 좀 더 공부하고 적용해 보겠습니다. 감사합니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 03월 07일
안녕하세요, 프로젝트에 대한 설명을 잘 들었습니다. 현재 사용하신 방법으로도 충분히 효율적인 구현이 가능합니다. 신고 수에 따른 게시글의 가시성 조정은 DB에서 처리하는게 일반적입니다. 그러나 고려해야 할 몇 가지 요소가 있습니다. 첫째, 신고 수가 많아질 경우 DB의 부하가 커질 수 있습니다. 이런 부담을 줄이기 위해서는 캐싱을 활용하는 것이 좋습니다. Redis 같은 인메모리 데이터베이스를 사용하면 빠른 속도로 데이터 조회를 할 수 있으며, 동시에 여러 사용자로부터 올라오는 신고 처리도 빠르게 합니다. 둘째, soft delete 방식을 사용할 경우 DB에 여전히 데이터가 남아있어서 확인을 하지 않는 이상 실제로 제거되었다는 점을 유저들이 알기 힘든 단점이 있습니다. 이 부분은 사실 UI/UX 디자인과 밀접한 연관이 있으므로 개별 게시물 별로 '신고 누적 삭제'라는 정보를 유저에게 보여주거나 아니면 관리자 페이지에서만 확인할 수 있도록 하는 등 다양한 방법이 있을 수 있습니다. 마지막으로 신고가 빈번하게 발생하는 경우, 게시글 조회 시 신고 테이블을 join하는 것은 성능 저하를 가져올 수 있습니다. 이런 경우에는 신고 테이블의 데이터를 캐싱하여 활용하는 것도 고려해보시기 바랍니다. 위 내용을 고려하여 본인의 프로젝트에 가장 적합한 방식을 선택하시면 됩니다. Happy coding!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!