内容概述
2026 年 9 月 · 2026-09-01 – 2026-09-30
本月主要更新:
- GreptimeDB v1.2.0 正式发布,v1.2.1 修复了 JSON2 在手动 compaction 时可能丢失数据的问题,v1.3.0-beta.1 已发布。
- Trace V2 将 OTLP span 属性存入 JSON2 列,支持 Jaeger 查询和 Semantic Graph。
- Prometheus Remote Write v2 和 OTLP 的 native histogram 写入默认启用,无需开关。
GreptimeDB v1.2.0 于 9 月 8 日正式发布,包含结构化 JSON2 类型、Prometheus Remote Write v2 和 Splunk HEC 写入(发布博客)。从 v1.1 升级前,需要确认三项不兼容变更:standalone 模式下本地 COPY 和外部表路径被限制在 copy root 内,分布式模式下直接禁用(迁移指南);holt_winters 已移除,改用 double_exponential_smoothing;使用旧版 greptime.json 类型的非 Append Only 表在 flush 或 compaction 时可能失败,升级前请用有代表性的数据测试。
v1.2.1 于 9 月 16 日发布,修复了 JSON2 表读取 Parquet 统计信息时取错列的问题:带时间范围的查询可能返回错误结果,手动触发的 strict-window compaction(SWCS)可能丢失数据(db#9129),常规的自动 compaction 不受影响。此外还修复了 compaction 中 JSON2 混合类型的处理(db#9135)、repartition 之后 count(*) 结果错误的问题(db#9154),以及 PromQL rate 窗口跨 counter reset 的计算问题(db#9089)。使用 JSON2 列的 v1.2.0 用户请尽快升级。
v1.3.0-beta.1 于 9 月 29 日发布,包含下文的 Trace V2、native histogram 和 compaction 改动,另有一个实验性的 series index,不建议用于生产环境。试用前需要确认:
- 查询引擎升级到 DataFusion 55.1.0(db#8555、db#9177)。整数输入的
median、approx_median和approx_percentile_cont改为返回浮点数,REPLACE(s, '', replacement)原样返回s,structunnest生成的列名也有变化。结果 schema 固定的视图和 Flow sink 需要检查。 - JSON2 类型提示不再支持
nullable和default,需要从 DDL 和 pipeline 配置中删除(db#9213)。 - 流式 Flow 现在只接受单源表的 projection 和 filter 查询(db#8976)。源表为
ttl = 'instant'时,含聚合的CREATE FLOW会被拒绝;不含聚合的 join 也会被拒绝。源表有持久化数据时,聚合查询仍以 batching Flow 运行。升级前请检查现有 Flow 是否属于这几类。
贡献者
过去一个月,共有 24 位贡献者合并了 285 个 PR。其中 11 位社区贡献者贡献了 18 个 PR。 欢迎新贡献者:@Tyagiquamar、@DeviousCardi、@lczllx、@Minghan2005、@houyuwushang、@sainad2222、@immanuwell、@LiuQhahah!
感谢本月提交代码的社区贡献者:
- @dhruvxvaishnav db#9286 db#9191 db#9130 db#8941 db#8896
- @Tyagiquamar db#9059 db#9058 db#9032
- @DeviousCardi db#9365 db#9364
- @lczllx db#9374
- @houyuwushang db#9295
- @lyang24 db#9148
- @immanuwell db#9142
- @sainad2222 db#9060
- @LiuQhahah db#8967
- @Xuanwo db#8742
- @Minghan2005 db#8701
PR 亮点
db#9192 feat(otlp): add trace v2 ingestion with JSON2 attributes
Trace V2 是 OTLP trace 的新存储模型,需显式启用。greptime_trace_v2 pipeline 把 span、scope 和 resource 属性分别存入三个 JSON2 列,不再为每个属性 key 单独建列。在 OTLP trace 请求上设置 x-greptime-pipeline-name: greptime_trace_v2 请求头启用,目标表需要与 Trace V1 的表分开。属性可按路径查询并转换类型:
SELECT
trace_id,
span_attributes."http.status_code"::BIGINT AS http_status,
resource_attributes."service.name"::STRING AS service_name
FROM traces_v2;Jaeger 查询和 Semantic Graph 推导都已支持新模型(db#9257、db#9278),span 的 events 和 links 以 JSON 数组保存(db#9232)。已有的 Trace V1 表不会自动迁移。JSON2 类型的介绍见 JSON2 深度解析。
db#9301 feat: enable native histogram ingestion by default
Prometheus Remote Write v2 的 native histogram 和累积类型的 OTLP/HTTP 指数直方图写入默认启用,无需开关。查询部分见 8 月月报。Prometheus 侧需要选择 Remote Write 2.0:
remote_write:
- url: http://localhost:4000/v1/prometheus/write?db=public
protobuf_message: io.prometheus.write.v2.Requestexperimental_enable_prometheus_native_histogram 和 experimental_enable_exponential_histogram 两个配置项已移除,即使显式设为 false 也会被忽略。Remote Write v1 的 native histogram、native histogram 的 Remote Read 以及 OTel Arrow 指数直方图仍不支持。
db#9165 feat: use exact sequence ranges for incremental Flow reads
Batching Flow 可增量计算的聚合范围扩大,每轮只处理上次运行之后写入的数据,不重算全量快照。源表为 Append Only 表并开启新的 preserve_row_sequence 选项后(db#8865),Flow 能精确读取 checkpoint 之后写入的行,已经 flush 的数据也包括在内。HLL、UDDSketch、stddev_state 和 avg_state 产生的聚合状态列,会与 sink 中已有的状态合并(db#9168、db#9235)。
EVAL OFFSET 用于指定定时 Flow 在周期内的执行时间点。EVAL INTERVAL '1 hour' EVAL OFFSET '17 minutes' 在每小时第 17 分钟(UTC)运行,不受创建时间和重试影响(db#8878)。
db#9224 feat(query): implement PromQL @ modifier on vector and matrix selectors
PromQL 支持了 @ modifier。此前 some_metric @ 300 能通过解析,但返回的是随 step 变化的值,不是固定时间点的样本。绝对时间戳、@ start()、@ end() 以及 @ 与 offset 组合的语义都与 Prometheus 一致。
其他 PromQL 改动降低了查询开销。时间索引精度为秒或毫秒时,instant 查询只读取每条序列的最后一行(db#9034)。二元运算或分组 join 一侧的 label matcher 会下推到另一侧的扫描(db#9202、db#9280)。range 查询的响应改为逐批构建,不再把全部结果留在内存中(db#9229);构建响应时也省去了一次输出排序,并推迟了数值格式化(db#9090、db#9091、db#9092)。
其他更新
- Object store WAL 正在开发中(RFC)。配置
[wal] provider = "experimental_object_store"后,standalone 实例可以把 WAL 放在对象存储上(db#9386)。目前为实验功能,仅支持 standalone,未包含在 v1.3.0-beta.1 中。 - Compaction 的多路归并改用 tournament tree,减少合并重叠文件时的比较次数。TWCS 对活跃和非活跃时间窗口分别设置文件数阈值。
compaction.twcs.trigger_file_num仍可用,作为compaction.twcs.active_window.trigger_file_num的别名(db#8989、db#9064、db#9011)。 - MySQL 和 PostgreSQL 客户端可以使用 bearer token 认证:用户名填
*,密码填 token。需要 user provider 支持 token 校验(db#8899)。 - 社区贡献:基于 OpenDAL 原生 HDFS 客户端的 HDFS 对象存储后端
type = "Hdfs"(db#8701);对于建表时使用 Raft Engine 或 Kafka WAL 的表,ALTER TABLE ... SET 'skip_wal' = 'false'可以重新启用 WAL(db#9130);gRPC-Web 支持 CORS,通过[grpc] enable_cors开启(db#9374);information_schema.region_statistics新增min_timestamp和max_timestamp(db#9060)。
生态更新
Ingester
本月六个 ingester 新增 JSON2 写入:Go v0.7.5、Java v0.16.0、Rust v0.19.0、TypeScript v0.3.0、.NET v0.4.0 和 Erlang v0.3.0。升级注意事项:
- Rust v0.19.0:TLS 改为按需启用,需要加密连接时请开启
tls-ringfeature。 - Java v0.16.0:gRPC 升级到 1.78,默认开启 keepalive;bulk 写入的超时有了上限,超时的 stream 会被取消。
- .NET v0.4.0:JSON2 列需要 GreptimeDB 1.2.1 及以上版本,bulk 写入不支持 JSON2 列;可通过
x-greptime-hints请求头传入写入 hints。 - Erlang v0.3.0:含 JSON2 列的表必须是 Append Only 表;
connect_timeout、request_timeout和health_check_timeout可配置。
MCP Server
v0.6.0 要求 MCP Python SDK 2.x,依赖 v1 FastMCP API 的用户请停留在 v0.5.2。新增的 search_table_semantics 和 query_semantic_graph 工具用于按可观测性概念查找表、读取服务依赖图。语义图相关功能需要 GreptimeDB 1.3。
Dashboard
v0.13.15 随 v1.3.0-beta.1 一起发布,JSON 结果列新增隐藏 null 字段的开关,并修复了 metric 查询输入框溢出的问题。
Helm Charts
greptimedb-cluster 0.8.35 升级到 GreptimeDB v1.2.0,greptimedb-cluster 0.8.36 和 greptimedb-standalone 0.4.15 升级到 v1.2.1。
Good First Issues
以下 issue 适合首次贡献,在 issue 下留言即可认领。
Issue#7603 Support WITH (timeout/wait) for DDL statements
目前只有 ALTER TABLE repartition 支持 WITH (timeout = '...', wait = ...)。该 issue 按语句拆分了子任务,如 CREATE TABLE、DROP TABLE、CREATE FLOW 和 TRUNCATE TABLE,可按语句分别认领。
关键词:SQL, DDL
难度:Medium
参与社区
- 文档:https://docs.greptime.cn
- GitHub:https://github.com/GreptimeTeam/greptimedb
- X:https://x.com/Greptime
有 bug 或功能需求,欢迎提 issue,也可以到社区群里交流。


