`
shangboz
  • 浏览: 14165 次
文章分类
社区版块
存档分类
最新评论

Siddhi Query Language

阅读更多

Siddhi Query Language的官方解释如下:

Siddhi Query Language (SiddhiQL) is designed to process event streams to identify complex event occurrences

Siddhi在4.0版本进行了升级,支持流处理,事件流图:

上图中的几个组件大致说明:

Stream A logical series of events ordered in time with a uniquely identifiable name, and set of defined attributes with specific data types defining its schema.
Event An event is associated with only one stream, and all events of that stream have an identical set of attributes that are assigned specific types (or the same schema). An event contains a timestamp and set of attribute values according to the schema.
Table A structured representation of data stored with a defined schema. Stored data can be backed by In-MemoryRDBMsMongoDB, etc. to be accessed and manipulated at runtime.
Query A logical construct that processes events in streaming manner by combining existing streams and/or tables, and generates events to an output stream or table. A query consumes one or more input streams, and zero or one table. Then it processes these events in a streaming manner and publishes the output events to streams or tables for further processing or to generate notifications.
Source A contract that consumes data from external sources (such as TCPKafkaHTTP, etc)in the form of events, then converts each event (which can be in XMLJSONbinary, etc. format) to a Siddhi event, and passes that to a Stream for processing.
Sink A contract that takes events arriving at a stream, maps them to a predefined data format (such as XMLJSONbinary, etc), and publishes them to external endpoints (such as E-mailTCPKafkaHTTP, etc).
Input Handler A mechanism to programmatically inject events into streams.
Stream/Query Callback A mechanism to programmatically consume output events from streams and queries.
Partition A logical container that isolates the processing of queries based on partition keys. Here, a separate instance of queries is generated for each partition key to achieve isolation.
Inner Stream A positionable stream that connects portioned queries within their partitions, preserving isolation.

 

Siddhi SQL 4.0版本相比于3.0版本增加了流处理的支持

基本语法:

 

<siddhi app>  : 
        <app annotation> * 
        ( <stream definition> | <table definition> | ... ) + 
        ( <query> | <partition> ) +
        ; 

 

 

SiddhiQL主要包括以下几个方面:

  • 事件流定义(Event Stream Definitions)
  • 事件表定义(Event Table Definitions)
  • 分区(Partitions)
  • 查询(Queries)
 
1、事件流(Event Stream)
事件流是具有定义模式的事件序列。可以使用查询导入和操作一个或多个事件流,以便识别复杂的事件条件,并创建新的事件流来通知查询响应。
事件流定义:
define stream <stream name> (<attribute name> <attribute type>, <attribute name> <attribute type>, ... );
 
2、查询(Query)
每一个Siddhi查询可以消费一个或者多个事件流并且会根据查询结果创建一个新的事件。
一个查询包括一个输入区和一个输出区,有些还会包括一个推断区,一个查询定义如下:
from <input stream name> 
select <attribute name>, <attribute name>, ...
insert into <output stream name>
 Siddhi查询是一个类sql语言,其中内置多种函数及组合查询,具体的的参考其官网的说明:
3.0版本:https://docs.wso2.com/display/cep410/siddhiql+guide+3.0#SiddhiQLGuide3.0-EventStream
4.0版本:https://wso2.github.io/siddhi/documentation/siddhi-4.0/#source-mapper
 
3、分区(Partition)
partition可以将流分成多个独立的组然后进行独立的平行处理,一个partition包含一个或者多个查询,并且存在多个实例,其中每个分区复制相同的查询和流。每一个Partition都标记一个key,这些partition只处理每一个key相对应的事件流。
partition key 有两种定义方式:
1.根据值定义:
partition with ( <expression> of <stream name>, <expression> of <stream name>, ... )
begin
    <query>
    <query>
    ...
end; 
 2.根据范围定义:
partition with ( <condition> as <partition key> or <condition> as <partition key> or ... of <stream name>, ... )
begin
    <query>
    <query>
    ...
end;
 
4、表(Table)
表是流或事件表的存储版本。其定义方式跟流定义类似,通过table definition定义。这些事件默认存储在本地内存中(支持集群),但是Siddhi也提供了一些扩展存储,可以存储到例如数据库等多种外接设备中。
表的定义:
define table <table name> (<attribute name> <attribute type>, <attribute name> <attribute type>, ... );
  类似于数据库表,siddhi中定义的表同样可以指定主键和索引,分别通过注解@PrimaryKey(name)和@Index(name)定义。siddhi中的表也支持Insert、join、delete、update、in等操作,但是需要注意,如果一个表定义了主键约束,那么该主键必须不能重复,不然就会出现逐渐冲突问题。(详细参考官网说明
 
5、触发器(Trigger)
触发器可以周期性触发事件,通过 define trigger定义触发器
define trigger <trigger name> at ('start'| every <time interval>| '<cron expression>');
 下面这个例子是每5分钟触发一次事件流
define trigger FiveMinTriggerStream at every 5 min;
 下面是每周一到周五的上午10点15分触发事件流
define trigger FiveMinTriggerStream at '0 15 10 ? * MON-FRI';
 
6、脚本(Script)
siddhi可以通过定义function的方式在流里执行其他的编程语言脚本,如:Javascript、R、Scala等
定义格式:
define function <function name>[<language name>] return <return type> {
    <operation of the function>
};
 
Siddhi SQL 4.0增加了Windows定义
分享到:
评论

相关推荐

    MongoDB分片集群搭建教程:副本集创建与数据分片

    内容概要:本文提供了详细的MongoDB分片集群的搭建指导,涵盖了从环境准备、配置文件编写、副本集的建立、主节点的选择、配置服务器和数据分片服务器的配置到最后的路由节点的搭建与操作整个流程,以及对数据库的哈希与范围两种分片策略的应用介绍和具体命令执行。 适合人群:熟悉NoSQL数据库概念并对MongoDB有一定了解的技术人员,尤其是在大型数据管理和分布式数据库架构设计中有需求的开发者。 使用场景及目标:帮助技术人员掌握构建高效能、高可用性的MongoDB分片集群的方法,适用于处理大规模、实时性强的数据存储与读取场景。 其他说明:文中通过实例演示了每个步骤的具体操作方法,便于跟随文档实操,同时也介绍了可能遇到的问题及其解决方案,如在没有正确配置的情况下试图写入数据时出现错误等情况的处理。

    CPPC++_嵌入式硬件的物联网解决方案blinker库与Arduino ESP8266 ESP32一起工作.zip

    CPPC++_嵌入式硬件的物联网解决方案blinker库与Arduino ESP8266 ESP32一起工作

    CPPC++_逆向调用QQ Mojo IPC与WeChat XPlugin.zip

    CPPC++_逆向调用QQ Mojo IPC与WeChat XPlugin

    CPPC++_现代活动指标.zip

    CPPC++_现代活动指标

    CPPC++_Xournal是一款手写笔记软件,支持PDF注释,使用C语言编写,支持GTK3,支持Linux,如Ubu.zip

    CPPC++_Xournal是一款手写笔记软件,支持PDF注释,使用C语言编写,支持GTK3,支持Linux,如Ubu

    基于SSM学生实习管理系统前台小程序与后台管理系统开发实践

    资源概述: 本资源提供了一套完整的学生实习管理系统解决方案,涵盖了前台小程序页面与后台管理系统两大模块。前台小程序页面设计简洁直观,用户可根据不同身份(学生或企业)进行登录。学生用户能够方便地浏览并投递感兴趣的实习岗位,而企业用户则能轻松发布实习信息,吸引优秀人才。后台管理系统功能全面,包括个人中心、首页、学生管理、教师管理、企业管理、招聘管理、评分管理以及实习管理等多个方面,为管理员提供了强大的数据管理和操作工具。 技术栈亮点: SSM框架:系统后台采用Spring、Spring MVC和MyBatis Plus(简称SSM)作为核心开发框架,确保了系统的稳定性、可扩展性和可维护性。Spring作为控制反转(IoC)和面向切面编程(AOP)的容器,为系统提供了强大的业务逻辑处理能力;Spring MVC则负责处理Web请求和响应,实现了前后端的分离;MyBatis Plus作为持久层框架,简化了数据库操作,提高了开发效率。 MySQL数据库:系统采用MySQL作为数据库存储解决方案,支持大数据量的存储和高效查询。 如有侵权请联系我删除,谢谢

    微服务闪聚支付项目.zip

    微服务闪聚支付项目

    Rust 与 Java 互调实战示例

    博客链接 https://blog.csdn.net/weixin_47560078/article/details/143714557 文章从原理介绍出发,实现了 Rust 与 Java 的互调。利用 JNI 技术,可以充分发挥 Rust 的性能优势,同时保持 Java 的跨平台特性。这种技术组合适用于对性能要求较高的应用场景,如图像处理、数据分析和系统级编程等。

    CPPC++_这是我翻译的艾根中文文档.zip

    cppc++

    Matlab实现斑马优化算法ZOA-TCN-Multihead-Attention多输入单输出回归预测算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    Matlab实现雪融优化算法SAO-TCN-Multihead-Attention多输入单输出回归预测算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手

    分布式事务lcn.zip

    分布式事务lcn

    基于Simulink的正弦波PWM技术和三次谐波注入PWM技术研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    【风电功率预测】基于BiTCN的风电功率多变量输入预测研究附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    CPPC++_这是由一块迷你带OV2640双DRV8833驱动TypeC接口PSRAM的ESP32PicoD4开发板驱.zip

    cppc++

    JAVA安卓手机与电脑的socket通信源码数据库 其他源码类型 WinForm

    安卓手机与电脑的socket通信源码

    Anaconda:JupyterNotebook使用教程.docx

    Anaconda:JupyterNotebook使用教程.docx

    Amazon S3:S3静态网站托管教程.docx

    Amazon S3:S3静态网站托管教程.docx

    Python商品销售数据分析可视化项目源码(期末大作业).zip

    Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。 Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析可视化项目源码(期末大作业).zip,个人经导师指导并认可通过的98分大作业设计项目。主要针对计算机相关专业的正在做期末大作业设计的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业,代码资料完整下载可用。Python商品销售数据分析

    CPPC++_wechathookWeChatApi微信Api微信hook微信接口python微信接口java微信Ap.zip

    CPPC++_wechathookWeChatApi微信Api微信hook微信接口python微信接口java微信Ap

Global site tag (gtag.js) - Google Analytics