程序的处理逻辑使用Streaming SQL编写,并将其放在一个扩展名为.siddhi的文件中。该文件称为Siddhi应用程序或SiddhiApp

通过在SiddhiApp文件的顶部添加@app:name('<name>')注释来命名SiddhiApp。如果未添加注释,Siddhi将随机分配一个UUID作为SiddhiApp的名称

下图描述了Siddhi应用程序的一些关键Siddhi Streaming SQL元素

Query Guide-Siddhi Application_Memory

下表简要介绍了Siddhi流式SQL语言中的几个关键元素。

元素

描述

Stream

事件流定义唯一名称,和一组参数

Event

事件

Table

用已定义的模式存储的数据的结构化表示。存储的数据可以由In-MemoryRDBMSMongoDB等外部数据存储支持。这些表可以在运行时访问和操作

Named-Window

命名窗口:使用定义的架构和驱逐策略存储的数据的结构化表示。窗口数据将被存储,In-Memory并通过命名窗口约束自动清除。其他siddhi元素只能在运行时查询Windows中的值,但不能修改它们。

Named-Aggregation

命名聚合:数据的结构化表示,以定义的架构和聚合粒度(例如秒,分钟,小时等)进行增量聚合和存储。聚合数据既存储又存储In-Memory在外部数据存储中,例如RDBMS。其他siddhi元素只能在运行时查询Windows中的值,但不能修改它们。

Query

一种逻辑结构,通过使用来自一个或多个流、表、窗口和聚合的数据,以流方式处理事件,并将输出事件发布到流、表或窗口中。

Source

数据源,一种构造,它使用各种事件格式(如XMLJSON、二进制等)从外部源(如TCPKafkaHTTP等)读数据,然后转换为Siddhi事件,并传递到流中进行处理。

Sink

目标

Input Handler

以编程方式将事件注入流的机制

Stream/Query Callback

以编程方式使用流或查询的输出事件的机制

Partition

一个逻辑容器,用于根据从事件派生的分区键隔离查询的处理

Inner Stream

一种可定位的流,它将分区内的分区查询彼此连接起来。

例子

Query Guide-Siddhi Application_SQL_02