2025. 3. 29. 06:39ㆍ개발/🦉 뀨업
오늘 밤샘 코딩하기루 했당...!
다들 바쁘고 개발은 자꾸 늘어지고 2차 릴리즈는 해야 돼서 오늘 밤새서 기능 완성하기루 했다
그래서 알바 끝나구 학교 공도 달려갔당 ✌
기여도 랭킹 API
1 ) 기여도 랭킹 로직 확정
1. 하루 한 번 전체 업데이트
: 학생 한명씩 돌면서 각 학생이 푼 문제 불러오기
- student : 각 학생이 푼 문제 삽입
- problem : 문제 삽입하면서 푼 사람 수 +1 해주기
2. 리프레시 버튼 눌렀을 때 특정 학생에 대해서 업데이트
: 특정 학생이 푼 문제 업데이트하기
- student : S(basic), S(rare)값 업데이트
- problem : 업데이트된 문제 푼 사람 수 +1 해주기
2 ) DynamoDB
DynamoDB
: AWS에서 제공하는 완전관리형 NoSQL 데이터베이스
: Key-Value 및 문서(Document) 저장 방식의 DB
✅ 특징
- 서버리스(Serverless)
- 별도로 서버를 운영할 필요 없이 AWS에서 자동 관리
- 데이터 증가에 따라 자동 확장(Scaling)되므로 성능 최적화에 신경 쓸 필요가 적음
- NoSQL 데이터베이스
- 관계형 DB와 달리 고정된 스키마가 없음
- JSON 형식으로 데이터를 저장하며, 컬럼을 자유롭게 추가 가능
✅ 테이블 구조
Primary Key (기본 키)
: DynamoDB에서는 모든 테이블이 기본 키(Primary Key)를 반드시 가져야 함
- Partition Key (해시 키, 단일 키 기반) : 단순한 Key-Value 저장 방식
- Composite Key (해시 키 + 정렬 키, 복합 키 기반) : Partition Key + Sort Key 조합으로 구성, Sort Key 기준으로 정렬
Attributes (속성, 컬럼 개념)
- DynamoDB는 RDBMS처럼 고정된 컬럼을 가지지 않음
- 한 아이템(레코드)에 저장되는 속성(Attribute)은 JSON 형태로 자유롭게 변경 가능
3 ) 기여도 업데이트 방식
DynamoDB 테이블
<Student>
handle | total | basic | rare | problem |
handle : 백준 핸들(partition key) / total : 기여도 점수(sort key) / basic : 난이도 점수 합 / rare : 희소성 점수 합 / problem : 푼 문제 번호들
<Problem>
problem_id | solved_num |
problem_id : 백준 문제 번호 / solved_num : 푼 사람 수
기여도 수식
S(basic) = i=1 ∑ n (Ki)
n: 총 문제의 개수
Ki: 해당 문제(i)의 난이도 점수
K => Bronze V는 1점, Bronze IV는 2점, ..., Ruby I는 30점
S(rare) = i=1 ∑ n (K * e ^(− λ*Ni))
n: 총 문제의 개수
K: 기본 가중치 ( 10 )
λ: 감소율 (0.02)
Ni: 문제 i를 푼 사람 수
S(total) = S(basic) + S(rare)
리프레시 버튼 업데이트 로직
리프레시 누르면
📍 기존 데이터베이스 조회(student) : 특정 학생이 푼 문제 리스트 조회
📍 업데이트 시점에 특정 학생이 푼 문제 리스트 불러오기
: S(basic) update -> 각 문제 번호별로 난이도 구하기, 난이도 점수 더해주기
: S(rare) update -> 각 문제 번호별로 푼 이대 학생 수 구하기, 10 * e ^(− 0.02*Ni ) 값 계산해서 더해주기
우엥 졸려...
'개발 > 🦉 뀨업' 카테고리의 다른 글
🦉 뀨업 - 이화 백준 사이트 리팩토링 ( 9 ) - 학생별 기여도 순위 조회 API ( 1 ) (0) | 2025.03.13 |
---|---|
🦉 뀨업 - 이화 백준 사이트 리팩토링 ( 8 ) - 03.07 회의 내용 (0) | 2025.03.07 |
🦉 뀨업 - 이화 백준 사이트 리팩토링 ( 7 ) - MyBatis 페이지네이션 (0) | 2025.03.05 |
🦉 뀨업 - 이화 백준 사이트 리팩토링 ( 6 ) - CORS가 또... (0) | 2025.03.01 |
🦉 뀨업 - 이화 백준 사이트 리팩토링 ( 5 ) - CORS, 쿠키랑 싸우기 (0) | 2025.02.01 |