openGemini v1.3.0版本带来了一系列令人兴奋的新特性,其中包括对多副本支持,这为数据的高可用性提供了更强有力的保障。此外,该版本还引入了对PromQL查询语言的支持,使得用户能够直接在openGemini中利用PromQL的强大查询功能,无论是即时查询还是范围查询,都能轻松处理。性能方面,v1.3.0对多个重要场景进行了优化,无论是数据写入还是查询响应,都实现了更高的效率和更低的延迟,这些优化使得openGemini在处理速度和资源利用率上都有了显著提升。在运维方面,v1.3.0 版本提供了数据备份恢复工具,支持全量备份和增量备份,以及全量和增量数据恢复,这为用户提供了数据安全和灾难恢复的重要工具。备份和恢复工具的设计考虑了多种部署形态,包括单机、集群单副本和集群多副本。这些改进,加上对存储引擎和索引机制的进一步优化,使得openGemini v1.3.0成为了一个更加强大、高效和可靠的时序数据库解决方案。
特性
-
支持promQL
PromQL(Prometheus Query Language)
是 Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。当前版本开始支持HTTP API使用PromQL直接从openGemini中查找数据。举个例子:
查询指标
http_requests_total
的全部数据。// PromQL语法 http_requests_total // openGemini HTTP API curl -i -XPOST 'http://127.0.0.1:8086/api/v1/query?query=http_requests_total'
给定标签条件
job="apiserver"
和handler="/api/comments"
,查询指标http_requests_total
的全部数据。// PromQL语法 http_requests_total{job="apiserver", handler="/api/comments"} // openGemini HTTP API curl -i -XPOST 'http://127.0.0.1:8086/api/v1/query?' --data-urlencode 'query=http_requests_total{job="apiserver", handler="/api/comments"}'
给定标签条件
job="apiserver"
和handler="/api/comments"
,查询从现在起,去过5分钟内,指标http_requests_total
的全部数据。// PromQL语法 http_requests_total{job="apiserver", handler="/api/comments"}[5m] // openGemini HTTP API curl -i -XPOST 'http://127.0.0.1:8086/api/v1/query?' --data-urlencode 'query=http_requests_total{job="apiserver", handler="/api/comments"}[5m]'
对PromQL的支持程度以及用法,参考文档PromQL查询
-
支持数据多副本
openGemini在v1.2.0版本及早期版本,数据只存在一份。从当前版本开始,openGemini支持数据3副本能力,满足工业、能源、物联网等多数场景对数据可靠性的要求。
具体用法,请参考数据副本
-
备份恢复
支持单机和集群的数据备份,包括全量备份和增量备份。支持离线数据恢复,可以恢复到原节点,也可以恢复到新节点。数据是备份到本地,在生产环境上,建议配置FTP或者其他工具将备份数据upload到备份服务器上。
备份恢复用法,请参考备份恢复
-
支持Prometheus从openGemini拉取内核的监控指标数据
curl -i -XPOST 'http://127.0.0.1:8086/metrics'
-
新增
show cluster
命令查看集群状态信息> show cluster time status hostname nodeID nodeType availability ---- ------ -------- ------ -------- ------------ 1725071376777471503 alive 127.0.0.3:8091 1 meta available 1725071376777471503 alive 127.0.0.1:8091 2 meta available 1725071376777471503 alive 127.0.0.2:8091 3 meta available 1725071376777471503 alive 127.0.0.1:8400 4 data available 1725071376777471503 alive 127.0.0.2:8400 5 data available 1725071376777471503 alive 127.0.0.3:8400 6 data available
性能优化
-
topn() 查询性能优化
优化时间范围查询条件,实际业务场景中,100并发查询,平均时延从256ms下降到68ms,端到端业务性能提升2~4倍
-
数据写入优化
针对TAG数量特别大,或者TAG Value特别长,或者TAG数组比较大的数据写入场景,通过优化WAL网络传输、Cache压缩、索引更新逻辑等,实现CPU开销降低20%。实际业务场景测试,写性能从37万rows/s提升到60万rows/s
优化配置如下:
[index] cache-compress-enable = true bloom-filter-enable = true
-
批量查询优化
针对批量点查场景,比如看板应用,大部分查询条件都相同,通过缓存倒排索引查询结果,实际业务场景测试,时间线规模1000万,批量查询性能提升近1倍。
-
show tag values性能优化
针对于高基数且查询带limit的查询场景,通过优化查询策略,性能可提升5-10倍
-
Memtable查询性能优化
针对大量时间线实时数据写入,使得Memtable数据较多,同时存在多个并发查询执行,导致CPU较高,查询性能下降的问题,通过减少数据深拷贝和GC优化,进一步提升查询性能。
-
多Field查询优化
针对查询请求存在非常多FIELD过滤的场景,会出现查询时延高,CPU开销大的问题,通过优化索引扫描算法,将多field扫描场景在Index Scan阶段的CPU消耗从75.36%降低到了0.53%。
Bug Fix
- 修复了删表不能指定RP的问题 #666
- 修复批量删除表时,部分表删除失败的问题 #482
- 修复ts-cli翻看历史命令时出现命令行文本损坏的问题 #651
- 修复ts-store重启Panic问题 #481
- 修复文本索引文件加载失败的问题 #700
openGemini官网:http://www.openGemini.org
Star for me😊:https://github.com/openGemini
openGemini公众号:
欢迎关注~ 诚邀你加入 openGemini 社区,共建、共治、共享未来!