GreptimeDB v0.1 发布|原生支持 Python, PromQL 和对象存储
GreptimeDB 自去年 11 月开源以来,已经近 4 个月,虽然时间不长,但在社区的助力下,GreptimeDB 正一步步踏实地朝着目标前行,我们将之前设定的里程碑拆分成了 v0.1, v0.2 和 v0.3 三个小阶段,最终希望可以在 v0.3 交付一个单机可靠,分布式可用的产品。
GreptimeDB v0.1 在一周多的收官工作(文档、测试)之后,今天终于可以宣布 GreptimeDB v0.1 Release 了,也想借此机会和大家分享一下过去几个月社区的成长以及对未来的规划。
社区
短短四个月内,Greptime 社区已经收获:
● 2.3k GitHub stars: 海内外的关注相当,中国 41%,海外 59%
● 491 PRs merged: 其中 60 个 PRs 来自外部贡献者,占 12.2%
● 10 个周边项目开源: 包含 dashboard, promql-parser, greptimedb-operator 等
● 16 篇文章: 包含原创技术文章 6 篇
● 18 位外部贡献者
● 1977 次下载这些数字的背后是团队和社区的共同努力,是每个贡献者宝贵时间的付出,而这每一份贡献反映的是 GreptimeDB 每一个 feature, 每一次 refactor 和每一段 fix, 接下来,我们就看看 v0.1 的主要内容。
GreptimeDB v0.1
Features
是的,作为一个 LSM Tree 架构怎能没有 Compaction,GreptimeDB 终于支持 Compaction 了。通过 Compaction 也支持了数据的基于 TTL 的淘汰。
● 支持对象存储通过 OpenDAL, GreptimeDB 较容易地实现了对 S3 和 OSS 对象存储的支持。
● 支持使用 Python引入 Python 脚本功能与 DataFrame API 以及第三方 Python 库的支持,可作为协处理器和用户自定义函数 (UDF) 使用。
● 原生支持 PromQLPromQL 在云原生可观测领域已是公认使用最广泛的查询语言了。因此,尽管挑战很大,我们决定在 GreptimeDB 中原生支持 PromQL。目前我们已经初步实现了 PromQL 原生支持,尽管还不能通过官方兼容性测试中的所有 cases,但随着 GreptimeDB 0.1 版本发布,其已经初步可用。对于这个兼容性测试,我们计划在 GreptimeDB v0.2 版本中通过一半以上的 test cases,在 v0.3 版本中通过 70% 以上。
Protocol
基于 Arrow Flight RPC 构建,相比原来的 gRPC 私有协议,现在更加简洁高效,也很方便多种语言利用 Arrow Flight 的 SDK 直接与 GreptimeDB 通信。对 Stream 的支持也更方便。
文档见: https://docs.greptime.com/developer-guide/how-to/how-to-write-sdk● MySQL & PostgreSQL 支持 TLS
为了数据的传输安全,MySQL 和 PostgreSQL 支持 TLS 是十分有必要的。另外与 HTTP 或 gRPC 不同,数据库协议有自己的 TLS 握手过程,因此我们在数据库这一层来支持了 TLS。
Clients
● 基于 Arrow Flight RPC 通信的 Java SDK[1]
● 基于 Arrow Flight RPC Go SDK[2] 正在开发
Refactor
GreptimeDB 最初重度使用了 Arrow2,但是 DataFusion 的 Arrow2 分支已不再维护,所以我们决定切换到 Arrow,这样我们就可以跟上最新的 DataFusion 版本了,这是一个具有巨大挑战的任务,很高兴我们顺利完成了。
未来的计划
GreptimeDB
我们会按计划在 5 月份 release v0.3,目标是可达到单机可靠,分布式可用的程度。其中 “可靠” 主要体现在性能和稳定性上,但既然是单机,无论性能还是稳定性都是有一定上限,所以我们也会逐步完善分布式的版本。对于单机已经能满足要求的用户来讲,GreptimeDB v0.3 将会给到建议可用的单机版本。
而如果对可靠性和扩展性要求比较高的用户,我们也将在今年下半年完善分布式功能,计划年末提供分布式 GA ( General Availability ) 版本。
功能方面,我们还是会专注在数据的采集、存储和分析的生命周期,落地在用户实际场景问题,重点会在查询性能、存储降本和分布式方面,包括:
● PromQL 查询性能优化
● Python scripts 支持 MapReduce 框架,更高效地处理分布式计算
● 查询引擎的优化,向量化查询、智能索引和 Cost-Based Optimizer 等
● 存储和计算分离,存与算均可做到自动化伸缩
● 采用自适应压缩算法,一份数据支撑时序模型与分析模型的混合负载,降低存储成本
之所以将这些功能的优先级放在前面,也是在倾听了用户声音之后的结果,当然,如果你有其他想法或者建议,也欢迎随时通过 Slack,邮件,公众号留言等方式来与我们交流。社区
好的项目离不开社区的帮助,我们将持续本着「开放」,「尊重」和「透明」的原则运营社区,认真对待每一位贡献者,每一个反馈。相信每一个参与者都希望项目可以长久的运作,从而在更多的人群中产生更深远的影响,所以我们也会接触更多的真实用户场景,将每个贡献落到实处。
同时,Greptime 团队也会更积极地参与到开源生态中,与更多的开源组织和项目合作共建,将我们的工作回馈到大社区中。计划中将会开展的内容包括:
● 完善开发者服务,包括开发文档、使用文档、项目进展等
● 定期举行线上线下的 Office Hour 和 Open Demo Day
● 在开发中不断总结技术经验,以博客文章、访谈、播客等多种形式在社区分享传播
● 与大社区联办 Meetup 分享开源经验并交流技术
如果你对上面任何的活动感兴趣,甚至对社区运营本身有想法,也欢迎随时来与我们交流。
参考
[1] https://github.com/GreptimeTeam/greptimedb-client-java
[2] https://github.com/GreptimeTeam/greptimedb-client-go
[3] https://github.com/apache/arrow-datafusion/
[4] https://github.com/CeresDB/sqlness/
[5] https://github.com/jorgecarleitao/parquet2
[6] https://github.com/datafusion-contrib/datafusion-substrait
[7] https://github.com/RustPython/RustPython
[8] https://github.com/datafuselabs/opendal
关于 Greptime
Greptime 格睿科技于 2022 年创立,目前正在完善和打造时序数据库 GreptimeDB 和格睿云 GreptimeCloud 这两款产品。
GreptimeDB 是款用 Rust 语言编写的时序数据库。具有分布式,开源,云原生,兼容性强等特点,帮助企业实时读写、处理和分析时序数据的同时,降低长期存储的成本。
GreptimeCloud 基于开源的 GreptimeDB,为用户提供全托管的 DBaaS,以及与可观测性、物联网等领域结合的应用产品。利用云提供软件和服务,可以达到快速的自助开通和交付,标准化的运维支持,和更好的资源弹性。GreptimeCloud 近期将开放测试,欢迎关注公众号或官网了解最新动态!
官网:https://greptime.com/
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 现已在 GitHub 正式开源
👇 点击文末阅读原文,立即下载体验 GreptimeDB v0.1~