Я пытаюсь создать сводную панель в режиме реального времени для огромного количества (около 100К) точек данных. Текущая версия корректно отслеживает изменения в реальном времени после начальной загрузки, но на панели инструментов нет данных в течение примерно 4 секунд при первой загрузке.
Данные были денормализованы, поэтому by_date
имеет такую структуру один ниже, каждая дата содержит тысячи uid
клавиш, только последняя доступная дата актуальна для приборной панели.
{
[date: string]: {
[uid: string]: {
values: number;
status: boolean;
};
};
}
Функция прослушивания в реальном времени - одна ниже.
function observe() {
db.ref("by_date")
.orderByValue()
.limitToLast(1) // only last available date is loaded
.on("value", function (dataSnapshot) {
const data = dataSnapshot.val();
// data json object is put in a state variable
// changes on the state will trigger a parial dashboard refresh
setLastDayReportsDb(data);
});
}
То, что я пытаюсь найти, - это способ переноса данных в виде потока или разбивки на страницы, но при этом продолжать прислушиваться к любым изменениям в значениях, чтобы сохранить живой аспект панели управления в реальном времени.