我想了解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万个事件。
还是我以错误的方式理解架构?
答案 0 :(得分:0)
是的,您是正确的。根据以上查询,当ShipmentInfoStream中有一个事件到达时,将有一个数据库查询,获取输出并进一步处理。
但是,可以以各种方式改进此操作。
如果DB表仅包含有限的值(外部用户未更改),则可以预加载这些事件,将其保留在内存中的事件存储中并进行处理。
您可以使用缓存来提高性能。检查https://siddhi.io/en/next/docs/query-guide/#store ...