개발자

실시간 랭킹 보상은 DB에서 지급해선 안 되겠죠..?

3월 21일조회 100

실시간 랭킹의 경우 select를 통해 저장된 랭킹을 손 쉽게 구해올 수 있는데, 그 랭킹에 따라 보상을 줘야하는 건 서버쪽에서 처리해야겠죠? 기존에 작성된 게 db에서 집계 보상처리까지 하고 있는지라 개선이 필요할 것 같은데, 보상을 서버에서 주자니 유저 한 명 한 명 일일이 insert 해야하고.. Db는 얕게 배운지라 막막하네여..

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

포크코딩님의 프로필 사진

비즈니스 로직은 DB와 분리되는 것이 여러므로 좋습니다. 구현이 필요한 로직과 관련한 DB 처리가 필요하시다면 trigger 기능을 사용해보시길 바랍니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

3월 21일

네, 말씀하신대로 실시간 랭킹 보상 처리는 서버에서 하는게 좋습니다. DB에서 직접 수행하기에는 크게 두 가지 문제가 발생합니다. 첫 번째로, 실시간 갱신에 대한 부담입니다. 실시간으로 랭킹이 바뀔 때마다 보상을 계산해서 업데이트하는 것은 DB에 많은 부담을 줄 수 있습니다. 이런 접근 방식은 특히나 대용량의 사용자를 관리해야 하는 경우 더 큰 문제가 될 수 있습니다. 두 번째로, 금융 거래나 게임 보상과 같이 중요한 데이터에 대한 핸들링은 보안 및 데이터 안정성 측면에서 DB보다는 서버에서 처리하는 것이 바람직합니다. 따라서 서버 측에서 일괄 처리를 하여 결과를 DB에 반영하는 방법을 추천드립니다. 이렇게 하면 위의 문제점들을 해결할 수 있으며, 서버와 DB 성능 간의 균형도 잡을 수 있습니다. 레코드 한 개 한 개를 일일이 insert 하는 것이 부담스러우시다면, Bulk Insert라는 기능을 사용하실수 있습니다. 이 기능으로 여러 레코드를 한번의 쿼리로 DB에 접근하여 저장하는 것이 가능합니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!