Я працюю над багатокористувацькою грою в реальному часі, для якої буде потрібна база даних (для таких функцій, як профілі гравців, друзі, розблокування, новини тощо). Це стандартна гра для ПК (не на базі браузера) і використовуватиме клієнт-сервер архітектури. Я новачок у використанні баз даних і провів деякі дослідження за останні кілька днів, коли я натрапив на бурхливу дискусію: RDBMS проти 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)
Це якраз так, як я уявляв, що це буде працювати. Чи добре це вам здається чи у вас є пропозиції щодо вдосконалення цього плану?