Как механизмы правил CEP хранят данные о времени?

Я думаю о разработке системы обработки событий. Сами по себе правила не проблема. Меня беспокоит то, как хранить данные о событиях, чтобы я мог эффективно отвечать на такие вопросы / факты, как:

Если количество событий типа A за последние 10 минут равно N, а среднее количество событий типа B в минуту за последние M часов равно Z, а текущее текущее среднее значение другой метрики - Y ... тогда запускается какое-то событие ( или сохранить новый факт / событие).

Как Esper / Drools / MS StreamInsight хранят свои данные, зависящие от времени, чтобы они могли эффективно вычислять свойства потока событий? ¿Они просто хранят его в базах данных SQL и непрерывно запрашивают их?

Обрабатывают ли правила предварительную обработку, чтобы они знали заранее, какие «знания» им нужно хранить?

Спасибо

РЕДАКТИРОВАТЬ: я нашел то, что я хочу, называется обработкой потока событий, и пример википедии показывает, что я бы нравится делать:

WHEN Person.Gender EQUALS "man" AND Person.Clothes EQUALS "tuxedo"
FOLLOWED-BY
  Person.Clothes EQUALS "gown" AND
  (Church_Bell OR Rice_Flying)
WITHIN 2 hours
ACTION Wedding

Тем не менее остается вопрос: как реализовать такое хранилище данных? Ключ - «В ТЕЧЕНИЕ 2 часов» и способность обрабатывать тысячи событий в секунду.


person marianov    schedule 16.12.2014    source источник


Ответы (2)


Esper анализирует правило и сохраняет только производное состояние (агрегаты и т. Д., Если они есть), а также, если это необходимо правилом, подмножество событий. Эспер позволяет определять контексты, как описано в книге Офера Эциона и Питера Ниблета. Рекомендую прочитать. Указав контекст, Esper может минимизировать количество сохраняемого состояния и упростить чтение запросов.

person user650839    schedule 16.12.2014
comment
Итак, ответ в том, что Esper заранее разбирает все правила, чтобы знать, какое состояние сохранить? Вы знаете, какой тип структуры данных он использует для хранения состояния? - person marianov; 17.12.2014
comment
Структура данных зависит от того, какое состояние необходимо сохранить. Например, существует около 30 окон данных и около 30 агрегатов, шаблонов и так далее. У каждого своя собственная структура данных. Документацию по Esper можно найти по адресу esper. codehaus.org/esper-5.1.0/doc/reference/en-US/html_single/ - person user650839; 17.12.2014

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

Сохранение событий во (внешней) базе данных будет слишком медленным.

person laune    schedule 16.12.2014
comment
Я думаю, что именно в этом Esper имеет преимущество перед Drools, в EPL он разработан, чтобы указать, какие события сохраняются, если таковые имеются. Т.е. если Esper EPL не объявляет окно данных, Esper не сохраняет события (исключения: шаблоны и распознавание совпадений по стандарту SQL) - person user650839; 17.12.2014
comment
Можете ли вы указать какую-нибудь документацию о том, как указать окно данных для каждого правила? - person marianov; 17.12.2014
comment
@marianov Получите документацию Drools для выпуска 6.x. См. Окно: время и другие подробности обработки событий. - person laune; 17.12.2014
comment
Забавное (по крайней мере для меня) исключение для внешней базы данных будет слишком медленным. Комментарий - это база данных на основе столбцов, такая как KDB + (kx.com/kdb-plus.php), который довольно популярен на торговых площадках для оценки изменений цен с течением времени. Однако изучать q - это не весело. :) - person Steve; 17.12.2014