暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GreptimeDB v0.5 重磅发布 | Remote WAL 和 Metrics Engine 正式上线

GreptimeDB 2023-12-28
129

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




时间飞逝,转眼又到了一年岁末,GreptimeDB 也已经正式开源一周年了。在这一年里,我们一起经历了不少起起伏伏,也收获了许多宝贵的经验。今天,我们非常高兴地宣布,我们的开源时序数据库迎来了一个新的版本 GreptimeDB v0.5


在此次迭代中,主要上线了 Remote WAL 和 Metrics Engine,为 GreptimeDB 实现健壮的分布式能力打下了好的基础并解决了监控场景下,大量小表所带来的资源开销。





Tips

接下来我们将介绍 GreptimeDB v0.5 的主要版本改进:

v0.5 功能上新

重点 Features







Remote WAL

目前 GreptimeDB 的 WAL 基于本地存储,不具备完全的容灾能力。一个分布式的(Remote)WAL 是 GreptimeDB 实现 Region Migration、Region Rebalance、Region Split/Merge 等这些高阶分布式功能的基础,这些功能也是实现水平扩展和数据热点拆分的关键特性


对于第一个 Remote WAL 版本,造一个新轮子不是我们的目标,权衡再三我们认为基于 Kafka 来构建我们第一个 Remote WAL 存储服务是比较合适的。Kafka 给用户提供 pub/sub topic 的接口,每个 topic 会绑定一个 message stream。messages 被划分到文件系统上的多个目录,每个目录称为一个 partition。每个目录里面维护了若干个 segment 文件。向某个 topic 写入一个 message,即向该 topic 某个 partition 的最新的 segment 文件的末尾 append 这条 message。这种 append-only 的写入方式使得 Kafka 的写入性能很高,这是我们采用 Kafka 作为 Remote WAL 存储服务所考虑的主要因素之一。对于 Kafka client,我们使用 rskafka[1], 一个 Rust 实现的完全异步的客户端。

第一个 Remote WAL 实现,是 GreptimeDB 实现健壮的分布式能力的一个好的基础,在 Remote WAL 的基础上,我们还会在近期发布 Region Migration 功能。








Metrics Engine

在可观测领域的时序数据库中,GreptimeDB 的设计侧重点与 Prometheus 或是 VictoriaMetrics 等时序数据库有一些区别,GreptimeDB 的表的概念是相对复杂和重量级的,需要占用较重的资源。这在需要创建海量小表的场景中让 GreptimeDB 默认引擎的表管理能力捉襟见肘。为了更高效地处理海量的小表,我们在 0.5 版本中引入了一个全新的引擎(Metrics Engine),它的主要目标是能处理大量的小表,特别适合像 Prometheus 指标那样的场景。通过利用合成的宽表,这个新 engine 提供指标数据存储和元数据复用的能力,“表”在它之上变得更轻量,它克服了现有 Mito 引擎的表过于重量级的一些限制。


对于 Metrics Engine,目标是解决监控场景下,大量小表所带来的资源开销,减小对大量表同时创建/写入场景下存在的固定延时等问题。我们目前只是往最终目标迈出了坚实的一步,接下来还有很长的路要走,短期计划是进一步优化资源占用、优化创建表的速度,还会针对新引擎提高 PromQL 的查询性能。在接下来的每个版本升级中,预计大家都可以看到 Metrics Engine 的进步和完善。








其他模块重点更新
  • PromQL 兼容性提高到了 82%

    PromQL 有不错的进展,兼容性提高到了 82%,支持了 historgram_quantile 函数,对齐了 linear_regression 行为,也实现了 PromQL 的 ANDUNLESS 操作符。更多细节,可看 这里[2]


  • Mito Engine 持续优化

    丰富 sqlness 测试场景;  我们为 Mito 引入了一个 row group 级别的 page cache,经测试它可以为我们平均节省 20% ~ 30% 的扫描时间,我们还支持了并行扫描 SST 和 Memtable,这个优化使得 GreptimeDB 在 TSBS Benchmark 中扫描性能显著提升,部分场景提高达 200%。








其他亮点功能
  • 支持在创建表时指定不同的存储后端

    在以前,表只能存储在同一个存储后端中,现在 GreptimeDB 支持了在启动时配置多个不同的存储后端,并在建表时可以为表指定存储后端。举一个最简单的例子:我们可以将一张表存在本地,一张表存储在 S3 上。


  • 支持嵌套的 Range 表达式

    max(a+1) Range '5m' FILL NULL 这样的 Range 表达式可以嵌套在任何表达式中,比如下面这个嵌套 Range 查询:
    Select
        round(max(a+1Range '5m' FILL NULL),
        sin((max(a) + 1Range '5m' FILL NULL),
    from
        test
    ALIGN '1h' by (b) FILL NULL;


    该 SQL 查询在语义上等价于:
    Select round(x), sin(y + 1from
        (
            select max(a+1Range '5m' FILL NULL as x, max(a) Range '5m' FILL NULL as y
                from
            test
                ALIGN '1h' by (b) FILL NULL;
        )
    ;


  • 新增 ALIGN TO 子句和 Interval 查询支持

  • Interval 表达式可以在 Range 和 ALIGN 关键字之后,作为可选的持续时间字符串替代:
    SELECT 
        rate(a) RANGE (INTERVAL '1 year 2 hours 3 minutes'
    FROM 
        t 
        ALIGN (INTERVAL '1 year 2 hours 3 minutes')
    FILL NULL;

    ALIGN TO 子句,用户可以使用 ALIGN TO 将时间对齐到他们想要的时间点。
    SELECT rate(a) RANGE '6m' FROM t ALIGN '1h' TO '2021-07-01 00:00:00' by (a, b) FILL NULL;

    可用的 ALIGN TO 选项包括:

    • 不使用 ALIGN TO (默认):对齐到 UTC 时间戳 0;

    • Now:对齐到当前 UTC 时间戳;

    • Timestamp:对齐到用户指定的特定时间戳。








未来展望

有了 Remote WAL 作为基础,接下来我们计划实现 Region 的 Migration,Region Migration 可以帮助我们实现负载平衡,我们会支持通过管控 API 手动触发的 Region Migration,进一步的会实现自动的负载平衡调度。


对于最基础的 Mito Engine(事实上 Metrics Engine 也构建于它之上),我们仍然会对其持续优化,逐步去提升它的查询性能,近期的重点是优化它与对象存储之间的各种数据传输的延迟。


还有一个会大幅提升部分场景查询的重大 feature,倒排索引特性也在路上了,我们预计会在一月底之前发布它,我们可以在这里看到它的 最新进展[3]



Reference

[1] https://github.com/influxdata/rskafka

[2] https://github.com/GreptimeTeam/greptimedb/issues/1042

[3] https://github.com/orgs/GreptimeTeam/projects/38/views/2






如果你有任何疑问或建议,欢迎扫描下方小助手微信私聊我们~



关于 Greptime

Greptime 格睿科技于 2022 年创立,目前正在完善和打造时序数据库GreptimeDB,格睿云 GreptimeCloud 和可观测工具 GreptimeAI 这三款产品。

GreptimeDB 是一款用 Rust 语言编写的时序数据库,具有分布式、开源、云原生、兼容性强等特点,帮助企业实时读写、处理和分析时序数据的同时,降低长期存储的成本。

GreptimeCloud 基于开源的 GreptimeDB,为用户提供全托管的 DBaaS,能够与可观测性、物联网等领域结合的应用产品结合。利用云提供软件和服务,可以达到快速的自助开通和交付,标准化的运维支持,和更好的资源弹性。

GreptimeAI 是为 LLM 应用量身定制的可观测性解决方案,开发者可以通过该方案全面、深入地了解应用的成本、性能、流量和安全情况,在保证低成本和高性能的同时提供高效可靠的分析能力,同时保留了时序数据库的灵活性

GreptimeCloud 已正式公测,欢迎关注公众号或官网了解最新动态!

官网:https://greptime.cn/

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

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

Twitter: https://twitter.com/Greptime

Slack: https://greptime.com/slack

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

往期精彩文章:


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

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

文章转载自GreptimeDB,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论