Определенно возможно создать панель мониторинга с агрегированными данными непосредственно в базе данных Firebase Realtime.Но вам придется использовать другой подход, чем, например, с BigQuery.
В реляционных базах данных вы создадите панель мониторинга, выполнив запросы агрегации.Например, чтобы показать, сколько событий каждого типа, вы запустите что-то вроде SELECT type, COUNT(*) FROM events GROUP BY type
.
База данных реального времени Firebase (и большинство баз данных NoSQL) не имеет такой операции GROUP BY
, а неCOUNT()
метод.Таким образом, это означает, что вам придется загрузить все данные в вашу панель мониторинга и сгруппировать / подсчитать их там, что довольно дорого.Поэтому в базах данных NoSQL вы обычно сохраняете счетчик прогонов для каждого типа в базе данных и обновляете его при каждой операции записи.Хотя это накладывает накладные расходы на каждую операцию записи, сама панель мониторинга внезапно становится очень простой, когда вы делаете это.Пример простого счетчика см. В репозитории function-samples .
. Этот подход работает, только если вы заранее знаете, какие счетчики (и другие агрегаты) вы хотите отобразить на панели инструментов.,Если это не так, многие разработчики используют ночные резервные копии из базы данных реального времени для загрузки данных в другую систему, которая больше подходит для поисковых запросов, таких как BigQuery.
Любой подход может работать нормально.Правильный подход зависит от вашего конкретного варианта использования (например, знаете ли вы точные данные, которые вы хотите получить на панели инструментов, или вы все еще это выясняете?) И что вам наиболее удобно.