В настоящее время у меня есть приложение для социальной игры, использующее mongodb для своей базы данных. Мой вопрос: какие есть предложения, если я хочу создать систему начисления очков и бейджей? Бизнес-логика для достижений / значков может стать довольно сложной и нерегулярной, поэтому присуждение значков в режиме реального времени не представляется эффективным. Я представляю себе, что добавляю отслеживаемые действия в очередь где-то, например, Amazon SQS, или просто использую фид активности пользователя в качестве очереди, и у меня есть другой рабочий процесс, работающий в автономном режиме, который просто обрабатывает эффекты каждого действия / действия, чтобы увидеть, является ли порог для любой конкретный значок пересекается.
Меня беспокоит этот метод: кажется, что запросы к значкам могут стать довольно интенсивными, и мне также придется отслеживать очень большое количество действий. Я могу представить достижения, начиная от таких вещей, как значок для кого-то, кто занял 2-е место каждую неделю в течение последних 4 недель, или значок для кого-то, у кого есть друг в каждом из 50 штатов ... и т.д ...
Существуют ли более элегантные или проверенные методы для такого типа вещей? Имеет ли смысл использовать другую базу данных для достижений / каналов активности / таблиц лидеров, кроме mongo, для создания гибридной среды mongo / other db?
Является ли выбор типа Redis, Neo4J или просто старого SQL Server хорошим выбором для гибридного решения? Мне нравится Монго, так что он останется нашим основным БД, но любопытно посмотреть, поможет ли добавление еще одного БД в микс.