Я работаю над многопользовательской игрой в реальном времени, для которой потребуется база данных (для таких функций, как профили игроков, друзья, разблокировка, новости и т. Д.). Это стандартная игра для ПК (не на основе браузера), в которой будет использоваться клиент-сервер. архитектура. Я новичок в использовании баз данных и провел несколько исследований за последние несколько дней, когда наткнулся на горячие дебаты: RDBMS vs NoSQL. В настоящее время я склоняюсь к NoSQL, но после прочтения об использовании для каждого (RDBMS и NoSQL), я испытываю желание использовать оба. Я знаю, что это может показаться странным, но позвольте мне объяснить мою ситуацию:
У моей команды есть общий пакет веб-хостинга, который предлагает неограниченное хранилище mySQL и пропускную способность, единственное предостережение в том, что мы можем открыть только 25 соединений одновременно (правило общего хостинга). Я собираюсь использовать это для своего веб-сайта (типичное использование, без сомнения), чтобы публиковать новости, поддерживать функции сообщества (например, комментарии, загружать фан-арт и т. Д.) И тому подобное. Это все хорошо и хорошо - но! это то, где все становится интересным ... Я хочу показать ту же информацию, которая размещена на моем сайте, в игре. Это означает использование mySQL как для моего сайта, так и для моей игры. В дополнение к новостным сообщениям и тому подобному я планирую использовать его в игре для таких вещей, как чат и список серверов. Меня больше всего беспокоит это правило 25 соединений.
Что заставляет меня задать вопрос № 1: будет ли это работать и есть ли лучшая альтернатива?
Теперь, кроме этого, я прочитал о том, насколько хорошо NoSQL работает и подходит для игр в реальном времени (я могу ошибаться, я прошел через огромную войну RDBMS против NoSQL, чтобы попасть сюда и, вероятно, сгорел). По сути, я хотел бы использовать MongoDB для всех моих данных игровых объектов.
И снова, будет полезно, если я предоставлю некоторый контекст: я нашел хост (MongoLab), который предлагает бесплатный пакет MongoDB на 240 МБ, который я собираюсь использовать до тех пор, пока не понадобится обновление. Учитывая 240 МБ, я рассчитал, что смогу хранить примерно 60 000 игроков (если каждый игрок имеет примерно 4 КБ, и мы игнорируем другие вещи, которые могут быть сохранены). Место для хранения и необходимость платить больше в будущем (если наша игра будет успешной) не является проблемой. Единственная причина, по которой я сейчас собираюсь использовать MongoDB для всех моих данных игровых объектов, заключается в том, как часто к этим данным игровых объектов будут обращаться (например, когда игрок убит, берет предмет, стреляет из пистолета и т. Д.), Я также как прямые документы без схемы (которые упрощают отображение данных игровых объектов). Я должен отметить, что когда-то
Я намерен использовать тот же MongoDB на своем веб-сайте для отображения информации профиля игрока (меня не интересует полная согласованность, некоторая задержка с обновлениями в игре - это нормально). Что приводит меня ко второму вопросу, Вопрос № 2: это хорошая идея или есть что-то лучшее, что я должен сделать?
У игры будет опыт запуска, подобный этому:
- Клиент входит в систему (MongoDB)
- Клиент находится на домашней странице игры с чатами (MySQL)
- Клиент идет в список серверов (MySQL)
Клиент подключается к серверу и играет на нем
Сервер передает обновления для всех игроков (MongoDB)
Это просто способ, которым я представлял, что это будет работать. Вам это нравится, или у вас есть предложения по улучшению этого плана?