안녕하세요.. <div><br></div> <div>솔직히 졸작입니다만...</div> <div><br></div> <div>단순히 졸작으로 끝나는게 아니라 실제 서비스로 운영해보려고 합니다.</div> <div><br></div> <div>음..... 리그 오브 레전드 API를 가져다가 사용하는데요, 제공받는 데이터가 상당히 많습니다.</div> <div><br></div> <div>일단 질적으로도 많지만 종류도 많으편이라..</div> <div><br></div> <div>여지껏 이렇게 많은 수의 데이터를 관리하거나 다뤄본적이 없어서 테이블을 어떻게 짜는게 더 효율적일지 도저히 감이 안잡히더라구요.</div> <div><br></div> <div>교수님을 찾아가서 여쭈울려고해도 DB 관련 교수님은 올해 학교에 안계시고...</div> <div><br></div> <div>해서 혹시 오유에서 도움을 얻을 수 있을까하여 이렇게 질문 드립니다...</div> <div><br></div> <div>만들려고 하는 프로젝트는, 흔히 보실 수 있는 전적조회 시스템 입니다.</div> <div><br></div> <div>혹 모르시는 분들은 이 싸이트를 참고하시면 됩니다.</div> <div><br></div> <div>www.op.gg 에 방문하셔서 skt t1 faker 를 검색하시면 해당 사용자의 최근 게임 데이터가 나오게 됩니다.</div> <div><br></div> <div>이러한 서비스를 만드려고 합니다.</div> <div><br></div> <div><br></div> <div><br></div> <div>우선 데이터는 게임서버로부터 받아와서 제 서버에 저장하는데...</div> <div><br></div> <div>받아오는 데이터에서... 컬럼의 수가 많다는 겁니다;;</div> <div><br></div> <div><br></div> <div><span style="font-size:9pt;line-height:1.5;">게임 결과 데이터를 받아옵니다.</span></div> <div>API는 JSON으로 제공되는데, 이걸 배열로 바꿔보면 다음과 같은 구조로 되어 있습니다.</div> <div>(데이터는 대부분 int형 입니다.)</div> <div>무려 경우에 따라 4차원 배열까지 갑니다;;</div> <div><br></div> <div>편의상 PHP로 말씀드리자면,</div> <div><br></div> <div>1차원 배열 : $data[games] ,$data[summonerId] : 두가지 입니다. 이 중 games는 다시 2차원 배열이 됩니다.</div> <div>2차원 배열(games) : $data[games][0] ~ $data[games][9] : 총 10개의 게임 데이터가 제공 되며, 다시 3차원 배열이 됩니다.</div> <div>3차원 배열(0) : $data<span style="font-size:9pt;line-height:1.5;">[games][0]</span><span style="font-size:9pt;line-height:1.5;">[championId], $data</span><span style="font-size:9pt;line-height:1.5;">[games][0]</span><span style="font-size:9pt;line-height:1.5;">[createData] .... 등 14가지 입니다. 이 중 2개는 또 4차원 배열이 됩니다;;;</span></div> <div>4차원 배열(fellowPlayers) : $data<span style="font-size:9pt;line-height:1.5;">[games][0][fellowPlayers][teamId] ...</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div>이 중에서 기본키로 사용할 수 있는건, 사용자 고유 번호와 게임 고유 번호 두가지 입니다.</div> <div><br></div> <div>고민은 이렇습니다.</div> <div>모든 배열을 무시하고 몽땅 한 테이블에 넣으려고 했습니다. 컬럼수가 약 96개 정도 됩니다.</div> <div>무식하지만(?) 나중에 데이터별 통계내기도 편할거 같다는 생각이 들었지만..</div> <div>아무래도 무식할 것 같다는 느낌이 들고, 이 상태로 이 데이터가 10억개, 50억개 쌓였을때도 괜찮을까? 하는 염려가 들었습니다.</div> <div><br></div> <div>그렇다고 일부 3차원 배열과 4차원 배열등을 별도 테이블로 만들려고하니</div> <div>일부는 연관을 시켜줄만한 고유 번호가 없습니다. 물론 임의로 넣으면 되겠지만...</div> <div>한 화면에 여러 테이블 정보를 다 보여주어야 하는데 괜히 쿼리문만 들어나는게 아닐까 합니다.</div> <div>또 이렇게 될 경우 오히려 관리가 어려워질까? 하는 생각이 들어서...</div> <div><br></div> <div>어떤 방법이 더 효율적인 방법이고, 무난한 방법인지 감이 잡히질 않습니다. ㅜ.ㅜ</div> <div><br></div> <div>1. 몽땅 한 테이블에 때려 넣는다. (컬럼수 약 96개)</div> <div>- 한개의 쿼리문으로 모든 데이터를 긁어올 수 있다.</div> <div>- 왠지 무식한거 같다.</div> <div><br></div> <div>2. 나눌 수 있다면 인위적으로 기본키를 만들어서라도 여러 테이블로 나눈다.</div> <div>- 사용자에게 뿌려줄때 여러 테이블에 쿼리를 날려야 한다.</div> <div>- 뭔가 잘 한건가?</div> <div><br></div> <div><br></div> <div>설명이 충분한지 모르겠습니다...</div> <div>이런 상황에서 테이블이나 데이터 취급을 어떻게 하는게 현명할까요?</div> <div>긴 글 읽어주셔서 감사합니다.</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.