前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Siddhi cep

Siddhi cep

作者头像
IT云清
发布2022-08-07 12:52:44
6070
发布2022-08-07 12:52:44
举报
文章被收录于专栏:IT云清IT云清

1.基本介绍

Siddhi 提供以下功能,

流式数据分析

为分析操作员提供编排数据流、计算分析和检测 来自多个不同实时数据源的事件数据模式的软件,以允许开发人员构建能够实时感知、思考和行动的应用程序。

复杂事件处理 (CEP)

“CEP 是一种计算,其中有关事件的传入数据被提炼成更有用、更高级别的‘复杂’事件数据,从而提供对正在发生的事情的洞察力。”

“ CEP 是事件驱动的,因为计算是由接收事件数据触发的。CEP 用于要求高、持续智能的应用程序,以增强态势感知并支持实时决策。”

流数据集成

流数据集成是一种通过处理、关联和分析内存中的数据来集成多个系统的方法,同时不断地将数据从一个系统实时移动到另一个系统。

警报和通知

该系统根据定义的 KPI 和其他分析持续监控事件流,并发送警报和通知。

自适应决策一种根据预定义规则、连接系统的当前状态和机器学习技术动态做出实时决策的方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.使用流程

当Siddhi 应用程序启动时:

定义输入流,输出流,编写Siddhi查询sql; 接收各种流将事件传递给查询以进行处理。 根据查询完成的处理生成新事件。 最后,通过输出将新生成的事件发送到流。

3.sql样例

代码语言:javascript
复制
define stream TemperatureStream
        (sensorId string, temperature double);
 
@info(name = 'Overall-analysis')
from TemperatureStream#window.timeBatch(1 min)
select avg(temperature) as avgTemperature,
       max(temperature) as maxTemperature,
       count() as numberOfEvents
insert into OverallTemperatureStream;
 
@info(name = 'SensorId-analysis')
from TemperatureStream#window.timeBatch(30 sec, 0)
select sensorId,
       avg(temperature) as avgTemperature,
       min(temperature) as maxTemperature
group by sensorId
having avgTemperature > 20.0
insert into SensorIdTemperatureStream;
代码语言:javascript
复制
define stream InputStream(jsonString string);
 
from InputStream
select json:toObject(jsonString) as jsonObj
insert into PersonalDetails;
 
from PersonalDetails
select jsonObj,
    json:getString(jsonObj,'$.name') as name,
    json:isExists(jsonObj, '$.salary') as isSalaryAvailable,
    json:toString(jsonObj) as jsonString
insert into OutputStream;
 
from OutputStream[isSalaryAvailable == false]
select
    json:setElement(jsonObj, '$', 0f, 'salary') as jsonObj
insert into PreprocessedStream;
代码语言:javascript
复制
TemperatureStream  (
        sensorId  string ,  temperature  double );
 
define table TemperatureLogTable (
        sensorId string, roomNo string, temperature double);
 
@store(type="rdbms",
       jdbc.url="jdbc:mysql://localhost:3306/sid",
       username="root", password="root",
       jdbc.driver.name="com.mysql.jdbc.Driver")
define table SensorIdInfoTable (
        sensorId string, roomNo string);
 
@info(name = 'Join-query')
from TemperatureStream as t join SensorIdInfoTable as s
     on t.sensorId == s.sensorId
select t.sensorId as sensorId, s.roomNo as roomNo
       t.temperature as temperature
insert into TemperatureLogTable;

4.总结: 优点: 1.sql模式,本身支持一些函数运算;

2.量词,组合模式,连续策略较为丰富;

3.支持不发生算子;

4.时间窗口内,数据聚合在函数支持下较为方便;

5.事件流可以支持和外部存储join;

缺点:

1.使用Siddhi Streaming SQL语言将处理逻辑编写为Siddhi 应用程序,开发和维护比java代码高,在sql里数据处理/异常/监控等不够灵活可控;

2.sql模式开发,对于现有的复杂json结构数据源,解析处理不友好;

3.长窗口聚合数据时,数据在内存中累积;

4.海外项目,文档资料少,维护成本高;

5.当前的复杂嵌套回溯类型,sql模式难以实现;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.基本介绍
    • 流式数据分析
      • 复杂事件处理 (CEP)
        • 流数据集成
          • 警报和通知
          • 2.使用流程
          • 3.sql样例
          • 缺点:
          相关产品与服务
          数据集成
          数据集成(DataInLong)源于腾讯开源并孵化成功的 ASF 顶级项目 Apache InLong(应龙),依托 InLong 百万亿级别的数据接入和处理能力支持数据采集、汇聚、存储、分拣数据处理全流程,在跨云跨网环境下提供可靠、安全、敏捷的全场景异构数据源集成能力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档