길드 시스템 5편: 데이터 테이블(KeyValue) 최적화 팁과 길드 상점 설계
안녕하세요! '호랭이 물어갈 기획놈들' 입니다. 지난 포스팅들을 통해 길드 로비 UI와 출석, 기부 등 길드 시스템의 뼈대를 잡았습니다. 이제 유저들이 열심히 모은 '길드 코인(공헌도)'을 사용할 [길드 상점]을 기획할 차례입니다. 하지만 상점 설계와 판매 리스트 작성 전에 , 시스템 기획자라면 알아두면 좋은 KeyValue 관련 내용에 대해 이야기 하려고 합니다. 1. 데이터 테이블 최적화 KeyValue 이번에 이야기 드리는 길드 시스템처럼 대형 콘텐츠 제작 시 파생되는 데이터 테이블의 양이나 테이블 안에 컬럼의 개수가 상상을 초월할 정도로 많습니다. 특히 이번 길드 시스템의 경우 간단하게 잡아도 아래와 같이 구성됩니다. 길드 정보: 길드 레벨, 필요 공헌도, 레벨별 최대 인원 증가 테이블 길드 Auth: 길드장, 부길드장 등 직급별 권한 테이블 길드 출석: 출석 시 획득하는 공헌도 및 길드 코인 보상 테이블 길드 선물: 공헌도를 소모해 상자를 오픈하고 길드원과 나누는 보상 테이블 길드 기부: 무료/유료 기부 타입별 재화 획득 테이블 길드 연구: 연구 트리 및 레벨별 버프 수치 테이블 길드 레이드: 보스 스펙 및 토벌 보상 테이블 대충 읊어봐도 10개가 훌쩍 넘어가는 테이블을 작성해야 합니다. 이를 전부 개별 테이블로 쪼개서 서버 프로그래머에게 넘기면, 개발 시 연결할 테이블 찾아서 서버 프로그래머가 열심히 작업하느라 개발 리소스도 낭비되고 향후 라이브 서비스 시 관리도 매우 힘들어집니다. 이때 주요한 팁을 하나 말씀드리려고 합니다. 고정된 데이터는 Key-Value로 빼라! 이게 무슨 이야기야 라고 의아해 하실 수 있는데 컬럼 숫자가 적고(1개 ~ 3개), 라이브 서비스 중 구조적인 변경이 거의 없을 것으로 예상되는 기능(예: 길드 출석 보상, 길드 기부 보상) 같은 내용은 굳이 개별 테이블 보다는 'Key-Value'라는 말 그래도 키-값의 구조를 가진 공통의 테이블 하나에 몰아넣고 관리하는 ...