Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링 핵심 원리
- Kotlin in action 5장
- spring
- kotlin in action 정리
- 20055 컨베이어 벨트 위의 로봇
- 백준 13460 Python
- 코틀린
- 컨베이어 벨트 위의 로봇 Python
- 백준
- 20055
- Kotlin
- Python
- Kotlin In Action
- 코틀린인액션
- Kotlin in action 10장
- 7장 고급매핑
- 기능개발 python
- 자바 ORM 표준 JPA 프로그래밍 7장
- 스프링 핵심 원리 이해
- 스프링 컨테이너와 스프링 빈
- 13460 구슬탈출 2
- Kotlin in action 6장
- 고급매핑
- 코틸린인액션
- 싱글톤 컨테이너
- Kotlin in action 3장
- 스프링 핵심 원리 - 기본편
- KotlinInAction
- 객체 지향 설계와 스프링
- 백준 20055 컨베이어 벨트 위의 로봇
Archives
- Today
- Total
기록하는 습관
[실시간 랭킹] 실시간 랭킹 프로세스 정리 및 생각 본문
실시간 랭킹 업데이트 프로세스
** user1 -> user2 Ranking 관계를 여러 개 둘 경우
Ranking { score: 최종 점수, like: 좋아요 개수, comment: 댓글 개수, follow: follow 여부, date: 날짜 }
- like, comment, 개수를 넣은 이유는 total 점수 뿐만 아니라, 나중에 like, comment 별로도 실시간랭킹을 줄 수 있게 하기 위해.
< 프로세스 >
User1 -> user2 에게 like, comment action을 한다면
- user1 -> user2 FOLLOW 관계가 있으면
- user1 -> user2에게 해당 date의 RANKING Relation이 존재하는지 확인
- 있으면 like, comment, total score 점수 업데이트.
- 없으면 RANKING Relation 생성 후 점수 업데이트
- FOLLOW 관계가 없으면 랭킹 생성하지 않음.
- user1 -> user2에게 해당 date의 RANKING Relation이 존재하는지 확인
확장성:
- 1일마다 랭킹 데이터가 쌓이기 때문에 실시간 랭킹 변화 그래프를 보여줄 수 있음.
장점:
- 소통이 없는 친구들간의 불필요한 Ranking Relation을 형성하지 않아도 됨.
문제점:
- Follow 관계에 있는 유저이지만 Ranking Relation이 없을 수도 있음.(like, comment action을 하지 않는 이상) 이렇게 되면 feed에 친밀도 순으로 정렬을 하기가 어려워짐.
- DB 용량을 생각해 일정 주기(ex: 3개월)마다 Ranking Relation을 지워줘야 함.
** user1 -> user2 Ranking 관계를 한 개 둘 경우
가정) user1, user2가 follow를 맺을 때 RANKING 관계를 생성하고, unfollow 할 때 RANKING관계를 삭제한다. -> 이럴 경우 Ranking Relation에 follow property를 굳이 두지 않아도 됨.
Ranking { score: 최종 점수, like: 좋아요 개수, comment: 댓글 개수 }
< 프로세스 >
User1 -> user2 에게 like, comment action을 한다면
- user1 -> user2 FOLLOW 관계
- 있으면 Ranking에 like, comment, total score 점수 업데이트.
- 없으면 랭킹 생성하지 않음.
확장성:
- Feed 등의 친밀도 랭킹이 필요한 곳에서 바로 정렬해 사용할 수 있음.
문제점:
- 하루를 주기로 한다면, 하루가 넘어가는 시점에 batch로 모든 Ranking Relation을 초기화 해줘야함.
- 소통이 없는 user들간의 불필요한 Ranking 관계 형성
** 최종 나의 생각:
- 1번과 2번중에 확장성을 생각한다면 feed에 친밀도를 반영하는게 나으므로 2번이 좋을 듯 함.
- 2번 방법을 쓰게 된다면 Ranking을 굳이 만들어 줘야 할 필요가 있을까?가 의문. Follow 관계에서 property에 점수를 추가하면 Ranking Relation을 또 만들지 않고 더 좋지 않을까..?
'스마일게이트 인턴 - Dev Camp' 카테고리의 다른 글
[스마일게이트 인턴] nGrinder를 이용한 성능 테스트 (0) | 2021.02.10 |
---|---|
[스마일게이트 인턴] 추천 피드 (0) | 2021.02.10 |
[개념/적용] MQ에 대한 개념 및 적용 (0) | 2021.01.26 |
[Dev Camp] 2주차 개인 프로젝트 - 설계 및 개념 정리 (0) | 2020.12.15 |
MySQL 8.0 - Authentification Error (0) | 2020.12.15 |
Comments