게임 통계 서버에서 사용자 활동을 추적하기 위한 테이블 구조는 플레이어의 행동을 세밀하게 기록하고, 이를 바탕으로 다양한 통계를 생성하는 데 중점을 둡니다. 사용자 활동 추적을 위한 테이블 구조는 일반적으로 로그 기반 이벤트 테이블메타데이터 테이블로 구성됩니다. 여기서는 각 테이블의 역할과 구조를 설명하고, 이를 구현할 때 고려해야 할 사항을 정리합니다.


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

를 사용하여 유저들이 특정 레벨에서 얼마나 오랫동안 머무는지, 레벨 업 속도를 분석할 수 있습니다.


결론

사용자 활동 추적을 위한 테이블 구조는 게임 내 다양한 이벤트와 상호작용을 기록하고, 이를 바탕으로 유저의 활동 패턴을 분석하는 데 필수적입니다. 로그 기반 구조를 통해 시간에 따른 유저 행동을 쉽게 분석할 수 있으며, 이는 게임의 운영 및 분석에 중요한 인사이트를 제공합니다.

+ Recent posts