Сиддхи объединяют события с данными из БД - PullRequest
0 голосов
/ 05 июля 2019

Я хочу понять «душ» и «не душ» в сиддхи.Я видел коннекторы БД и возможности обогащения потоковых событий данными из БД (скажем, коннектором Кассандры).

Пример :

@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 , делается запрос на выборку для каждого входящего события?Если да - это звучит как «не делать» для меня - особенно если мы говорим о 100k событий / сек.

Или я неправильно понимаю архитектуру?

1 Ответ

0 голосов
/ 05 июля 2019

Да, вы правы. В соответствии с приведенным выше запросом, когда в ShipmentInfoStream поступило событие, тогда будет запрос в БД, получит выходные данные и продолжит обработку.

Но эта операция может быть улучшена различными способами.

  • Если таблица БД содержит только ограниченные значения (и не изменяется внешними пользователями), вы можете предварительно загрузить эти события, сохранить их в хранилище событий в памяти и обработать их.

  • Вы можете использовать кеш для повышения производительности. Проверьте раздел «Кэширование в памяти» в https://siddhi.io/en/next/docs/query-guide/#store ...

...