inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part6: 웹 서버

WebApi #3

db에 여러 테이블을 같이 get 할 수 있는 방법?

273

ddaengbi

작성한 질문수 9

0

예를 들면 [gameresult]라는 테이블이 게임 종류별로 여러 개 있다고 가정하고 유저별로 스코어가 테이블(gameresult1, gameresult2 ...)별로 저장되어있다고 했을 때, 각각 게임에 대한 유져별 스코어를 get하고싶은데, 테이블별로 하나씩 읽어서 유니티쪽에서 처리하면 뭔가 부하가 많이 걸릴 것 같아서.. 한번에 읽어서 나눠서 처리하는게 맞을거 같은데 방법이 있을까요? (테이블별 데이터모델 구조는 같습니다)

고민해보니 db구조가 잘못되있나 싶기도하고, 테이블은 하나로 고정하고 게임 종류 컬럼을 추가해서 분리를 했으면 예제로도 충분히 처리를 할 수 있었을텐데,, 하는 생각도 들지만,

혹시나해서 여러 테이블을 같이 참조해서 불러올 수 있는 방법이 있을지 알고싶습니다! 감사합니다.

rest-api web-api ASP.NET-Core blazor

답변 1

3

Rookiss

1.
일반적으로 게임이 다른데 DB를 같이 쓰는건
Account 정보를 제외하고는 바람직하진 않습니다. (프로젝트 관리 차원에서)
물론 동일한 포맷에 미니게임 타입과 같이 미세하게 다르다면
정말 type (int 등) 정보를 추가해서 구분이 가능하긴 하겠네요.

2.
SQL 구문으로 양쪽 결과를 합쳐 볼 수는 있겠지만,
테이블이 나뉘어져 있기 때문에 물리적으로 '한번에' 읽는 방법은 존재할 수가 없습니다.
정말 물리적으로 다른 공간에 저장되어 있으니 내부적으로는 각자 접근해야겠죠.

3.
DB에서의 핵심은 Index를 어떻게 거느냐에 따라 성능이 0~10000 사이로 왔다 갔다 하고
사실 말씀하신 접근 횟수는 그 나중의 문제입니다.
Index만 잘 걸려 있다면 두 테이블을 한번씩 Read하는 것은 아무 문제도 되지 않습니다.
실제로 MMO에서 User 정보는 최소 10테이블 이상으로 쪼개져 있는 경우가 많은데
(Quest, Achievement, Item, UserInfo, ...) 각기 접근해서
나중에 컨텐츠단에서 정보를 합친다고 딱히 문제가 되진 않습니다.

4.
마지막으로 컴퓨터의 성능에 약간의 믿음(?)을 가지시기 바랍니다.
Index가 잘 걸려 있는 상태에서 DB가 처리할 수 있는 데이터량은 상상을 초월합니다.
제가 이전 라이브 프로젝트에 있을 때 백업DB로 조회해본 결과
아이템 테이블에 데이터가 1000만 단위로 있었는데,
그럼에도 게임이 별다른 문제 없이 잘 돌아가는 것을 보고 감탄한 기억이 있습니다.
그에 비하면 말씀하신 gameResult는 귀여운 수준일 수도 있습니다 ㅎㅎ
(보통 gameResult를 1년치를 다 기록하진 않고 주기적으로 삭제해줄테니, 무한정 늘어나진 않겠죠)

클래스 라이브러리 (.NET Core)이 없으면 클래스 라이브러리 선택하시면 됩니다.

0

131

1

NET 9.0 버전에서의 레이아웃 적용

1

170

1

Visual Studio 2022에서 프로젝트 만들기 질문

0

311

2

MVC를 제대로 이해를 못했는데,

0

173

1

ASP.NET

0

151

1

LING #1 에서.. 서버 GC문제

0

262

3

자바스크립트 내용이 나오나요?

0

170

1

웹 사이트 보안

0

211

2

blazor실습 시 바인딩 관련 및 버튼이 동작하지 않는 이슈가 있으면? ( .NET 8.0 기준 )

3

372

1

Uri함수 파라미터 주소에 sslport번호를 넣으면 무한 로딩이걸림

0

497

2

An unhandled exception has occured. See browser dev tools for detail.

0

341

2

EFCore 포렌키 설정 관련 질문(Entity Framework Code First One-to-Many Relationship)

0

364

3

DB 설정 관련해서 질문 드립니다

0

424

3

10분 48초 부근에 안 되는 사람들 참고하세요

1

548

1

ArgumentException: Keyword not supported: 'trust server certificate'.

0

858

1

Need Summary 부분 질문있습니다!

0

311

1

계속 똑같은 에러가 뜹니다 ㅠㅠ

0

489

1

이번 강의 코드를 받을 수 있을까요?

0

371

1

ATOM이 2022년 12월 15일 기준 종료되었네요

0

565

1

CounterState 질문입니다.

0

401

1

"연결이 비공개로 설정되어 있지 않습니다." 오류가 뜰 경우

0

1824

2

백엔드 서버에 JPA를 사용해도 문제가 없을까요?

0

568

1

SendPostRequest 에서 POST 중복된 값이 추가되는 것을 방지하려면 어떻게 하면 될까요?

0

456

1

Task<WeatherForecast[]> 를 List<Task<WeatherForecast>> 이렇게 고친 후

0

399

1