Я хочу понять «можно» и «не надо» в сиддхи. Я видел коннекторы БД и возможности для обогащения потоковых событий данными из БД (скажем, коннектор 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;
Правильно ли я понимаю, что этот подход будет означать, что для каждого входящего события в ОтгрузкаInfoStream к базе данных выполняется запрос на выборку? В случае да - для меня это звучит как "не делать" - особенно если мы говорим о 100 тыс. событий/сек.
Или я неправильно понимаю архитектуру?





Да вы правы. В соответствии с приведенным выше запросом, когда в ShipmentInfoStream поступает событие, тогда будет запрос к БД, получение вывода и дальнейшая обработка.
Но эту операцию можно было бы улучшить разными способами.
Если таблица БД содержит только ограниченные значения (и не изменена внешними пользователями), вы можете предварительно загрузить эти события, сохранить их в хранилище событий в памяти и обработать их.
Вы можете использовать кеш для повышения производительности. Проверьте раздел "Кэширование в памяти" в https://siddhi.io/en/next/docs/query-guide/#store...