常见问题
- GreptimeDB 是什么 / 适用场景 → 为什么选择 GreptimeDB
- 性能基准测试 → 功能特性
- Metrics、Logs、Traces 支持 → 功能特性
- 高基数处理 → 功能特性
- 数据模型 → 数据模型
通用问题
GreptimeDB 的性能表现如何?
GreptimeDB 针对 metrics、logs、traces 场景优化,写入吞吐高、查询延迟低、存储成本低。以下是已发布的基准测试报告:
- GreptimeDB vs. InfluxDB
- GreptimeDB vs. TimescaleDB
- GreptimeDB vs. Grafana Mimir
- GreptimeDB vs. ClickHouse vs. Elasticsearch(日志基准测试)
- GreptimeDB vs. SQLite
- GreptimeDB vs. Loki
- JSONBench 10 亿条冷查询 #1
架构层面的对比参见对比表格。
GreptimeDB 的设计权衡有哪些?
GreptimeDB 针对可观测性和时序工作负载做了专门优化,与通用 OLTP 数据库有不同的取舍:
- 不支持 ACID 事务:优先保证高吞吐写入,而非事务一致性。
- 支持删除,但不适合高频删除场景:GreptimeDB 支持数据删除和基于 TTL 的自动过期,但不适合需要频繁细粒度删除的场景——可观测性数据本身就是追加为主的。
- 支持 Join,但暂时不是优化重点:GreptimeDB 支持 SQL Join,但查询引擎主要针对时序数据的过滤-聚合模式优化。简单 Join(如关联查询、metrics 与 logs 的交叉分析)可以正常使用。
- 面向时序数据:针对 IoT、metrics、logs、traces 优化,而非通用 OLTP。
GreptimeDB 和 InfluxDB 有什么区别?
主要区别:
- 开源策略:GreptimeDB 的整个分布式系统完全开源。
- 架构:基于 Region 的分片设计,针对可观测性工作负载优化。
- 查询语言:SQL + PromQL vs. InfluxQL + SQL。
- 统一模型:在一个系统中原生支持 metrics、logs 和 traces。
- 存储:可插拔引擎,针对不同场景做专项优化。
- 云原生:原生支持 Kubernetes,计算存储分离(参见 Kubernetes 部署指南)。
详细对比参见 GreptimeDB vs InfluxDB。更多产品对比(如 vs. ClickHouse、Loki 等)可在官网的对比菜单中找到。
数据模型与 Schema
Tag 列和 Field 列有什么区别?
GreptimeDB 使用三种语义列类型:Tag、Timestamp 和 Field。
- Tag 列用于标识时间序列。具有相同 Tag 值的行属于同一条时间序列。Tag 列默认加入主键索引,查询过滤快。在 SQL 中通过
PRIMARY KEY声明。 - Field 列存储实际测量值(数值、字符串等)。Field 列默认不建索引,但可以按需添加索引。
- Timestamp 是时间索引,每张表必须有且仅有一个。
例如,在 system_metrics 表中,host 和 idc 是 Tag,cpu_util 和 memory_util 是 Field,ts 是 Timestamp。
GreptimeDB 支持无 Schema 写入吗?
支持。通过 gRPC、InfluxDB Line Protocol、OpenTSDB、Prometheus Remote Write、OpenTelemetry、Loki 或 Elasticsearch 兼容 API 写入时,GreptimeDB 会在首次写入时自动创建表和列,无需手动定义 Schema。
详见自动 Schema 生成。
建表后能修改列的数据类型吗?
可以。使用 ALTER TABLE ... MODIFY COLUMN 修改 Field 列的数据类型:
ALTER TABLE monitor MODIFY COLUMN load_15 STRING;
目标列必须是 Field 列(不能是 Tag 或时间索引),且必须可为空(nullable),这样类型转换失败时返回 NULL 而非报错。
完整的 ALTER TABLE 语法参见 SQL 参考。
GreptimeDB 如何处理迟到数据和乱序数据?
GreptimeDB 接受任意时间戳的写入,没有写入时间窗口或顺序要求。迟到和乱序数据正常写入后立即可查。存储引擎的 Compaction会在后台自动排序和合并数据。
对于 Append Only 表(常用于日志),行不会被去重,迟到数据只是新增行。对于有主键的表,Tag + Timestamp 组合相同的行遵循更新语义。
集成与迁移
GreptimeDB 支持哪些协议、工具和 SDK?
写入协议:OpenTelemetry (OTLP)、Prometheus Remote Write、InfluxDB Line Protocol、Loki、Elasticsearch、MySQL、PostgreSQL、gRPC——参见协议概述。
可视化:Grafana(官方插件 + MySQL/PostgreSQL 数据源),以及任何支持 MySQL 或 PostgreSQL 协议的工具。
数据管道:Vector、Fluent Bit、Telegraf、Kafka——参见集成概述。
SDK:
如何将 Grafana 连接到 GreptimeDB?
GreptimeDB 支持三种 Grafana 数据源接入方式:
- GreptimeDB 插件:官方插件,支持 SQL 和 PromQL 查询。
- Prometheus 数据源:通过 GreptimeDB 的 Prometheus 兼容端点使用 PromQL 仪表板。
- MySQL 数据源:通过 GreptimeDB 的 MySQL 协议端点接入。
详细配置参见 Grafana 集成指南。
如何从其他数据库迁移到 GreptimeDB?
GreptimeDB 提供以下迁移指南:
- 从 InfluxDB 迁移:Line Protocol 和数据迁移
- 从 Prometheus 迁移:Remote Write 和历史数据迁移
- 从 ClickHouse 迁移:表结构和数据迁移
- 从 MySQL/PostgreSQL 迁移:基于 SQL 的迁移
详细说明参见迁移概述。
部署与运维
有哪些部署方式?
集群部署(生产环境):
- 至少 3 个节点保证高可用
- 三个组件:metasrv、frontend、datanode
- 组件可以合并部署或独立部署
- 参见容量规划指南
单机部署(开发 / 边缘 / IoT):
- 单个二进制文件,所有组件集成在一个进程中
- 支持 Linux、macOS、Android ARM64、Raspberry Pi
- 参见安装指南
存储后端:S3、GCS、Azure Blob(推荐生产);本地磁盘(开发测试或者中小规模)。元数据:集群模式使用推荐 RDS 或 etcd,单机模式本地存储。
完整介绍参见部署与管理概述。
如何管理 GreptimeDB?
GreptimeDB 使用标准 SQL 作为管理接口。你可以通过 SQL 完成表的基本操作如建表删表、修改 Schema、设置 TTL 策略、配置索引等操作,不用写配置文件,也不用调专有 API。
节点级别的配置参见配置指南。
如何升级 GreptimeDB?
参见升级指南,包含升级步骤、兼容性说明和不兼容变更。
如何备份和恢复数据?
GreptimeDB 提供数据导出和导入工具,支持全库备份与恢复,包括仅导出 Schema 和 S3 导出。
参见数据导出与导入。
能否在单机模式和集群模式之间迁移数据?
可以。使用 COPY TO 从单机模式导出表数据,再用 COPY FROM 导入到集群(反过来也一样)。数据以 Parquet 格式导出,可以存放在本地或对象存储(S3、GCS)中。
WAL 目录越来越大,正常吗?
WAL(Write-Ahead Log)空间在数据刷写到持久存储后会循环复用。如果 WAL 目录看起来很大,通常是因为数据尚未刷写,或者 WAL 保留设置需要调整。WAL 是临时空间,评估存储用量时只看数据目录(data)就行。
WAL 配置参见配置指南。
GreptimeDB 的扩展能力如何?
- 表和列的数量没有严格限制,性能主要取决于主键设计而非表数量。
- Region 内数据自动按时间组织。
- 通过
PARTITION子句手动分片——参见表分片指南。 - 多层缓存(写入缓存 + LRU 读缓存)优化性能。
- 对象存储后端(S3/GCS/Azure Blob)提供几乎无限的存储容量。
- 分布式查询执行,支持 MPP 处理大规模数据集。
数据如何分布?
- 建表时通过
PARTITION子句手动分区——参见表分片指南。 - Region 内按时间自动组织。
- 支持手动 Region 迁移进行负载均衡——参见 Region 迁移指南。
- 自动 Region 故障转移保障容灾——参见 Region 故障转移。
有哪些灾备方案?
GreptimeDB 提供多种灾备策略:
- 单机灾备:远程 WAL + 对象存储,RPO=0,RTO 分钟级。
- Region 故障转移:单个 Region 自动切换,停机时间极短。
- 双活容灾(企业版):双节点间同步复制请求。
- 跨区域单集群:横跨三个区域,零 RPO,区域级容错。
- 备份与恢复:定期数据备份,RPO 取决于备份频率。
参见灾备方案概述。
如何监控和排查问题?
GreptimeDB 暴露 Prometheus 兼容的监控指标,并提供健康检查端点。监控配置和故障排查指南参见监控概述。
开源版 vs 企业版 vs 云服务
各版本有什么区别?
- 开源版:完整的分布式系统、多协议支持、基础认证。
- 企业版:在开源版基础上增加 CBO 查询优化、双活容灾、自动扩缩容和索引、RBAC/LDAP 集成、7×24 技术支持。
- GreptimeCloud:全托管方案,为生产工作负载提供资源和性能保障、可预测的定价、SLA 保障。
详细功能对比参见价格与功能。
有哪些安全功能?
开源版:
- 用户名/密码认证
- 用户读写权限控制
- TLS/SSL 连接加密
企业版 / 云服务:
- 基于角色的访问控制(RBAC)
- LDAP 支持
- 团队管理和 API 密钥
- 静态数据加密
- 合规审计日志