320x100
어떻게 만드나?
API로 15분 단위 경매장 snapshot 가져오기 (JSON, 물품 1개 = 1ROW)
[{"auc":1347942360, "item":14344, "owner":"Sanctuary", "bid":2041200}]
snapshot마다 아이템 ID 별로 묶어서 정리
- 최소 가격
- 평균 가격
- 중간 가격
- 물품 개수
이렇게 분석한 결과를 처음에는 mongodb에 저장
- JSON 포맷 저장하기에 간편
- 개발 도중 schema 변경 간편
=> 하지만 많은 데이터와 최소 유지 비용 증가로 인해 실패
가능하면 NoSQL로 구성
- 수평 확장이 편리
- 키에 여러 Column 추가 가능
Key는 서버, 시간, 아이템 ID로 만들고, Value에 시간대별로 가격 정보를 기록
Key | Value | |||
Srv_20230101 | 00:00 {min:3,avg:5,med:4.5} |
00:15 {min:3.5,avg:5,med:4} |
00:30 {min:3,avg:5,med:4.5} |
..... |
Srv_20230102 | 00:00 {min:3,avg:5,med:4.5} |
00:15 {min:3.5,avg:5,med:4} |
00:30 {min:3,avg:5,med:4.5} |
..... |
Srv_20230103 | 00:00 {min:3,avg:5,med:4.5} |
00:15 {min:3.5,avg:5,med:4} |
00:30 {min:3,avg:5,med:4.5} |
..... |
각 Key는 다른 서버에 저장되어 있어서 1개의 Key와 여러 Key 조회의 시간 차가 거의 없음
- 많은 데이터를 한꺼번에 조회 하는 것이 유리
- 데이터가 늘어도 조회 시간은 비슷
출처: http://ndcreplay.nexon.com/NDC2015/sessions/NDC2015_0053.html
320x100
'NDC > ETC' 카테고리의 다른 글
[NDC 2014] 헤테로지니어스 컴퓨팅CPU에서 GPU로 옮겨가기 (0) | 2021.12.04 |
---|