程序的处理逻辑使用Streaming SQL编写,并将其放在一个扩展名为.siddhi的文件中。该文件称为Siddhi应用程序或SiddhiApp
通过在SiddhiApp文件的顶部添加@app:name('<name>')注释来命名SiddhiApp。如果未添加注释,Siddhi将随机分配一个UUID作为SiddhiApp的名称
下图描述了Siddhi应用程序的一些关键Siddhi Streaming SQL元素
下表简要介绍了Siddhi流式SQL语言中的几个关键元素。
元素 | 描述 |
Stream | 事件流定义唯一名称,和一组参数 |
Event | 事件 |
Table | 用已定义的模式存储的数据的结构化表示。存储的数据可以由In-Memory或RDBMS、MongoDB等外部数据存储支持。这些表可以在运行时访问和操作 |
Named-Window | 命名窗口:使用定义的架构和驱逐策略存储的数据的结构化表示。窗口数据将被存储,In-Memory并通过命名窗口约束自动清除。其他siddhi元素只能在运行时查询Windows中的值,但不能修改它们。 |
Named-Aggregation | 命名聚合:数据的结构化表示,以定义的架构和聚合粒度(例如秒,分钟,小时等)进行增量聚合和存储。聚合数据既存储又存储In-Memory在外部数据存储中,例如RDBMS。其他siddhi元素只能在运行时查询Windows中的值,但不能修改它们。 |
Query | 一种逻辑结构,通过使用来自一个或多个流、表、窗口和聚合的数据,以流方式处理事件,并将输出事件发布到流、表或窗口中。 |
Source | 数据源,一种构造,它使用各种事件格式(如XML、JSON、二进制等)从外部源(如TCP、Kafka、HTTP等)读数据,然后转换为Siddhi事件,并传递到流中进行处理。 |
Sink | 目标 |
Input Handler | 以编程方式将事件注入流的机制 |
Stream/Query Callback | 以编程方式使用流或查询的输出事件的机制 |
Partition | 一个逻辑容器,用于根据从事件派生的分区键隔离查询的处理 |
Inner Stream | 一种可定位的流,它将分区内的分区查询彼此连接起来。 |
例子