当前位置: 首页 > 工具软件 > GreptimeDB > 使用案例 >

GreptimeDB v0.2 正式发布 | 50%+ PromQL 兼容、写入性能优化、Dashboard with Playground

咸晨
2023-12-01

四月春暖花开,GreptimeDB v0.2 也如期而至。在社区的助力下,GreptimeDB 正按计划一步一个脚印朝着设定的里程碑前行。
在这一月的时间内, GreptimeDB:

  • 优化数据的导入导出,让用户快速上手;
  • 提升 PromQL 兼容性,替换 Prometheus 成本更低;
  • 写入性能优化,满足更复杂的使用场景;
  • 重构使用文档,更友好的用户体验;
  • 带有使用引导的 dashboard,快速了解产品;
  • 为数据库可靠安全等其他方面进行了一系列相关的优化

这些交付的背后是 233 merged PRs ,101 个优化和 42 个修复,涉及 687 个文件变更,约 44548 行代码修改,41 位贡献者以及 2600+ 的关注者。 特别感谢社区和团队的努力,让我们一起回顾 v0.2 的主要内容。

GreptimeDB v0.2

Features

  • 支持 COPY TOFROM 语句[1]

COPY TOCOPY FROM 命令通常被用作数据迁移或备份工具。GreptimeDB 不仅支持了向本地磁盘导出数据或从本地磁盘导入数据,还支持对象存储比如 S3。

  • 新增 REPL[2]

我们从 Datanode 中移除了 SQL 接口,这样就需要再提供一个类似 mysql-cli 的方式进行调试。受到 InfluxDB IOx 的启发推出了 REPL,可以起到这个作用。使用简单,具有历史记录和提示功能,可以通过我们的 gRPC 接口直接执行 SQL 语句查询。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xiahbFm6-1681960128247)(null)]

  • PromQL 兼容性达到 50%+

我们已经初步支持了 PromQL,并通过了超过 50% 的 Prometheus 的兼容性测试,大大提升了与 PromQL 的兼容性。为了不断进行优化,并将所有与 PromQL 兼容性相关的 PR 和任务收集在这里,我们创建了这个 issue[3],以便于跟踪进展。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmcq1Fp3-1681960128236)(null)]

  • 建表支持多种时间戳精度[4]

我们增强了 Timestamp 来支持在建表时指定时间戳精度,遵循 MySQL 中的 fractional seconds 语法[5]。已经支持以下几个时间精度:

  • 0: TimeUnit::Second
  • 3: TimeUnit::Millisecond
  • 6: TimeUnit::Microsecond
  • 9: TimeUnit::Nanosecond

比如,现在我们可以将时间查询精确到微秒:

mysql> create table demo (ts timestamp(6) time index, cnt int);Query OK, 0 rows affected (0.05 sec)
  • Procedure on Create & Alter Table[6]

Procedure 框架的作用是帮助执行系统中的多步操作,保证其最终能够执行完成或回滚。我们的 Procedure 框架借鉴了 HBase ProcedureV2[7] 以及 Accumulo FATE[8]两个类似的框架。

目前 CREATE TABLEALTER TABLE 的 procedure 均已开发完成。我们计划在 DROP TABLE 的 procedure 开发完成后逐渐切换到 procedure 框架。

  • Dashboard with Playground[9]

全新模块:Playground:提供了互动文档的能力,可以在文档中交互式地使用数据库。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rdaFGRqB-1681960128142)(null)]

初步支持PromQL查询。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EZwdtwLc-1681960128128)(null)]

  • 其他
    • DELETE 语句增强,支持任意 where 条件
    • 支持 Region manifest checkpoint 以控制磁盘用量和加速启动
    • 分布式模式下支持运行 python script

Protocol

  • 优化写入的私有 gRPC 协议[10]

为了进一步优化写入性能,我们在 ArrowFlight 之外增加了一种私有 gRPC 协议。这一协议支持 Unary Call 和 Client Streaming Call,从而提高数据写入的效率。与此同时,原有的 ArrowFlight 则侧重于查询方面的性能表现。

Clients

  • Java SDK[11] 新增流式写入 API,更好的支持超高吞吐数据写入
  • 新增 Golang SDK[12],欢迎试用

Refactor

重构协议解析层,我们一直希望所有协议解析相关都留在 Frontend 这一层,包括解析成逻辑计划。之前因为一些原因 Datanode 也保留了 SQL Parser,这种妥协的设计消耗了我们大量的维护精力,比如每次引入新特性都要在这两个地方分别修改。所以我们决定清除掉这个技术债。

写入性能优化数据

在 GreptimeDB v0.2 中,我们为 metrics 采集场景优化了批量写入的能力。相对 SQL 接口而言,批量写入 API 可将写入吞吐提升 20 倍左右,在真实的业务场景中测试可以获得单 core 高达 38 万点每秒的写入吞吐(测试机型使用 AMD Ryzen™ 7 7735HS CPU)

The plan for v0.3

查询性能

在 0.2 我们重点优化了写入性能,在 0.3 查询性能将成为重点课题,我们将从部分用户的重点查询场景入手,也会包含一些数据结构和索引上的优化。

分布式

从 0.3 开始,分布式能力提高优先级,分布式未来主要聚焦在三个方面来做:高可用,功能和用户体验,我们制定了中长期的迭代计划,按月迭代,每个月集中做一个主题,详情见 GitHub Projects[13]

致谢社区

感谢亲爱的社区和所有贡献者们,是你们的每一个建议、BUG 修复和代码贡献,才让这个项目不断壮大、迈向新高峰。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Eycfiw9-1681960127980)(null)]

让我们为共同的成果感到自豪,继续携手努力,共同打造新一代云原生时序数据库。

参考

[1] https://docs.greptime.com/reference/sql/copy

[2] https://docs.greptime.com/user-guide/operations/cli-repl

[3] https://github.com/GreptimeTeam/greptimedb/pull/1042

[4] https://docs.greptime.com/reference/data-types#data-types

[5] https://dev.mysql.com/doc/refman/8.0/en/fractional-seconds.html

[6] https://github.com/GreptimeTeam/greptimedb/issues/286

[7] https://github.com/apache/hbase/blob/master/src/main/asciidoc/_chapters/pv2.adoc

[8] https://accumulo.apache.org/1.8/accumulo_user_manual.html#_fault_tolerant_executor_fate

[9] https://github.com/GreptimeTeam/dashboard

[10] https://github.com/GreptimeTeam/greptimedb/pull/1196

[11] https://github.com/GreptimeTeam/greptimedb-client-java

[12] https://github.com/GreptimeTeam/greptimedb-client-go

[13] https://github.com/orgs/GreptimeTeam/projects


关于 Greptime

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

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

GreptimeCloud 基于开源的 GreptimeDB,为用户提供全托管的 DBaaS,以及与可观测性、物联. 网等领域结合的应用产品。利用云提供软件和服务,可以达到快速的自助开通和交付,标准化的运维支持,和更好的资源弹性。GreptimeCloud 已正式开放内测,欢迎关注公众号或官网了解最新动态

官网:https://greptime.com/

公众号:GreptimeDB

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/

 类似资料: