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 内或已迁到对象存储。