看了官方Esper Reference Version 5.2.0 800多的文档后(其实有的细节没细看),个人对它的理解是:
1、Esper像带缓存失效策略内存数据库。
Esper中定义的EPL表达式,其实和sql很多相似功能,而且EPL里面有的不仅仅sql,扩展了很多语法。Esper会解析EPL,定义内存数据结构,缓存失效策略,数据保存,时间监听器,大数据方面的数据流/事件流,JDBCsql方式的查询等等。
比如,窗口函数定义是一种FIFO的缓存,底层用的是双端队列(java中的ArrayDeque),时间窗口定义,只不过增加了一个定时任务去查询并删掉过期数据/事件,guava库有这样的缓存实现。
2、对数据的查询(JDBC接口)也提供的查询计划(根据索引)。
3、可以代理数据库,从数据库查询的数据可有Esper定义缓存策略。不过,应该没有项目用到这个功能。就是代理了一层+缓存。
4、定义了监听器、订阅者这些数据库中所谓的触发器,可以监听敏感事件,起到报警作用。
5、不仅仅类似内存数据库,有storm/jstorm中数据流的概念。
原文地址:http://blog.csdn.net/doctor_who2004/article/details/46574097