Siddhi连接事件与DB中的数据

时间:2019-07-05 04:52:12

标签: wso2 complex-event-processing siddhi wso2sp

我想了解siddhi中的“ dos”和“ dont dos”。我看到了DB连接器,以及利用DB中的数据丰富流事件的可能性(让我们说cassandra连接器)。

示例

@primaryKey('id')
@store(type = 'rdbms', datasource = 'WSO2_TEST_DB')
define table BuyerInfoTable (id string, name string, address string, email string);

@info(name = 'EnrichBuyerInformation')
from ShipmentInfoStream as s join BuyerInfoTable as b
    on s.buyerId == b.id
select s.orderId, b.name, b.address, b.email, s.shipmentType
insert into ShipmentAndBuyerInfoStream;

我是否理解正确,这种方法是否意味着在 ShipmentInfoStream 上每个传入事件上对数据库进行选择查询? 如果是的话-对我来说这听起来像是“不做”-特别是如果我们正在谈论每秒10万个事件。

还是我以错误的方式理解架构?

1 个答案:

答案 0 :(得分:0)

是的,您是正确的。根据以上查询,当ShipmentInfoStream中有一个事件到达时,将有一个数据库查询,获取输出并进一步处理。

但是,可以以各种方式改进此操作。

  • 如果DB表仅包含有限的值(外部用户未更改),则可以预加载这些事件,将其保留在内存中的事件存储中并进行处理。

  • 您可以使用缓存来提高性能。检查https://siddhi.io/en/next/docs/query-guide/#store ...

  • 中的“在内存中缓存”部分