lepard
@lepard
function selfDevelopment() { selfDevelopment() }

Node.js(как вариант для хранения временных данных)?

Добрый день.
Хочу разобрать интересующий меня вопрос на примере покера(так как большинство понимают его суть и правила).
Есть приложение Node+Express+Socket.io+другие вспомогательные библиотеки. Вот допустим в моем приложении уже существует БД, с помощью которой регистрируются пользователи. Выбор комнат со ставкой пользователем реализуется с помощью socket.io.
И вот сам вопрос, а сам процесс игры(какие карты сейчас на столе, какие карты у игроков в руках) лучше в БД записывать или можно с помощью массивов/объектов? И почему?
  • Вопрос задан
  • 1628 просмотров
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
В БД (или быстрый кэш, типа Redis). Причин несколько:
  • Ваше приложение может упасть. Игрокам не понравится, если у них вдруг пропадут карты. БД тоже падают, но вероятность этого гораздо меньше (у них больше разработчиков и тестеров).
  • Массивы в памяти не масштабируются. Положим, пару десятков одновременных партий в памяти держать можно, но когда счет пойдет на тысячи, это будет жрать RAM, плюс тормоза на GC. А БД можно вынести на отдельный сервер и даже на отдельный кластер.


Ну, понятно, что в учебном примере пофиг на надежность и масштабируемость, но почему бы не делать сразу правильно?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@LiguidCool
Я бы сказал NoSQL или память.
Это от приложения конечно зависит, но если ляжет сервер, то думаю данные сессий один фиг надо обнулить. Хранить в память всегда быстрее.
Ответ написан
Комментировать
dummyman
@dummyman
диссидент-схизматик
Есть вариант быстрее БД - это файлы записанные в раздел с tmpfs.
При загрузке сервера создаешь временный диск на N гигабайт.
Сохраняешь туда все что нужно. И не будет страшны падения ноды и серва БД.
Можно даже со всей статикой сервиса, если речь идет о web, хуже не будет.
Но важно следить за переполнением памяти и стабильностью ОС.
Лично у меня куча серверов в обслуживании с приложениями node, где uptime больше 365 дней. Полет нормальный.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы