红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

重磅开源 KSQL:用于 Apache Kafka 的流数据 SQL 引擎

  • 2017-08-29
  • 本文字数:1683 字

    阅读完需:约 6 分钟

Kafka 的作者 Neha Narkhede 在 Confluent 上发表了一篇博文,介绍了Kafka 新引入的KSQL 引擎——一个基于流的SQL。推出KSQL 是为了降低流式处理的门槛,为处理Kafka 数据提供简单而完整的可交互式SQL 接口。KSQL 目前可以支持多种流式操作,包括聚合(aggregate)、连接(join)、时间窗口(window)、会话(session),等等。

与传统SQL 的主要区别

KSQL 与关系型数据库中的 SQL 还是有很大不同的。传统的 SQL 都是即时的一次性操作,不管是查询还是更新都是在当前的数据集上进行。而 KSQL 则不同,KSQL 的查询和更新是持续进行的,而且数据集可以源源不断地增加。KSQL 所做的其实是转换操作,也就是流式处理。

KSQL 的适用场景

1. 实时监控

一方面,可以通过 KSQL 自定义业务层面的度量指标,这些指标可以实时获得。底层的度量指标无法告诉我们应用程序的实际行为,所以基于应用程序生成的原始事件来自定义度量指标可以更好地了解应用程序的运行状况。另一方面,可以通过 KSQL 为应用程序定义某种标准,用于检查应用程序在生产环境中的行为是否达到预期。

2. 安全检测

KSQL 把事件流转换成包含数值的时间序列数据,然后通过可视化工具把这些数据展示在 UI 上,这样就可以检测到很多威胁安全的行为,比如欺诈、入侵,等等。KSQL 为此提供了一种实时、简单而完备的方案。

3. 在线数据集成

大部分的数据处理都会经历 ETL(Extract——Transform——Load)这样的过程,而这样的系统通常都是通过定时的批次作业来完成数据处理的,但批次作业所带来的延时在很多时候是无法被接受的。而通过使用 KSQL 和 Kafka 连接器,可以将批次数据集成转变成在线数据集成。比如,通过流与表的连接,可以用存储在数据表里的元数据来填充事件流里的数据,或者在将数据传输到其他系统之前过滤掉数据里的敏感信息。

4. 应用开发

对于复杂的应用来说,使用 Kafka 的原生 Streams API 或许会更合适。不过,对于简单的应用来说,或者对于不喜欢 Java 编程的人来说,KSQL 会是更好的选择。

KSQL 的核心抽象

KSQL 是基于 Kafka 的 Streams API 进行构建的,所以它的两个核心概念是流(Stream)和表(Table)。流是没有边界的结构化数据,数据可以被源源不断地添加到流当中,但流中已有的数据是不会发生变化的,即不会被修改也不会被删除。表就是流的视图,或者说它代表了可变数据的集合。它与传统的数据库表类似,只不过具备了一些流式语义,比如时间窗口,而且表中的数据是可变的。KSQL 将流和表集成在一起,允许将代表当前状态的表与代表当前发生事件的流连接在一起。

KSQL 架构

KSQL 是一个独立运行的服务器,多个 KSQL 服务器可以组成集群,可以动态地添加服务器实例。集群具有容错机制,如果一个服务器失效,其他服务器就会接管它的工作。KSQL 命令行客户端通过 REST API 向集群发起查询操作,可以查看流和表的信息、查询数据以及查看查询状态。因为是基于 Streams API 构建的,所以 KSQL 也沿袭了 Streams API 的弹性、状态管理和容错能力,同时也具备了仅一次(exactly once)语义。KSQL 服务器内嵌了这些特性,并增加了一个分布式SQL 引擎、用于提升查询性能的自动字节码生成机制,以及用于执行查询和管理的REST API。

Kafka+KSQL 要颠覆传统数据库

传统关系型数据库以表为核心,日志只不过是实现手段。而在以事件为中心的世界里,情况却恰好相反。日志成为了核心,而表几乎是以日志为基础,新的事件不断被添加到日志里,表的状态也因此发生变化。将 Kafka 作为中心日志,配置 KSQL 这个引擎,我们就可以创建出我们想要的物化视图,而且视图也会持续不断地得到更新。

KSQL 的未来

KSQL 目前还处于开发者预览阶段,作者还在收集社区的反馈。未来计划增加更多的特性,包括支持更丰富的SQL 语法,让KSQL 成为生产就绪的系统。

这里有KSQL 的快速入门指南和一个演示程序。可以在Slack 的#KSQL 频道上向作者提供反馈信息,或者如果发现Bug,可以在 GitHub 上提出来。


感谢蔡芳芳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-08-29 19:0011206
用户头像

发布了 322 篇内容, 共 133.6 次阅读, 收获喜欢 142 次。

关注

评论

发布
暂无评论
发现更多内容

Macos端强大的字体设计软件 Glyphs 3激活中文版

mac大玩家j

Mac软件 字体设计 设计字体 字体设计工具

DxO PureRAW (RAW图像处理软件)特别版下载

影影绰绰一往直前

DxO PureRAW下载 DxO PureRAW破解版

调用API接口获取淘宝商品数据:详细指南与代码实践

Noah

AI对抗中的AI:技术展望与应用研究

EquatorCoco

人工智能 AI

Codigger,你的代码安全卫士

知者如C

大模型训练中的超参数优化策略

百度开发者中心

深度学习 大模型 #人工智能

Sketch v99 中文破解版 最好用的矢量绘图软件

晴雯哥

Cockos REAPER(音频录制编辑软件)特别版下载

影影绰绰一往直前

Cockos REAPER Cockos REAPER下载

Adobe Camera Raw 16(RAW处理工具)官方版下载

影影绰绰一往直前

Adobe Camera Raw下载 Adobe Camera Raw中文 Adobe Camera Raw破解 RAW处理工具

提速30%!HarmonyOS NEXT自动化测试开发效率提升

新消费日报

DDD技术方案落地实践

EquatorCoco

技术 DDD 教程 教程分享

AutoCAD 2024 for Mac v2024.3永久中文破解版 cad设计绘图 支持intel/M2

晴雯哥

Nik Collection by DxO(照片编辑插件套件)中文版

影影绰绰一往直前

PS滤镜Nik Collection Nik Collection下载 Nik Collection插件 Nik Collection破解版

Print2CAD 2024 AI(文件转换器)特别版下载

影影绰绰一往直前

Print2CAD 2024 AI下载 Print2CAD 2024 AI特别 Print2CAD 2024 AI激活

新手初探Amazon Lightsail,几步构建一个Wordpress服务器

王强

VPS云主机 亚马逊云服务器

SAE 2.0,让容器化应用开发更简单

Serverless Devs

云计算 负载均衡 Serverless

光纤的跳线和尾纤区别

小魏写代码

流式数据库引擎备受关注,亚信安慧AntDB数据库受邀参加“2023中国PostgreSQL数据库生态大会”

亚信AntDB数据库

AntDB AntDB数据库

在Javascript中为什么 0.1+0.2 不等于0.3 ? 源代码详细解析

互联网工科生

JavaScript

DxO FilmPack 7 for mac(胶片效果滤镜软件) 7.1.0永久激活版

mac

苹果mac Windows软件 DxO FilmPack 7 照片处理软件

Passper for Excel(文档密码解锁软件)激活版下载

影影绰绰一往直前

Passper for Excel下载 Passper for Excel激活 Passper for Excel中文

大模型训练,推动NLP发展的强大引擎

百度开发者中心

自然语言处理 大模型训练 #人工智能

Axure RP Pro8(原型设计工具)汉化特别版下载

影影绰绰一往直前

Axure RP Pro下载 Axure RP Pro破解版 Axure RP Pro中文版

国外服务器购买必备知识:如何避免常见陷阱?

一只扑棱蛾子

PolarDB-X V2.3 集中式和分布式一体化开源发布

阿里云数据库开源

polarDB PolarDB-X

零信任嵌入式安全沙箱技术对企业转型的具体优势

Geek_2305a8

前端

Topaz Video AI (AI视频无损放大软件)汉化直装版

影影绰绰一往直前

Topaz Video AI下载 Topaz Video AI破解版 Topaz Video AI中文版

软件测试/测试开发丨接口测试学习笔记,TcpDump与WireShark

测试人

软件测试 接口测试

大模型训练中的高性能计算与通信优化

百度开发者中心

深度学习 大模型 #人工智能

八个提升编程体验的VS Code插件

这我可不懂

vs-code

致敬记者节,合合信息扫描全能王助力新闻工作者构建“随身资料库”

合合技术团队

人工智能 合合信息 扫描全能王 记者节 新闻工作者

重磅开源KSQL:用于Apache Kafka的流数据SQL引擎_语言 & 开发_薛命灯_InfoQ精选文章