아이템 데이터베이스 구조

게임 내 아이템 데이터베이스의 구조와 설계 방식에 대한 상세 설명입니다.

데이터베이스 구조 개요
아이템 데이터베이스의 핵심 구성과 설계 원칙을 설명합니다.

기본 구조

아이템 데이터베이스는 게임 내 모든 아이템의 기본 정보와 속성을 저장하고 관리하는 핵심 시스템입니다. 효율적인 데이터 접근과 관리를 위해 계층적 구조를 채택하고 있습니다.

기본 정보

  • 고유 식별자
  • 이름 및 설명
  • 아이템 유형
  • 기본 속성

세부 속성

  • 능력치 정보
  • 요구사항
  • 제한사항
  • 특수 효과

메타데이터

  • 버전 정보
  • 생성/수정 시간
  • 태그 정보
  • 관리 데이터

시스템 데이터

  • 거래 정보
  • 드롭 설정
  • 획득 조건
  • 이벤트 데이터

데이터 계층

아이템 데이터는 여러 계층으로 구성되어 있으며, 각 계층은 특정 목적과 역할을 담당합니다. 이러한 계층 구조는 데이터의 일관성과 확장성을 보장합니다.

1. 기본 계층

아이템 원형

모든 아이템의 기본이 되는 정보를 저장합니다. 이름, 설명, 기본 속성 등이 포함됩니다.

2. 특성 계층

아이템 특성

아이템의 고유한 특성과 능력치 정보를 저장합니다. 장비 능력치, 소비 효과 등이 포함됩니다.

3. 인스턴스 계층

아이템 인스턴스

실제 게임 내에서 존재하는 아이템의 상태 정보를 저장합니다. 내구도, 강화 수치 등이 포함됩니다.

데이터 관계

아이템 데이터베이스 내의 다양한 데이터 간의 관계를 정의하고 관리합니다. 이러한 관계는 아이템 시스템의 복잡한 상호작용을 가능하게 합니다.

아이템 세트 관계

세트 아이템 A
세트 효과 1
세트 아이템 B
세트 효과 2
세트 아이템 C
세트 효과 3
세트 아이템 D
세트 효과 4

제작 관계

재료 아이템 (3개)
결과 아이템 (1개)

저장소 구조

아이템 데이터는 효율적인 접근과 관리를 위해 여러 저장소에 분산되어 저장됩니다. 각 저장소는 특정 목적에 최적화되어 있습니다.

주 저장소

MySQL
아이템의 기본 정보와 관계 데이터 저장

캐시 저장소

Redis
자주 접근하는 아이템 데이터의 고속 캐싱

검색 저장소

Elasticsearch
아이템 검색과 필터링을 위한 인덱싱

데이터 흐름

아이템 데이터의 생성부터 사용까지의 전체 흐름을 정의합니다. 각 단계에서의 데이터 처리와 변환 과정을 포함합니다.

단계별 설명

1. 데이터 생성 단계

아이템의 기본 정보부터 특수 속성까지 단계적으로 데이터를 생성하고 구성합니다. 메타데이터를 포함한 모든 필요한 정보가 이 단계에서 정의됩니다.

2. 데이터 검증 단계

생성된 데이터의 유효성을 다각도로 검증합니다. 필수 필드, 값 범위, 타입별 특수 요구사항 등을 확인하여 데이터의 무결성을 보장합니다.

3. 저장 단계

검증된 데이터를 메인 데이터베이스에 저장하고, 캐시와 검색 인덱스에도 동기화하여 빠른 접근과 검색이 가능하도록 합니다.

4. 사용 단계

캐시 우선 조회 전략을 통해 효율적으로 데이터를 제공하며, 필요한 경우 데이터베이스를 조회하고 캐시를 갱신합니다.

데이터베이스 스키마

erDiagram Items ||--o{ ItemInstances : "has" Items ||--o{ ItemProperties : "has" Items ||--o{ ItemEffects : "has" Items }|--|| ItemTypes : "belongs_to" Items }|--|| ItemRarities : "has" ItemSets ||--|{ Items : "contains" ItemInstances }|--|| Players : "owned_by" ItemInstances ||--o{ ItemModifiers : "has" Items { string id PK string name string description int type_id FK int rarity_id FK int level string icon_url timestamp created_at timestamp updated_at int version } ItemInstances { string id PK string item_id FK string player_id FK int quantity int durability boolean is_bound timestamp acquired_at timestamp expires_at } ItemProperties { string id PK string item_id FK string property_key string property_value string property_type } ItemEffects { string id PK string item_id FK string effect_type float effect_value int duration float trigger_chance } ItemTypes { int id PK string name string category boolean stackable int max_stack } ItemRarities { int id PK string name string color float stat_multiplier int max_modifiers } ItemSets { string id PK string name string description int required_pieces } ItemModifiers { string id PK string instance_id FK string modifier_type float modifier_value timestamp expires_at } Players { string id PK string name int level timestamp created_at timestamp last_login }

주요 테이블 설명:

  • Items: 아이템의 기본 정보를 저장하는 마스터 테이블
  • ItemInstances: 실제 게임 내에 존재하는 아이템 인스턴스
  • ItemProperties: 아이템의 세부 속성 정보
  • ItemEffects: 아이템의 특수 효과 정보
  • ItemTypes: 아이템 유형 분류
  • ItemRarities: 아이템 희귀도 정보
  • ItemSets: 세트 아이템 정보
  • ItemModifiers: 아이템 인스턴스의 수정자(강화, 인챈트 등)