У меня есть поток событий и хранилище ключей. Размер значения ограничен 4Kb. Мероприятие не очень тяжелое - максимум сотни в день.
В этом значении мне нужно сохранить сериализованное представление структуры данных, которое обеспечивает эффективный механизм для чтения, хранения и обновления агрегированного количества событий в течение 3 месяцев с ежедневными и недельными скоплениями и раздвижными окнами 1/2 час.
Решение должно эффективно выполнять следующие задачи как для простых счетчиков событий, так и для стандартного отклонения счетчика событий. (максимальный период для всех перечисленных ниже задач 3 месяца):
- постоянные обновления (ленивым способом - по мере поступления соответствующего события) - в случае, если последние рассчитанные агрегаты слишком стары - выкидывают устаревшие данные и создают новые агрегации
- обновление, вызванное запросами чтения (запросы пользователей некоторые данные, например, количество событий для конкретного пользователя, стандартное отклонение количества событий для одного пользователя и т.д.) в случае, если последние рассчитанные скопления являются слишком старыми - бросьте их
Интересно: есть какая-либо java-среда с открытым исходным кодом, которая может помочь в реализации вышеперечисленного?
Я также был бы признателен за рекомендации по дизайну: шаблоны дизайна и т.д.
Решение не сложно реализовать с нуля с помощью стандартного java-интерфейса API, но перед этим я буду благодарен за предложения с открытым исходным кодом (если они есть).
Googling для решения не привел меня нигде, кроме некоторых теоретических статей, решений на базе SQL и IBM (инструментарий с открытым исходным кодом, называемый SPL).