Дублирование разделов сиддхи или несколько запросов в одном разделе - PullRequest
0 голосов
/ 17 января 2020

Мы пытаемся определить, что рекомендуется и что является более производительным, если у нас есть несколько запросов, каждый из которых полагается на один и тот же раздел. Представьте, что у нас есть данные только строки имени и целочисленного значения, мы бы хотели 2 отдельных запроса для обнаружения шаблонов в значении для одного и того же имени. Это можно записать двумя способами:

Опция 1:

define InputStream(name string, value integer)
partition with (name of InputStream)
begin
    from every s1=InputStream[value == 1],
    s2=InputStream[value == 2]
    select s1.value as initial, s2.value as final
    insert into OutputStream1
end
partition with (name of InputStream)
begin
    from every s1=InputStream[value == 10],
    s2=InputStream[value == 11]
    select s1.value as initial, s2.value as final
    insert into OutputStream2
end

Опция 2:

define InputStream(name string, value integer)
partition with (name of InputStream)
begin
    from every s1=InputStream[value == 1],
    s2=InputStream[value == 2]
    select s1.value as initial, s2.value as final
    insert into OutputStream1;

    from every s1=InputStream[value == 10],
    s2=InputStream[value == 11]
    select s1.value as initial, s2.value as final
    insert into OutputStream2
end

Опция 1: должен генерироваться отдельный поток разделов для каждого запрос и иметь возможность выполнять их параллельно, но он также имеет издержки на создание 2 потоков разделов для одного и того же name. Если Siddhi не достаточно умен, чтобы понять, что потоки разделов идентичны и помещают их в один и тот же поток.

Вариант 2: запросы находятся в одном и том же потоке разделов, поэтому я предполагаю, что он будет выполняться каждый последовательно (если Siddhi не умен). достаточно, чтобы понять, что запросы не зависят друг от друга, поскольку нет внутренних потоков ). Но бонус в том, что теперь нужно генерировать только 1 поток разделов.

Любой из вариантов должен работать нормально, но какой из них более производительный? Или они оба будут одинаково функциональны, как только Сиддхи их обработает.

1 Ответ

1 голос
/ 22 января 2020

Поскольку вы используете Сиддхи 4, я бы рекомендовал использовать Вариант 2, поскольку в Варианте 1 действительно много служебной памяти.

Однако эта проблема исправлена ​​в Сиддхи 5 после того, как Обновление вы можете использовать вариант 1 для повышения производительности

...