데이터베이스 (플레이어 프로필, 친구, 잠금 해제, 뉴스 등의 기능)가 필요한 실시간 멀티 플레이어 게임을 만들고 있습니다. 이것은 표준 PC 게임 (브라우저 기반이 아님)이며 클라이언트 서버를 사용합니다 건축물. 데이터베이스 사용에 익숙하지 않고 지난 몇 일 동안 RDBMS vs NoSQL과 같은 열띤 토론을 우연히 연구했습니다. 현재 NoSQL에 대해 기울고 있지만 각 용도 (RDBMS 및 NoSQL)에 대한 내용을 읽은 후에 두 가지를 모두 사용하고 싶습니다. 나는 그것이 이상하게 보일 수도 있다는 것을 알고 있지만 내 상황을 설명해 드리겠습니다.
우리 팀은 무제한 mySQL 저장 공간과 대역폭을 제공하는 공유 웹 호스팅 패키지를 가지고 있습니다. 단 한 번에 25 개의 연결 만 열 수 있습니다 (공유 호스팅 규칙). 뉴스 업데이트를 게시하고, 커뮤니티 기능 (댓글, 팬 아트 업로드 등)을 지원하기 위해 내 웹 사이트 (일반적인 사용법)에이를 사용하려고합니다. 다 괜찮아요!하지만! 이것은 흥미로운 일입니다. 게임 내 웹 사이트에 게시 된 것과 동일한 정보를 표시하고 싶습니다. 이것은 내 웹 사이트와 게임 모두에 mySQL을 사용한다는 것을 의미합니다. 뉴스 게시물 외에도 채팅 및 서버 목록과 같은 용도로 게임 내에서 사용할 계획입니다. 나는 그 25- 연결 규칙이 주로 걱정된다.
질문 1을하게하는 것은 어느 것입니까? : 이것이 효과가 있을까요? 더 나은 대안이 있습니까?
이 외에도, NoSQL의 성능에 대해 읽었으며 실시간 게임에 적합합니다 (잘못 될 수 있습니다. 여기에 도착하기 위해 거대한 RDBMS 대 NoSQL 불꽃 전쟁을 거쳤으며 아마도 화상을 입었습니다). 기본적으로 모든 게임 오브젝트 데이터에 MongoDB를 사용하고 싶습니다.
그리고 다시 한 번 문맥을 제공하면 도움이 될 것입니다. 240MB MongoDB 패키지를 무료로 제공하는 호스트 (MongoLab)를 찾았습니다. 업그레이드가 필요할 때까지 사용하려고합니다. 240MB가 주어지면 대략 60,000 명의 플레이어를 저장할 수 있다고 계산했습니다 (각 플레이어가 대략 4KB이고 저장 될 수있는 다른 것을 무시하는 경우). 스토리지 공간과 앞으로 더 많은 비용을 지불해야하는 것은 문제가되지 않습니다. 현재 모든 게임 오브젝트 데이터에 MongoDB를 사용하려는 유일한 이유는이 게임 오브젝트 데이터에 액세스하는 빈도 (예 : 플레이어가 죽거나 아이템을 집어 올리거나 총을 발사하는 등) 때문입니다. 또한 스키마가없는 간단한 문서 (게임 오브젝트 데이터를보다 쉽게 매핑 할 수있는 문서)와 같습니다. 한 번에
내 웹 사이트에서 동일한 MongoDB를 사용하여 플레이어 프로필 정보를 표시하려고합니다 (완전한 일관성에 관심이 없으며 게임 내 업데이트로 인해 약간의 지연이 발생합니다). 두 번째 질문 인 질문 # 2로 이어질 수있는 것은 무엇입니까?
게임은 다음과 비슷한 시작 환경을 갖습니다.
- 클라이언트 로그인 (MongoDB)
- 클라이언트는 채팅방이있는 게임 내 홈페이지에 있습니다 (MySQL)
- 클라이언트가 서버 목록으로 이동 (MySQL)
클라이언트가 서버에 연결하여 서버에서 재생
서버는 모든 플레이어 (MongoDB)의 업데이트를 전달합니다.
이것은 내가 작동 할 것이라고 상상 한 방식입니다. 이 방법이 나에게 좋습니까, 아니면이 계획을 개선 할 수있는 방법에 대한 제안이 있습니까?