概述
欢迎使用 GreptimeDB 用户指南。
GreptimeDB 是用于指标、事件和日志的统一时间序列数据库, 可提供从边缘到云的任何规模 的实时洞察。 本指南将帮助你探索 GreptimeDB 的每个强大功能。
SQL 查询示例
让我们从一个 SQL 查询示例开始。
为了监控特定指标的性能和可靠性, 工程师通常定期查询并分析一段时间内的数据。 在分析过程中通常涉及到 JOIN 两个数据源, 但如下方的查询在之前是不可能的, 而现在使用 GreptimeDB 就可以做到:
SELECT
host,
approx_percentile_cont(latency, 0.95) RANGE '15s' as p95_latency,
count(error) RANGE '15s' as num_errors,
FROM
metrics INNER JOIN logs on metrics.host = logs.host
WHERE
time > now() - INTERVAL '1 hour' AND
matches(path, '/api/v1/avatar')
ALIGN '5s' BY (host) FILL PREV
该查询分析了过去一小时内特定 API 路径 (/api/v1/avatar
) 的性能和错误。
它计算了每个 15 秒间隔内的第 95 百分位延迟和错误数量,并将结果对齐到每个 5 秒间隔以保持连续性和可读性。
逐步解析该查询:
- SELECT 子句:
host
:选择 host 字段。approx_percentile_cont(latency, 0.95) RANGE '15s' as p95_latency
:计算 15 秒范围内的第 95 百分位延迟,并将其标记为 p95_latency。count(error) RANGE '15s' as num_errors
:计算 15 秒范围内的错误数量,并将其标记为 num_errors。
- FROM 子句:
metrics INNER JOIN logs on metrics.host = logs.host
:在 host 字段上将 metrics 和 logs 表进行连接。
- WHERE 子句:
time > now() - INTERVAL '1 hour'
:筛选出过去一小时内的记录。matches(path, '/api/v1/avatar')
:筛选出特定 API 路径/api/v1/avatar
的记录。
- ALIGN 子句:
ALIGN '5s' BY (host) FILL PREV
:将结果对齐到每 5 秒,并使用前一个非空值填充缺失值。
接下来解析一下该查询示例展示的 GreptimeDB 关键功能:
- 统一存储: GreptimeDB 是支持同时存储和分析指标及日志的时序数据库。简化的架构和数据一致性增强了分析和解决问题的能力,并可节省成本且提高系统性能。
- 独特的数据模型: 独特的数据模型搭配时间索引和全文索引,大大提升了查询性能,并在超大数据集上也经受住了考验。它不仅支持数据指标的插入和查询,也提供了非常友好的方式便于日志的写入和查询。
- 范围查询: GreptimeDB 支持范围查询来计算一段时间内的表达式,从而了解指标趋势。你还可以持续聚合数据以进行进一步分析。
- SQL 和多种协议: GreptimeDB 使用 SQL 作为主要查询语言,并支持多种协议,大大降低了学习曲线和接入成本。你可以轻松从 Prometheus 或 Influxdb 迁移至 GreptimeDB,或者从 0 接入 GreptimeDB。
- JOIN 操作: GreptimeDB 的时间序列表的数据模型,使其具备了支持JOIN数据指标和日志的能力。
了解了这些功能后,你现在可以直接探索感兴趣的功能,或按顺序继续阅读下一步骤。