内容概述
作为一个成长中的开源项目,GreptimeDB 的进展离不开来自全球的社区贡献者们,感谢各位!
最近的内容更新如下:
实现了 PromQL 的
scalar()
函数。目前 GreptimeDB 已经全面支持了 node-exporter 的 Grafana 大盘(https://grafana.com/grafana/dashboards/1860-node-exporter-full/,个别数字口径正在校准中)支持查询时指定 Prometheus 协议的
lookback
参数。该参数可以控制 instant query 时选点 (lookback
) 的时间范围,对于查询不同采集间隔的数据比较有用兼容了 SQL 的
TINYTEXT
,MEDIUMTEXT
和LONGTEXT
类型。一些外部工具如 Apache SkyWalking 需要用到这些类型。
社区贡献者名单
在过去的两周里,GreptimeDB 共合并了 54 个 PR,其中有 5 位独立贡献者,累计 8 个 PR 被成功合并,还有很多待合并的 PR。
祝贺以下各位在过去 2 周内成为我们活跃的贡献者:
🎉 热烈欢迎@irenjj 作为新的贡献者加入社区并成功合并了首个 PR,还有更多来自其他独立贡献者的 PR 正在等待合并。

同时衷心感谢我们所有的成员和贡献者!是你们的付出让我们的项目得以成功,也是你们让 GreptimeDB 成为一个更优质的产品。让我们一起努力,建立一个更棒的社区!
PR 亮点
db#3693 增加了对 PromQL scalar()
函数的支持
scalar()
函数用于将一个 instant vector 转化为一个 scalar;部分 Grafana 大盘,如 node-exporter 的大盘会用到该函数。例如使用以下 PromQL 计算 CPU 的平均负载(average load):
scalar(node_load1{instance="node-exporter:9100",job="node"}) * 100
/
count(
count by (cpu) (node_cpu_seconds_total{instance="node-exporter:9100",job="node"})
)
- 现 GreptimeDB 已经支持上述查询。
db#3630 支持查询时指定 Prometheus 协议的 lookback
参数,默认为 5 分钟
lookback
的值用于控制 PromQL instant query 选择数据点的时间范围;如果数据的采集间隔超过 5 分钟,那么使用默认的
lookback
值可能会出现找不到点的情况;此前该参数无法设置,现在你可以通过以下方式设置
lookback
的值:在 Prometheus 的 query HTTP API 中传入
lookback
参数在 SQL 界面查询 PromQL 时可以通过以下语法传入
lookback
参数TQL EVAL (<start>, <end>, <step>, [lookback]) <promql>
例如以下数据的采集精度为 10 分钟:
CREATE TABLE test(i DOUBLE, j TIMESTAMP TIME INDEX, k STRING PRIMARY KEY);
INSERT INTO test VALUES (1, 1713888001000, "a"), (2, 1713888601000, "a");
使用默认 lookback
参数时:
TQL EVAL (1713888400, 1713888520, '60s') test;
查询结果为空:
Empty set
如果设置 lookback
为 10 分钟:
TQL EVAL (1713888400, 1713888520, '60s', '10m') test;
则可以查询到结果:
+------+---------------------+------+
| i | j | k |
+------+---------------------+------+
| 1 | 2024-04-23 16:06:40 | a |
| 1 | 2024-04-23 16:07:40 | a |
| 1 | 2024-04-23 16:08:40 | a |
+------+---------------------+------+
3 rows in set
db#3731 兼容了 SQL 的 TINYTEXT
,MEDIUMTEXT
和 LONGTEXT
类型
这些类型在对接一些外部工具时需要用到,如 Apache SkyWalking。现在建表时可以指定这些类型,这些类型都会映射到 GreptimeDB 的字符串类型。
db#3638 增加了 is_strict_mode
参数用于对 Prometheus 协议写入的字符串做严格的 UTF-8 校验
出于性能考虑,该参数默认关闭。如果要校验写入的数据中是否包含非法的 UTF-8 字符, 则可以设置该参数为 true
。
具体方法: 设置配置文件 [http]
section 中的 is_strict_mode
为 true, 即可开启校验。
[http]
is_strict_mode = true
db#3684 修复了 CLI 工具导出名字带 .
的表时出错的问题
此前如果表名中带有 .
字符,如 a.b.c.d
,在使用 CLI 工具导出数据时可能会报错。导出命令如下:
greptime cli export --addr '127.0.0.1:4001' --output-dir /tmp/greptimedb-export --target create-table
。
db#3772 修复了写入时内存占用不统计 NULL 值的问题
此前,如果用户写入的数据以 NULL 为主,在写入时 GreptimeDB 可能会长时间不触发刷盘(flush),导致内存占用过高。
Good First Issue
db#3336 为 GreptimeDB 的 gRPC 服务增加 TLS 支持
目前 GreptimeDB 的 gRPC 服务不支持加密,为 gRPC 服务增加 TLS 协议支持可以提高使用 gRPC 协议时的安全性。
关键词:gRPC,TLS,安全
难度:中等
db#3511 在 COPY FROM 语句中支持指定时间范围,从而避免导入不需要的数据
COPY FROM 语句常常用于从备份文件中恢复表的数据,如果能够支持过滤指定时间范围,可以避免导入不需要的数据,加快数据恢复的速度。
关键词:备份/恢复、过滤、时间戳
难度:中等
db#3597 从 orc-rs
迁移到 datafusion-orc
Crate orc-rs
已不再维护,需要将相关依赖迁移到替代 crate datafusion-orc
上。
关键词:更新依赖
难度:中等
关于 Greptime
Greptime 格睿科技专注于为可观测、物联网及车联网等领域提供实时、高效的数据存储和分析服务,帮助客户挖掘数据的深层价值。目前基于云原生的时序数据库 GreptimeDB 已经衍生出多款适合不同用户的解决方案,更多信息或 demo 展示请联系下方小助手(微信号:greptime)。
欢迎对开源感兴趣的朋友们参与贡献和讨论,从带有 good first issue 标签的 issue 开始你的开源之旅吧~期待在开源社群里遇见你!添加小助手微信即可加入“技术交流群”与志同道合的朋友们面对面交流哦~
Star us on GitHub Now: https://github.com/GreptimeTeam/greptimedb
Twitter: https://twitter.com/Greptime
Slack: https://greptime.com/slack