博客
关于我
TBSSQL 的那些事 | TiDB Hackathon 2018 优秀项目分享
阅读量:614 次
发布时间:2019-03-13

本文共 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 的无限可能!

    转载地址:http://llkoz.baihongyu.com/

    你可能感兴趣的文章
    AAX 首席商务官 Michael Wong:安全可信的市场环境将促进增量市场发展
    查看>>
    什么是证券型代币?
    查看>>
    小白怎样变成UI设计师
    查看>>
    Mac抓包工具-Charles
    查看>>
    Android中获取并设置屏幕亮度
    查看>>
    Windows抓包工具-Fiddler
    查看>>
    Glide无法加载http图片问题
    查看>>
    Swift常用语法规则(一)
    查看>>
    Swift中使用DispatchGroup分组管理异步任务
    查看>>
    21-JS中常见的函数
    查看>>
    19-认识bootstrap
    查看>>
    为什么要使用UTF-8?
    查看>>
    Android多线程与双缓冲
    查看>>
    MVVM_Template
    查看>>
    not permitted by network security policy
    查看>>
    {spring.cloud.client.ipAddress}
    查看>>
    栈上内存溢出漏洞利用之Return Address
    查看>>
    Redhat6中获取LANG值为空
    查看>>
    Bugku CTF web4(Web)
    查看>>
    练习2-17 生成3的乘方表 (15 分)
    查看>>