NDC/ETC

[NDC 2015] Key-Value Store를 사용한 대용량 게임 통계

MAKGA 2023. 1. 3. 23:07
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