跳到主要内容
版本:1.0

为什么选择 GreptimeDB

问题:三种信号,三套系统

大多数团队的可观测性栈长这样:Prometheus(或 Thanos/Mimir)跑 metrics,Grafana Loki(或 ELK)跑日志,Elasticsearch(或 Tempo)跑 traces。每套系统各有一套查询语言、存储方案、扩展方式,运维各管各的。

"三支柱"架构在这些关注点各自独立时是合理的。但实际跑起来就是:

  • 3 倍运维量 — 三套系统要分别部署、监控、升级、排障
  • 数据孤岛 — 错误率飙升和日志里的异常模式要手动在系统间切换才能关联
  • 成本失控 — 每套系统存一份冗余元数据,各自独立扩展导致资源浪费

GreptimeDB 的思路不同:一个引擎处理三种信号,数据放对象存储,计算存储分离。

统一处理可观测数据

GreptimeDB 通过以下方式统一处理 metrics、logs 和 traces:

  • 一致的数据模型,将所有可观测数据视为带上下文的时间戳宽事件
  • 原生支持 SQLPromQL 双查询
  • 内置流计算能力(Flow)做实时聚合和分析
  • 跨信号无缝关联分析(参见 SQL 示例

一套系统替代原来的多组件栈。

具体来说:用一个数据库替代 Prometheus + Loki + Elasticsearch,用 SQL 在一条查询里关联 metrics 异常、日志模式和 trace 延迟——不用在系统间来回切换。

用单一引擎替代多组件可观测性栈

对象存储,成本低一个数量级

GreptimeDB 以云对象存储(S3、Azure Blob Storage 等)为主存储层,配合列式压缩,存储成本最高可降低 50 倍。支持灵活扩展到各类云存储,管理简单,无厂商锁定

生产环境实测:

  • Logs:查询性能提升 10 倍,TCO 降低 30%(从 Loki 迁移,170+ 可用区日处理数十亿条日志)
  • Traces:存储成本降低 45 倍,查询快 3 倍(替换 Elasticsearch 作为 Jaeger 后端,一周完成迁移)
  • Metrics:用原生计算存储分离替代 Thanos,运维复杂度大幅下降

高性能

写入端,GreptimeDB 用 LSM Tree、数据分片、灵活的 WAL 配置(本地盘或 Kafka)等手段处理大规模可观测数据的写入负载。

查询端,GreptimeDB 用纯 Rust 编写,查询引擎基于 Apache DataFusion 做向量化执行和分布式并行处理,结合多种索引(倒排索引、跳数索引、全文索引)做智能裁剪和过滤。

GreptimeDB 在 JSONBench 10 亿条记录冷查询中拿下第一! 更多性能测试报告

基于 Kubernetes 的弹性扩展

GreptimeDB 从底层就为 Kubernetes 设计,采用计算存储分离架构,实现真正的弹性扩展:

  • 存储和计算资源独立伸缩
  • 通过 Kubernetes 水平扩展,无上限
  • 写入、查询、压缩等不同负载之间做资源隔离
  • 自动故障转移和高可用

Thanos 和 Mimir 要靠多个有状态组件(ingester 需要持久盘、store-gateway、compactor)才能扩展。GreptimeDB 从架构层面就是计算存储分离——数据持久化在对象存储,计算节点独立扩展,本地盘只做缓冲和缓存。扩容加节点,缩容不丢数据。

存储/计算分离,计算/计算分离

灵活部署:从边缘到云

GreptimeDB 架构

GreptimeDB 的模块化架构让各组件既能独立运行,也能协同部署。从边缘设备到云环境,都用同一套 API。比如:

  • Frontend、Datanode 和 Metasrv 可以合并成单一二进制(standalone 模式)
  • WAL、索引等组件可以按表级别启用或关闭

这种灵活性让 GreptimeDB 能覆盖从边缘到云的完整场景,比如边云一体化解决方案

从嵌入式单机部署到云原生集群,GreptimeDB 都能适配。

易于集成

GreptimeDB 支持 PromQLPrometheus remote writeOpenTelemetryJaegerLokiElasticsearchMySQLPostgreSQL 协议——从现有栈迁移不用改查询、不用改 pipeline。查询用 SQL 或 PromQL,可视化接 Grafana

SQL + PromQL 双引擎意味着 GreptimeDB 可以替代"Prometheus + 数据仓库"的经典组合——PromQL 做实时监控告警,SQL 做深度分析、JOIN、聚合,全在一个系统里。GreptimeDB 还支持多值模型,单行可以有多个字段列,比单值模型省流量、查询也更简洁。

SQL 不只是查询语言,也是 GreptimeDB 的管理入口——建表管理 schema、设置 TTL 策略、配置索引,全部用标准 SQL 完成。不需要专有配置文件,不需要自定义 API,不需要 YAML 驱动的控制面。这是和 Prometheus(YAML 配置 + relabeling rules)、Loki(YAML 配置 + LogQL)、Elasticsearch(REST API + JSON mappings)在运维层面的关键区别。团队只要会 SQL,就能管理 GreptimeDB,不用学新工具。

GreptimeDB 对比

GreptimeDBPrometheus / Thanos / MimirGrafana LokiElasticsearch
数据类型Metrics、Logs、Traces仅 Metrics仅 LogsLogs、Traces
查询语言SQL + PromQLPromQLLogQLQuery DSL
存储原生对象存储(S3 等)本地盘 + 对象存储(Thanos/Mimir),ingester 需要持久盘对象存储(chunks)本地盘
扩展计算存储分离,计算节点独立扩展Federation / Thanos / Mimir — 多组件,运维重无状态 + 对象存储基于分片,运维重
成本存储成本最高降低 50 倍大规模下成本高中等高(倒排索引开销)
OpenTelemetry原生支持(Metrics + Logs + Traces)部分(仅 Metrics)部分(仅 Logs)通过 instrumentation
管理方式标准 SQL(DDL、TTL、索引)YAML 配置 + relabeling rulesYAML 配置 + LogQLREST API + JSON mappings

了解更多: