本次 v0.14 更新聚焦于对全文索引的功能和性能以及成本优化;Flow Engine 引入 Batching 模式与 Streaming 模式形成双引擎架构,从而实现更灵活的数据处理;正式实现并发布了对 OTel 的 Traces 的支持。
从 v0.13 到 v0.14,Greptime 团队取得了显著的进展:共合并了 247 个 PR,其中包括 100 项功能增强,56 项错误修复,30 项代码重构,9 项性能优化以及大量的测试工作。在此期间,来自社区的 7 位个人贡献者提交了 16 次代码贡献。非常感谢团队和各位个人贡献者的努力,也欢迎更多对技术感兴趣的同学加入我们。
下面对本次版本更新做一个简单回顾和介绍:
全文索引增强
GreptimeDB 提供全文索引功能以加速文本搜索操作。用户可以在创建或修改表时配置全文索引,并提供各种选项以针对不同用例进行优化。
此次 v0.14 对全文索引的更新主要包括两个部分:
引入新的函数 matches_term
和操作符 @@
SQL 查询中,用户可以使用 matches_term
函数执行精确的词语/短语匹配,这在日志分析中尤其实用。matches_term
函数支持对 String
类型列进行精确匹配。你也可以使用 @@
操作符作为 matches_term
的简写形式。
下面是一个典型示例:
-- 使用 matches_term 函数
SELECT * FROM logs WHERE matches_term(message, 'error') OR matches_term(message, 'fail');
-- 使用 @@ 操作符(matches_term 的简写形式)
SELECT * FROM logs WHERE message @@ 'error' OR message @@ 'fail';
matches_term
函数专门用于精确匹配,使用方式如下:
text
:需要进行匹配的文本列,该列应包含String
类型的文本数据。term
:要匹配的词语或短语,遵循以下规则👇- 区分大小写;
- 匹配项必须由非字母数字字符(包括空格、标点符号等)或文本开头/结尾界定;
- 支持完整词语匹配和短语匹配。
详细使用方法,欢迎参考 GreptimeDB 官方的最新文档。
引入全新的全文索引后端
引入了全新的 Bloom 全文索引后端。从 v0.14 开始,用户在为构建全文索引时将有两种选择,能帮助用户对自身的场景做出最合适的选择,以下展示了两种全文索引后端的特点:
1. Bloom 后端
适用场景 | 通用日志搜索 |
特点 | - 使用 Bloom 过滤器进行高效过滤 - 存储开销较低 - 在不同查询模式下性能稳定 |
限制 | 对于高选择性查询稍慢 |
存储成本示例 | - 原始数据:约 10GB - Bloom 索引:约 1GB |
2. Tantivy 后端
适用场景 | 高选择性查询(如 TraceID 等唯一值) |
特点 | - 使用倒排索引实现快速精确匹配; - 对高选择性查询性能优异 |
限制 | - 存储开销较高(接近原始数据大小) - 对低选择性查询性能较慢 |
存储成本示例 | - 原始数据:约 10GB - Tantivy 索引:约 10GB |
性能对比
下表展现了不同查询方法之间的性能对比(以 Bloom 为基准):
查询类型 | 高选择性(如 TraceID) | 低选择性(如 "HTTP") |
---|---|---|
Bloom | 1 倍(基准) | 1 倍(基准) |
Tantivy | 快 5 倍 | 慢 5 倍 |
LIKE | 慢 50 倍 | 1 倍 |
主要观察结果:
- 对于高选择性查询(如唯一值),Tantivy 能够提供最佳性能;
- 对于低选择性查询,Bloom 能够提供更稳定的性能;
- Bloom 在存储方面比 Tantivy 有明显优势(测试案例中为 1GB vs 10GB)。
详细使用方法,欢迎参考 GreptimeDB 官方最新文档。
其他更新
支持 Jaeger 查询协议 (实验功能阶段)
用户可以使用 Grafana 的 Jaeger 插件 或者 Jaeger UI 来查询 GreptimeDB 中的 Traces 数据。需要注意的是,Jaeger 查询接口目前仍处于实验阶段,在未来的版本中可能会有所调整。
详细的使用方式,请参考 GreptimeDB 官方文档。
Flow 双引擎
Flow Engine 引入 Batching 模式与 Streaming 模式形成双引擎架构,从而实现更灵活的数据处理:
- Batching 模式:定期批量处理数据,有最小刷新间隔;
- Streaming 模式:实时处理数据流,更加及时;
通常情况下,Batching 模式资源使用更加平稳,适合大批量数据处理,比如定期对数据进行聚合、统计和生成报表的场景;而 Streaming 模式实时性更高,但可能需要更多资源来保持低延迟,更适合对数据处理延迟有严格要求的场景。
当前,引擎会根据创建请求自行判断一个 Flow Task 需要以何种模式运行,未来可能将选项开放到用户层以提供更灵活的选择。
更多关于 Flow 的使用,请参考 GreptimeDB 官方最新文档。
正式支持 OTel Traces
GreptimeDB 支持直接写入 OpenTelemetry 协议的 Traces 数据,并内置 OpenTelemetry 的 Traces 的表模型来让用户方便地查询和分析 Traces 数据。
详细使用方式,请参考 GreptimeDB 官方文档。
升级提示
v0.14 与 v0.13 数据和配置完全兼容,如果用户在使用 v0.13,建议直接升级,对于使用其他版本的用户,请参考升级指南进行升级。
未来展望
根据一月发布的《GreptimeDB 2025 Roadmap》,GreptimeDB 将持续推进一系列重要功能的更新与优化。下一个版本将聚焦于写入链路的吞吐优化(Bulk Ingestion)和完善分布式可靠性、稳定性方面的工作。
关于 Greptime
Greptime 格睿科技专注于打造新一代可观测数据库,服务开发者与企业用户,覆盖从从边缘设备到云端企业级部署的多样化需求。
- GreptimeDB 开源版:开源、云原生,统一处理指标、日志和追踪数据,适合中小规模 IoT,个人项目与可观测性场景;
- GreptimeDB 企业版:面向关键业务,提供更高性能、高安全性、高可用性和智能化运维服务;
- GreptimeCloud 云服务:全托管云服务,零运维体验“企业级”可观测数据库,弹性扩展,按需付费。
欢迎加入开源社区参与贡献与交流!推荐从带有 good first issue
标签的任务入手,一起共建可观测未来。
⭐ Star us on GitHub | 📚 官网 | 📖 文档