게임 통계 서버에서 사용자 활동을 추적하기 위한 테이블 구조는 플레이어의 행동을 세밀하게 기록하고, 이를 바탕으로 다양한 통계를 생성하는 데 중점을 둡니다. 사용자 활동 추적을 위한 테이블 구조는 일반적으로 로그 기반 이벤트 테이블과 메타데이터 테이블로 구성됩니다. 여기서는 각 테이블의 역할과 구조를 설명하고, 이를 구현할 때 고려해야 할 사항을 정리합니다.
1. 주요 테이블 구조
1.1 사용자 이벤트 로그 테이블 (user_event_log
)
이 테이블은 유저의 모든 게임 내 활동을 시간순으로 기록하는 로그 테이블입니다. 각각의 활동(이벤트)을 하나의 레코드로 저장하며, 시간에 따른 유저 행동을 추적하는 핵심 테이블입니다.
테이블 필드:
필드 이름 |
데이터 타입 |
설명 |
event_id |
INT |
고유 이벤트 식별자 (자동 증가) |
user_id |
INT |
유저 식별자 |
event_type |
VARCHAR |
이벤트 종류 (예: 로그인, 구매, 레벨 업 등) |
event_timestamp |
DATETIME |
이벤트 발생 시각 |
event_details |
JSON (TEXT) |
이벤트와 관련된 추가 정보 (예: 아이템 ID, 위치 등) |
session_id |
VARCHAR |
세션 식별자 (유저가 게임에 접속한 세션 ID) |
설명:
user_id
: 특정 유저의 활동을 구분하기 위한 고유 식별자.
event_type
: 이벤트의 유형을 정의합니다. 예를 들어, 로그인(login), 구매(purchase), 레벨 업(level_up) 등 다양한 게임 내 이벤트를 기록할 수 있습니다.
event_timestamp
: 활동이 발생한 정확한 시간을 기록합니다. 이를 통해 시간에 따른 패턴 분석이 가능합니다.
event_details
: 이벤트와 관련된 구체적인 정보를 JSON 형식으로 저장하여 유연성을 제공합니다. 예를 들어, 구매한 아이템의 ID나 금액을 저장할 수 있습니다.
session_id
: 특정 세션에서 발생한 여러 이벤트를 그룹화하여 분석할 때 유용합니다.
예시 데이터:
event_id |
user_id |
event_type |
event_timestamp |
event_details |
session_id |
1 |
1001 |
login |
2024-10-01 09:00:00 |
{} |
session_001 |
2 |
1001 |
purchase |
2024-10-01 09:05:00 |
{"item_id": 201, "amount": 5.99} |
session_001 |
3 |
1002 |
level_up |
2024-10-01 10:00:00 |
{"new_level": 10} |
session_002 |
4 |
1001 |
logout |
2024-10-01 09:30:00 |
{} |
session_001 |
1.2 사용자 세션 테이블 (user_session
)
이 테이블은 유저의 접속 및 로그아웃 정보를 기록하는 테이블입니다. 세션 데이터는 유저가 게임에 머무르는 시간을 추적하고, 특정 세션 동안 발생한 이벤트들을 연결하는 데 유용합니다.
테이블 필드:
필드 이름 |
데이터 타입 |
설명 |
session_id |
VARCHAR |
세션 고유 식별자 |
user_id |
INT |
유저 식별자 |
login_timestamp |
DATETIME |
유저가 게임에 로그인한 시각 |
logout_timestamp |
DATETIME |
유저가 게임에서 로그아웃한 시각 |
session_duration |
INT |
세션 동안의 총 플레이 시간 (분 단위) |
설명:
session_id
: 세션에 대한 고유 식별자. 이 값을 통해 user_event_log
와 연결하여 세션 동안 발생한 모든 이벤트를 추적할 수 있습니다.
login_timestamp
, logout_timestamp
: 각각 유저의 로그인 및 로그아웃 시간을 기록합니다.
session_duration
: 로그아웃 시점을 기준으로 플레이한 시간을 계산하여 저장합니다.
예시 데이터:
session_id |
user_id |
login_timestamp |
logout_timestamp |
session_duration |
session_001 |
1001 |
2024-10-01 09:00:00 |
2024-10-01 09:30:00 |
30 |
session_002 |
1002 |
2024-10-01 10:00:00 |
2024-10-01 10:50:00 |
50 |
1.3 구매 내역 테이블 (purchase_log
)
유저의 인게임 구매 기록을 관리하는 테이블입니다. 구매 로그는 주로 매출 관련 통계 및 유저의 구매 성향을 분석하는 데 사용됩니다.
테이블 필드:
필드 이름 |
데이터 타입 |
설명 |
purchase_id |
INT |
구매 고유 식별자 (자동 증가) |
user_id |
INT |
유저 식별자 |
purchase_timestamp |
DATETIME |
구매 발생 시각 |
item_id |
INT |
구매한 아이템 ID |
amount |
DECIMAL |
결제 금액 |
currency |
VARCHAR |
결제한 통화 (USD, EUR 등) |
session_id |
VARCHAR |
구매가 발생한 세션 ID |
설명:
user_id
: 구매한 유저를 추적합니다.
purchase_timestamp
: 구매가 이루어진 정확한 시간 기록.
item_id
: 구매한 아이템의 고유 ID. 이를 통해 어떤 아이템이 인기가 있는지 분석할 수 있습니다.
amount
: 구매 금액을 저장하며, 통화 종류를 currency
필드에서 함께 저장하여 글로벌 게임의 다양한 화폐 단위 처리를 지원합니다.
예시 데이터:
purchase_id |
user_id |
purchase_timestamp |
item_id |
amount |
currency |
session_id |
1 |
1001 |
2024-10-01 09:05:00 |
201 |
5.99 |
USD |
session_001 |
2 |
1002 |
2024-10-01 10:20:00 |
202 |
9.99 |
USD |
session_002 |
1.4 레벨/성장 추적 테이블 (user_level_log
)
유저의 레벨 상승 및 성장 관련 기록을 추적하는 테이블입니다. 게임 내에서 유저의 성장을 시간에 따라 분석하는 데 도움을 줍니다.
테이블 필드:
필드 이름 |
데이터 타입 |
설명 |
level_log_id |
INT |
고유 레벨 로그 식별자 (자동 증가) |
user_id |
INT |
유저 식별자 |
new_level |
INT |
유저가 도달한 새로운 레벨 |
level_up_timestamp |
DATETIME |
레벨 상승이 이루어진 시간 |
session_id |
VARCHAR |
레벨 상승이 이루어진 세션 ID |
예시 데이터:
level_log_id |
user_id |
new_level |
level_up_timestamp |
session_id |
1 |
1001 |
10 |
2024-10-01 10:15:00 |
session_001 |
2 |
1002 |
12 |
2024-10-01 11:00:00 |
session_002 |
2. 활용 예시
이러한 테이블 구조를 통해 다음과 같은 사용자 활동을 추적할 수 있습니다:
- DAU/MAU 계산:
user_event_log
에서 특정 기간 동안의 로그인 이벤트를 집계하여 활성 유저 수를 계산할 수 있습니다.
- 구매 행동 분석:
purchase_log
를 통해 유저의 구매 패턴 및 아이템 선호도를 분석할 수 있습니다. 이는 게임 내 경제 밸런스 조정에 중요한 데이터가 됩니다.
- 세션 분석:
user_session
테이블을 통해 유저가 하루 평균 얼마나 오래 게임을 즐기는지 분석할 수 있으며, 세션당 발생하는 이벤트 빈도도 파악할 수 있습니다.
- 레벨 상승 패턴 분석:
user_level_log
를 사용하여 유저들이 특정 레벨에서 얼마나 오랫동안 머무는지, 레벨 업 속도를 분석할 수 있습니다.
결론
사용자 활동 추적을 위한 테이블 구조는 게임 내 다양한 이벤트와 상호작용을 기록하고, 이를 바탕으로 유저의 활동 패턴을 분석하는 데 필수적입니다. 로그 기반 구조를 통해 시간에 따른 유저 행동을 쉽게 분석할 수 있으며, 이는 게임의 운영 및 분석에 중요한 인사이트를 제공합니다.