资讯 GreptimeDB v1.2.0:JSON2 结构化 JSON 类型、Prometheus Remote Write v2 与 native histogram,先看这几个破坏性变更

2026-10-03 20:04:33

GreptimeDB v1.2.0:JSON2 结构化 JSON 类型、Prometheus Remote Write v2 与 native histogram,先看这几个破坏性变更

概述

GreptimeDB v1.2.0(2026-09-08)引入了新的结构化存储 JSON 数据类型 JSON2 及其查询能力、Prometheus Remote Write v2 摄入、Flow 运行时可观测性,以及 Dashboard 更新,同时包含一批查询与写入侧的改进。

官方给出的升级建议是:v1.2.0 用户应升级到 v1.2.1。v1.2.1 修复了 JSON2 在 compaction 过程中的丢数据问题,并包含若干查询正确性与稳定性修复。

  • 发布说明:
  • 仓库:

亮点特性

JSON2:结构化存储的 JSON 类型与点路径 SQL 访问

JSON 可以按 struct 存储,而不是整块 blob(JSONB)。配套能力包括 SQL 路径与函数、列表索引、空值与 null 处理,以及 table-aware pipelines。

CREATE TABLE application_logs (
ts TIMESTAMP TIME INDEX,
attrs JSON2
) WITH ('append_mode' = 'true');

INSERT INTO application_logs VALUES (1, '{"http":{"status":200,"path":"/api/orders"}}');

SELECT attrs.http.status::BIGINT AS status, json_get(attrs, 'http.path')::STRING AS path FROM application_logs;

Prometheus Remote Write v2 与实验性 native histogram

GreptimeDB 可以摄入 Prometheus Remote Write v2 请求,并通过 PromQL 查询 native histogram。native histogram 摄入是实验特性,默认关闭。

在 GreptimeDB 侧开启:

[http]
experimental_enable_prometheus_native_histogram = true

Prometheus 侧配置:

remote_write:
- url: http://greptimedb:4000/v1/prometheus/write
protobuf_message: io.prometheus.write.v2.Request

更高效的 series 查询

字典编码的 series key、字典编码列上正确的正则过滤,以及 RangeSelect 投影裁剪。

Splunk HEC 摄入

使用兼容 Splunk HEC 的客户端,将结构化事件或原始日志直接发送到:

  • /v1/splunk/services/collector/event
  • /v1/splunk/services/collector/raw

Flow 运行时状态

SHOW FLOW STATUS 与 information_schema.flow_statistics 暴露 Flow 运行时统计信息。本版本中,distributed Flow 的 start_time 和 uptime_seconds 上报为 NULL。

Dashboard

内置 Dashboard 从 v0.12.2 升级到 v0.13.13,新增快照、可调整大小/可展开表格、查询结果全屏、trace 表选择、命令面板,以及切换 host 后自动重连。

破坏性变更与升级注意

本地 SQL 文件访问被沙箱化

standalone 部署下,本地 COPY 与外部表路径被限制在 copy root 之内;distributed 部署下这些本地路径被禁用。升级前需按本地 SQL 文件访问迁移指南迁移数据、设置专用 copy root,或把工作流迁到对象存储。

holt_winters 移除

改用 double_exponential_smoothing。

sparse_primary_key_encoding 移除

metric-engine 的 data region 默认使用稀疏主键编码。旧配置仍能加载,但该选项会被忽略,更新配置时应删除它。

流水线整数越界不再静默回绕

整数窄化会检查目标范围,值放不下时遵循配置的 on_failure 行为。

soft-drop 与恢复改为企业版功能

beta1 中这些操作在 OSS 可用;从 beta2 起,OSS metasrv 会拒绝 gc.experimental_soft_drop.enable = true。从 beta1 升级前,需要先把仍需要的软删表恢复出来。OSS 无法恢复或清理已在 beta1 中软删的表,也不会清理其过期 tombstone;要继续这个生命周期必须使用企业版。

native histogram 持久化字段符号变化

span-length list 元素由 UInt32 变为 Int32;整数 count 字段由 UInt64 变为 Int64,count_u64/zero_count_u64 改名为 count_i64/zero_count_i64。更早 beta 版本按旧 schema 写入的 native histogram Struct 数据可能不可读。该限制针对实验性 beta 特性,不涉及普通 v1.1 metric 表。没有迁移、降级或混合版本兼容层,升级前需规划迁移或重新摄入。

旧版 JSON2 表需要升级测试

使用 legacy greptime.json 类型的存量非 append 表,升级后可能在 flush 或 compaction 时失败。该已知限制在 v1.2.0 中未修复。受影响的表应推迟升级,或从兼容的旧版本环境逻辑导出数据,再导入到新建的 v1.2.0 表中。不要拷贝旧表目录或元数据。保留备份;切换前验证数据完整性,并在新表上实际执行 flush 与 compaction。迁移要用代表性数据测试。仅设置 append_mode 不是可靠的解决办法。

升级建议

  • 直接升到 v1.2.1,避开 JSON2 在 compaction 期间的丢数据问题。
  • 升级前保留备份。
  • 用代表性数据实测 flush 与 compaction,确认无误后再切流。
  • 不要拷贝旧表目录或元数据,需要迁移时走逻辑导出/导入。
  • 检查配置中的 sparse_primary_key_encoding,改用 double_exponential_smoothing 替代 holt_winters,并确认本地 SQL 文件访问路径落在 copy root 内或已迁到对象存储。

推荐文章

程序员茄子在线接单