Вы можете использовать существующие облачные сервисы, доступные в облачной платформе Google.
Google BigQuery , Google Cloud Firestore , Google App Engine (CRON Jobs), Google Cloud Tasks
Услуги могут быть использованы для решения проблем, упомянутых выше:
1) Google BigQuery: здесь вы можете определить схему для данных, для которых вы собираетесь выполнять SQL-запросы. BigQuery поддерживает стандартные и устаревшие SQL-запросы.
2) Каждый голос может быть помещен в определенные таблицы BigQuery с помощью сервиса потоковой вставки.
3) Каждый нажатый голос может вызвать службу пересчета, которая вычисляет статистику, выполняя определенные запросы SQL, и результаты запроса могут храниться в виде документов в коллекциях в Google Cloud Firestore.
4) Google Cloud Firestore: здесь вы можете хранить живую статистику пользователя. Это база данных в режиме реального времени, поэтому вы сможете настроить прослушиватели для изменений статистики и отобразить изменения, как только статистика будет пересчитана.
5) В том же сервисе, который вставляет каждый голос, создайте новую запись с «syncId» в другой таблице. Идея состоит в том, чтобы сгруппировать количество голосов, поданных за определенный интервал, в соответствующий ему синхронизирующий идентификатор. SyncId может быть дополнен временной меткой. В соответствии с вашим требованием может быть установлен конкретный интервал времени, чтобы пересчет мог быть запущен с использованием службы заданий CRON, которая вызывает службу пересчета в пределах интервала. Как только пересчет, связанный с конкретным syncId, завершен, запись, соответствующая syncId, должна быть помечена как завершенная.
Мы используем вышеуказанные технологии для создания веб-приложения на Google Cloud Platform, где входные данные записываются в Google Firestore, а затем вставляются в поток потоков в Google BigQuery. Данные, хранящиеся в BigQuery, запрашиваются через 30 секунд каждого обновления с использованием запросов SQL, а результаты запроса сохраняются в Google Cloud Firestore для обслуживания панелей мониторинга, которые автоматически обновляются с использованием прослушивателей, настроенных для коллекции, в которой хранится информация панели мониторинга.