
TBSSQL 的那些事 | TiDB Hackathon 2018 优秀项目分享
发布日期:2021-05-16 17:00:49
浏览次数:8
分类:精选文章
本文共 1223 字,大约阅读时间需要 4 分钟。
在 TiDB Hackathon 2018 中,崔秋同学所在的 TiBoys 队开发了 TBSSQL(TiDB Batch and Streaming SQL),该项目以一等奖的成绩亮相。本文将详细讲述 TBSSQL 的开发过程、技术实现及其相关挑战。
项目背景
TiDB Batch and Streaming SQL(简称 TBSSQL)是一款扩展 TiDB SQL 引擎的项目,旨在将 Kafka、Pulsar 等流数据源与 TiDB 结合,支持流式 SQL 访问。本项目的核心目标是实现流式数据与 TiDB 普通表的联结,以及基于时间窗口的聚合计算。
技术实现
TBSSQL 的设计基于以下核心思路:
1. 数据源接口
- Kafka:作为最流行的开源消息队列系统,其流数据处理能力毋庸置疑。
- Pulsar:一种新兴的流数据源系统,具有较高的吞吐量。
- Binlog:支持 MySQL 和 TiDB 的日志复制,与现有数据同步工具同步。
- Log:一般的日志文件格式,适合单个消息处理。
2. Raymond - 数据采集与处理
Raymond 作为数据采集模块,主要负责对接多种数据源,并提供标准化的数据接口。具体实现包括:
- Restful API:为 TiSSQL 提供数据拉取接口。
- StreamReader:解析不同数据源的数据格式,例如 JSON、Avro 等,并生成 TiDB 可行的数据行。
3. TiDB 核心优化
- ** absorptionแหลseeker**:实现流式数据的高效存储与查询。
- Streaming SQL 语法:定义时间窗口,支持聚合、排序等流式算子。
- 命令执行优化:基于时间窗口调整优化器策略,确保窗口列信息不被裁剪。
遇到的挑战
窗口列消失的问题
- 在基于时间窗口的聚合算子中,窗口列被优化器默认裁剪。经过一系列调试,发现修改难以生效,最终认为是issyθι시完成。
- 后来发现问题出在 StreamReader 的插入位置,经过深入分析并修复了这一问题。
性能优化
- 流式数据处理的扩展较大,导致部分模块解析速度慢,影响整体性能。
前端展现
- 为展示需求,团队又花费大量时间搭建前端展示模块,力求在短时间内完成工作。
未来计划
数据源扩展
- 提供更多数据源接口,例如 Apache Kafka、Apache Pulsar 等。
- 引入低水标记机制,确保数据有序性。
Planner 优化
- 基于新一代规划器重新设计,支持更灵活的 SQL 优化策略。
时间窗口支持
- 不仅实现固定窗口,还将支持滑动窗口、跳跃窗口等多种类型。
多流阶段处理
- 支持多个流数据源的联结与计算,提升 TBSSQL 的综合处理能力。
总结
TBSSQL 的开发历经了 Hackathon 中的激烈攻坚,虽然还有许多待完善之处,但其核心功能已基本实现。未来我们将继续深化 TBSSQL 的开发,同时期待与更多技术爱好者一起探索 TiDB 的无限可能!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月12日 10时45分19秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
广东外语外贸大学第三届网络安全大赛Writeup
2019-03-09
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
2019-03-10
Thymeleaf sec:authorize 标签不生效
2019-03-11
微信JS-SDK DEMO页面和示例代码
2019-03-11
一张图搞定RPC框架核心原理
2019-03-11
他来了他来了,他带着云栖大会的免费门票走来了
2019-03-11
获取linux 主机cpu类型
2019-03-11
pwntools编写技巧
2019-03-11
How2Heap笔记(三)
2019-03-11
算法训练 未名湖边的烦恼(递归,递推)
2019-03-11
什么是接口
2019-03-11
Allegro中如何消除器件本身Pin间距报错
2019-03-11
Flask--简介
2019-03-11
16 python基础-恺撒密码
2019-03-11
Frame--Api框架
2019-03-11
Boostrap技能点整理之【网格系统】
2019-03-11
javaWeb服务详解(含源代码,测试通过,注释) ——Emp的Dao层
2019-03-11
Git简单理解与使用
2019-03-11