Cassandra агрегация данных и накопление - PullRequest
0 голосов
/ 21 октября 2018

Каков наилучший способ агрегирования и хранения данных в кластере Cassandra?Я имею в виду, имея таблицу с часовыми данными, агрегировать по дням и сохранять в другой таблице.Это может быть просто достигнуто с помощью выбора и вставки для каждого ключа / периода, но есть ли лучший или другой способ?А как насчет материализованных представлений?

1 Ответ

0 голосов
/ 21 октября 2018

Материализованные представления

Использование материализованных представлений в cassandra весьма ограничено:

  • все первичные ключи из исходной таблицы должны отображаться в представлении, возможно, в другомorder.

  • агрегатные функции, такие как avg, не могут использоваться

  • GROUP BY не разрешено

Так что я не думаю, что он подходит для вашего накопительного времени или других агрегатов.

Кстати, материализованное представление задним числом классифицировано как экспериментальное и не рекомендуется для новых производственных применений.

Ручное решение

Это замечательно, как только данные для агрегирования будут заморожены навсегда ... Если нет, согласованность будет трудно обрабатывать.

Индексы

Совершенно другим подходом к свертыванию было бы использование Elassandra для индексации временного столбца.Мы создадим вторичный индекс эластичного поиска и будем автоматически синхронизировать его.Затем используйте API-интерфейс Embedasticsearch для запроса в различных временных масштабах, используя агрегирование гистограммы дат .

Таким образом, результат агрегирования не сохраняется, а вычисляется в реальном времени из эффективного вторичногоструктура данных.

...