开源 Rust 时序数据库 GreptimeDB 发布 v0.1,原生支持 Python, PromQL 和对象存储


GreptimeDB 是 Rust 实现的开源时序数据库,尤其关注可扩展性、分析能力和效率,专为云时代的基础设施而设计。

功能

  • 提供可扩展到高可用分布式集群的独立二进制文件
  • 优化处理时序数据的柱状布局
  • 提供灵活的索引选项
  • 利用弹性计算资源的分布式并行查询
  • 提供用于高级分析场景的原生 SQL 和 Python 脚本
  • 使用广泛采用的数据库协议和 API
  • 适用于大量工作负载的可扩展表引擎架构

架构

GreptimeDB 核心组件:

  • Frontend 前端用于在各种协议中提供读写服务,将请求转发到 Datanode
  • Datanode 负责将数据存储到本地磁盘、S3 等持久化存储中
  • Meta server 后端负责协调 Frontend  Datanode 之间的操作

近日,GreptimeDB 发布了 0.1 版本,并在公告写道,自去年 11 月开源以来,已经近 4 个月,团队将之前设定的里程碑拆分成了 v0.1, v0.2 和 v0.3 三个小阶段,最终希望可以在 v0.3 交付一个单机可靠,分布式可用的产品。

以下内容摘录自 https://mp.weixin.qq.com/s/U0LdbvilVFpLBUK-zbRgrw。


GreptimeDB v0.1

Features

  • Compaction

是的,作为一个 LSM Tree 架构怎能没有 Compaction,GreptimeDB 终于支持 Compaction 了。通过 Compaction 也支持了数据的基于 TTL 的淘汰。

  • 支持对象存储

通过 OpenDAL, GreptimeDB 较容易地实现了对 S3 和 OSS 对象存储的支持。

  • 支持使用 Python

引入 Python 脚本功能与 DataFrame API 以及第三方 Python 库的支持,可作为协处理器和用户自定义函数 (UDF) 使用。

  • 原生支持 PromQL

PromQL 在云原生可观测领域已是公认使用最广泛的查询语言了。因此,尽管挑战很大,我们决定在 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 RPCGo SDK[2]正在开发

Refactor

  • Datafusion &Arrow重构

GreptimeDB 最初重度使用了 Arrow2,但是 DataFusion 的 Arrow2 分支已不再维护,所以我们决定切换到 Arrow,这样我们就可以跟上最新的 DataFusion 版本了,这是一个具有巨大挑战的任务,很高兴我们顺利完成了。

除了以上列出的内容外,我们还有大大小小的 PRs 491 个,包括了各种功能准备,重构,bug 修复和文档完善等。另外,我们也将自己的一些经验回馈到开源社区,包括向 DataFusion[3],sqlness[4], Parquet2[5], Datafusion-Substrait[6], RustPython[7],OpenDAL[8] 等外部项目提交了贡献代码。

未来的计划

GreptimeDB

我们会按计划在 5 月份 release v0.3目标是可达到单机可靠,分布式可用的程度。其中 “可靠” 主要体现在性能和稳定性上,但既然是单机,无论性能还是稳定性都是有一定上限,所以我们也会逐步完善分布式的版本。对于单机已经能满足要求的用户来讲,GreptimeDB v0.3 将会给到建议可用的单机版本

而如果对可靠性和扩展性要求比较高的用户,我们也将在今年下半年完善分布式功能,计划年末提供分布式 GA ( General Availability ) 版本。

功能方面,我们还是会专注在数据的采集、存储和分析的生命周期,落地在用户实际场景问题,重点会在查询性能存储降本分布式方面,包括:

  • PromQL 查询性能优化
  • Python scripts 支持 MapReduce 框架,更高效地处理分布式计算
  • 查询引擎的优化,向量化查询、智能索引和 Cost-Based Optimizer 等
  • 存储和计算分离,存与算均可做到自动化伸缩
  • 采用自适应压缩算法,一份数据支撑时序模型与分析模型的混合负载,降低存储成本

相關推薦

2023-03-03

CeresDB 是一款高性能、分布式的云原生时序数据库,采用 Rust 编写。其开发团队近日宣布:经过近一年的开源研发工作,时序数据库 CeresDB 1.0 正式发布,达到生产可用标准。 CeresDB 1.0 官方中文文档:https://docs.ceresdb.io/cn/ CeresD

2022-02-16

道夜莺是什么,附下面一段介绍: 夜莺最初是由滴滴开源,其开发团队和Open-Falcon的开发团队是一拨人,随着云原生的流行,夜莺逐渐专注到云原生的监控领域,和Prometheus生态紧密结合,姑且可以看做是Prometheus的一个企业级

2023-03-17

//opengemini.org openGemini 简介 openGemini 是由华为云数据库创新实验室自行设计、研发并面向全球开源的一款云原生分布式时序数据库。主要面向物联网和运维监控等场景,提供海量时序数据库处理和分析的开源解决方案,

2023-10-18

【源创会预告】1024 程序员节(的前两天),相约开源PHP办公室,我们一起聊 AI!>>> Ruff v0.1.0 已发布,此版本主要变化包括提升稳定性、引入新的预览模式、引入 fix safety 等级,以及执行正式的版本控制策略。 新的预览模

2023-07-13

高性能日志数据检索,助力解决时序高基数问题 时序数据库openGemini的目标是打造一个专用的运维引擎,兼顾海量数据存储和分析检索,本次发布了运维领域中比较关键的两大特性:日志检索和高基数存储引擎。 一方面,日

2024-07-06

件做自定义处理和灵活分派 项目介绍 夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警

2022-06-27

美洲交易所)枚举值 新增vnpy_taos,涛思数据TDengine时序数据库适配器 新增vnpy_timescaledb,TimescaleDB时序数据库适配器 调整 更新vnpy_ctp/vnpy_ctptest支持广州期货交易所 更新vnpy_tora的现货API接口到最新版本:API_Python3.7_交易_v

2022-12-06

pache IoTDB 1.0.0 现已发布,Apache IoTDB 是一个物联网原生数据库,具有高性能的数据管理和分析功能,可部署在边缘和云端。 具体更新内容包括: 新架构,支持单机和集群模式,有两种类型的节点:ConfigNode、DataNode 支持 C

2022-08-19

Prometheus 是 CNCF(云原生计算基金会)项目,是一个系统和服务监控系统。它以给定的时间间隔从配置的目标收集指标,评估规则表达式,显示结果,并在观察到指定条件时触发警报。 Prometheus 2.38 更新内容如下: 特性: Web

2022-03-31

Mimir,号称是世界上可扩展性最强、性能最高的开源时序数据库。Mimir 支持将指标扩展到 10 亿甚至更多,具有简化的部署、高可用性、多租户、持久存储以及比 Cortex 快 40 倍的超快查询性能。 Mimir 托管在 ,采用 AGPLv3 开源许

2023-11-17

GitHub 发布了 2023 年度 Octoverse 开源状态报告。主要研究了围绕 AI、云和 Git 的开源活动如何改变开发人员体验,以及如何在开发者和企业中产生越来越大的影响。 报告发现了三大趋势: 开发人员正在大量使用生成式 AI 进

2022-08-20

还在后面。 EdgeDB 2.0 带来了许多新功能,包括: 内置数据库管理面板; 新的 EdgeQL GROUP 语句; 对象级别的访问控制; 区间数据类型; (久违的)官方 Rust 客户端; ……还有很多。 开始之前 开始介绍 2.0 之前,

2024-04-06

NioDB 是一个超级简单的高性能本地 JSON 数据库。 安装 $ npm i niodb --save 例子 以下代码在一个空的 example_data.json 文件中创建了 Nio 数据库,并添加了一些键值对到数据库中。 import { Nio } from 'niodb' // 或 cons

2023-02-17

JFrog 最新发布了首份年度 Software Artifact State of the Union 报告,基于来自全球 7000+ 不同规模企业的数据;揭露了当今企业开发人员在将软件从设计到生产过程中最常用的软件包和二进制文件。报告评估的 Top 10 顶级软件技术(2021