比如说,我们有几个事件流。其中一些是将引用数据加载到hazelcast事件表,另一些则是实际的事件处理程序。
我的目标是,当wso2cep服务器启动时,它将首先运行那些将引用数据加载到hazelcast事件表的事件流,然后启动其他流。
它将帮助我们在所有事件处理器流中保持引用数据的一致性。
发布于 2016-10-07 04:16:31
我已经检查了hazelcast外部集群,它似乎是额外的开销,需要为表的每个类型创建DataSerializable类。
因此,我决定如下所示来存储CEP的维度/引用数据:
谢谢大家,特别是@Grainier。
发布于 2016-10-04 03:01:35
除了在单个执行计划中加载之外,我看不到其他选项。有两种选择:
因此,此时此刻,我的问题是:
执行计划
@Plan:name('ExecutionPlan')
/* define streams/tables and write queries here ... */
/* Facts/Events streams definition */
@Import('actions:1.0.0')
define stream actions (meta_name string, correlation_id int);
@Export('userActions:1.0.0')
define stream userACtions (meta_username string, meta_actionname string);
/* Dimension tables(Event Tables) definition */
-- table from RDBMS
@from(eventtable = 'rdbms' , datasource.name = 'PG' , table.name = 'users')
@IndexBy('id')
define table DBUsers (id int, name string);
-- table from Hazelcast
@from(eventtable = 'hazelcast', collection.name='hzUsers')
@IndexBy('id')
define table hzUsers (id int, name string);
/* Load dimension tables, from RDBMS to Hazelcast, periodically using trigger */
define trigger periodicTrigger at every 30 sec;
from periodicTrigger join DBUsers
select DBUsers.id as id, DBUsers.name as name
insert into hzUsers;
/* Actual execution plan */
from actions as A
join hzUsers as H
on A.correlation_id == H.id
select H.name as meta_username, A.meta_name as meta_actionname
insert into userACtions;https://stackoverflow.com/questions/39783040
复制相似问题