查看原文
其他

GreptimeDB 重大更新 — 新版引擎 Mito2 专为时序数据而生

Jiachun Feng GreptimeDB 2024-01-30

关注 GreptimeDB,了解更多技术干货👇




从去年 11 月 GreptimeDB 首次上线开源以来,Greptime 团队经过一轮又一轮的持续迭代,从 v0.1 的初步架构完成,到 v0.2 兼容了 PromQL 的单机版本,再到 v0.3 增加了分布式的能力。


v0.3 功能层面已经相对稳定,包括了单机版,分布式,PromQL 兼容性以及对不同接入协议的支持,很多用户开始尝试,我们也收到了大量的反馈和建议,同时,我们也在 GreptimeCloud 项目里面吃自己狗粮,底层完全依托于 v0.3,不断地把需求回吐给 DB 团队。


其中呼声最大的便是查询性能问题,坦率的讲,v0.3 版本虽然功能稳定,写入性能也满足需求,但在查询性能上依然有很大的提升空间,还不足以应对大规模的数据查询分析。v0.4 为了解决这个问题,对存储查询引擎 Mito 做了一次重大升级,几乎是重写了一遍,而围绕引擎相关的组件也随之重构,最后通过 TSBS 测试套件实测提升了平均有 6 倍,具体可以参考文末的测试报告(PS: 可能熟悉车的朋友会觉得 Mito 比较眼熟,没错,是来自于 Alfa Romeo MiTo,谁让公司有三位 Alfa Romeo 车主呢)。


在充分测试的保障下,今天,我们终于可以激动地宣布:GreptimeDB v0.4 正式发布,和以往版本不同,v0.4 版本的发布标志着 GreptimeDB 已基本做好踏入生产环境的准备,更意味着一段新的探索与挑战即将启程!


总结来说,此次新版本更新主要在以下几个方面:


  • 性能优化:重新设计的新版引擎 Mito2;

  • 稳定性优化:CREATE, DROP, ALTER 等 DDL 统一单机和分布式实现并引入 Procedure 框架保证最终一致性;

  • 体验优化:支持 Vector/OpenTelemetry 等。


从 v0.3 到 v0.4,Greptime 团队主要项目中,共有来自 6 个国家和地区的 42 位贡献者,累计合并了 726 个 PRs,涉及到 7659 个文件修改,包含了 271 个功能优化163 个修复107 个重构以及大量测试。同时,伴随着版本的更新,使用文档和技术文档也已更新至最新。另外,我们还发布了 C++, Erlang 和 JS SDK, 官方目前已经支持了 Golang/Java/Rust/C++/Erlang/JS 6 种语言。社区方面,我们也迎来了一位新的 Committer: Niwaka。











GreptimeDB v0.4 重点内容
  • 查询存储性能

    • 完全重新设计了新版引擎 Mito2,专门针对时间序列数据进行了优化,实测性能比 v0.3 提升 5-20 多倍不等;

    • 受 Cassandra 启发,支持了 TWCS(Time Window Compaction Strategy)压缩策略;

    • 支持了新的对象存储 Google Cloud Storage。


  • 稳定性和可靠性

    • 丰富 sqlness 测试场景;

    • 依托于混沌测试 Case 的不断完善,v0.4 版本将具备更可靠的分布式健壮性;

    • 基于 Procedure 框架实现 Create/Alter/Drop Table 等 DDL 操作并统一单机和分布式实现;

    • 重构了整个分布式架构,优化心跳协议,使得分布式版本运行更加稳定。


  • 体验优化

    • 新增支持 range select,支持与普通函数嵌套使用;

    • 全新的 Dashboard;

    • 优化 DESC TABLE 体验;

    • 支持 Apache ORC 格式的外部表;

    • 支持用户友好的 gRPC 行格式写入协议。


  • 集成与其他

    • Vector 增加 GreptimeDB metrics 的输出支持;

    • 支持使用 KubeBlocks 启动 GreptimeDB 集群;

    • 集成 EMQX;

    • 支持 CentOS;

    • 发布 JS/Erlang/C++ 官方客户端。








GreptimeDB v0.4 性能测试

GreptimeDB 基于 TSBS 进行了性能测试。TSBS(Time Series Benchmark Suite)是以 Go 为主语言的一套程序,用于生成时序数据集并对读写性能进行基准测试。最初由老牌时序数据库厂商 InfluxDB 工程师发布,并不断由 TimescaleDB 团队进行改进。该套件是可扩展的,可以包含不同类型的数据和查询类型,并在系统之间进行比较。GreptimeDB 在套件基础上做了对应的扩展,具体项目地址: https://github.com/GreptimeTeam/tsbs/


测试硬件和数据准备

硬件环境

测试数据(基于 TSBS)

启动配置(默认配置,仅修改数据目录)[storage]
data_home = "/var/greptimedb/"

测试结果(与 v0.3.2 对比,数值越小越好)








升级提示

为了进行彻底地优化,不受历史包袱干扰 0.3 -> 0.4 有一些 breaking change,需要停机升级。为此我们提供了升级工具,稍晚会在官方文档中加入升级手册,大致步骤如下:


1. 创建一个新的 0.4 集群;

2. 关闭旧集群流量入口(停写);

3. 通过 CLI 升级工具导出数据;

4. 导入数据到新集群;

5. 入口流量切换到 0.4 新集群。








Meetup 预告

本周三 10 月 11 日, 我们将通过 Zoom 举办一次线上 meetup,届时我们的核心开发者将详细介绍 v0.4 的新功能、Mito 架构介绍和 Benchmark 展示。欢迎感兴趣的朋友们点击下方链接报名参加,我们的创始人团队也都会加入,期待与你在屏幕的那一端相会,一起探讨、进步!🎉 


(参与 meetup 有机会赢取 Greptime 精美周边礼品哦~)

Tips

时间:2023.10.11 上午 10 点

地点:线上 Zoom 会议 (报名获得会议链接)

主题:GreptimeDB v0.4 — 首个线上生产版本功能介绍和答疑

报名链接:

https://m0k0y6ku50y.typeform.com/to/m5G87XDI








GreptimeDB 未来展望

GreptimeDB 不断追求的核心目标仍然是建立一个具备弹性的 ServerlessDB 架构。同时我们意识到未来的趋势在于数据库的自治化,我们会逐步在数据库自治方面投入更多,结合智能化的调度技术,逐步实现时序数据库的安全自动驾驶。








致谢社区

感谢每一位关注 GreptimeDB、给 GreptimeDB 提建议甚至提交代码的朋友,是你们的支持让我们前进得更坚定。GreptimeDB 是一个基于 Rust 的数据库项目,无论你是在学习 Rust 语言想要寻找项目上手的同学,还是已经有一定经验的技术大牛,甚至是希望对开源社区有所贡献的非技术同学,你一定能在 GreptimeDB 找到适合你的贡献方式,成为我们的贡献者,和来自全世界各地的其他社区贡献者一起交流最新技术。悄悄说一句,成为贡献者能收到 Greptime 限量精美周边礼品哦~




关于 Greptime

官网:https://greptime.cn/

GitHub: https://github.com/GreptimeTeam/greptimedb

文档:https://docs.greptime.com/

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

LinkedIn: https://www.linkedin.com/company/greptime/

GreptimeDB 提供 Enpterprise 企业版服务,如有需要请联系 info@greptime.com 或添加小助手微信(微信号:greptime).


👇 点击下方阅读原文,立即体验 GreptimeDB v0.4

继续滑动看下一个

GreptimeDB 重大更新 — 新版引擎 Mito2 专为时序数据而生

Jiachun Feng GreptimeDB
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存