当前位置: 首页 > article >正文

【Elasticsearch】时间序列数据流(Time Series Data Stream,TSDS)

Elasticsearch 的时间序列数据流(Time Series Data Stream,TSDS)是一种专门为存储和管理时间序列数据(如指标数据)而设计的数据结构。它通过优化存储和索引机制,能够高效地处理大规模时间序列数据,同时支持高效的查询和分析。以下是关于 TSDS 的详细说明,结合了之前翻译和解释的内容:

---

1.TSDS 的定义与用途

时间序列数据流(TSDS)将带时间戳的指标数据建模为一个或多个时间序列。它主要用于高效存储和查询时间序列数据,例如系统指标(CPU 使用率、磁盘 I/O)、金融数据(股票价格)、气象数据(温度、湿度)等。与普通数据流相比,TSDS 在存储效率和查询性能上有显著优势,尤其适用于以下场景:

• 数据以近实时的方式写入。

• 数据按时间顺序(`@timestamp`)插入。

• 数据量大且需要高效压缩和查询。

---

2.TSDS 的关键特性

2.1高效存储

• 数据压缩:TSDS 使用内部排序和压缩算法,将具有相同维度的文档存储在一起,从而实现高效的数据压缩。在基准测试中,TSDS 的存储空间比普通数据流减少了约 70%。

• 时间绑定索引:TSDS 使用时间绑定的后端索引,将相同时间段的数据存储在同一个索引中。这种设计不仅提高了查询效率,还减少了索引的碎片化。

2.2维度与指标

• 维度字段:维度字段用于标识时间序列的唯一性。它们通常是不变的属性,例如传感器 ID、地理位置等。支持的字段类型包括`keyword`、`ip`、`integer`等,并通过`time_series_dimension`参数标记。

• 指标字段:指标字段是时间序列中的可变数值,例如温度、CPU 使用率等。它们可以通过`time_series_metric`参数标记,并支持多种类型(如`gauge`、`counter`)和聚合操作。

2.3自动生成的`_tsid`

• Elasticsearch 为每个 TSDS 文档自动生成一个`_tsid`元数据字段,该字段包含文档的维度信息。具有相同`_tsid`的文档属于同一时间序列。

• `_tsid`用于内部路由和查询优化,但不可直接查询或更新。

2.4基于维度的路由

• TSDS 使用`index.routing_path`设置,根据文档的维度字段将数据路由到相同的分片。这种设计确保了相同时间序列的数据存储在一起,从而提高了压缩效率和查询性能。

• 不支持自定义`_routing`值,必须通过维度字段进行路由。

2.5时间范围限制

• TSDS 设计用于摄取当前时间的数据,每个后端索引都有一个可接受的时间范围(由`index.time_series.start_time`和`index.time_series.end_time`定义)。

• 通过`index.look_back_time`和`index.look_ahead_time`设置,可以配置索引接受数据的时间范围。超出范围的数据将被拒绝。

---

3.TSDS 的工作原理

3.1索引模板

• TSDS 的索引模板必须包含`index.mode: time_series`设置,以启用时间序列相关功能。

• 模板还需要定义至少一个维度字段(`time_series_dimension`)和一个指标字段(`time_series_metric`)。

3.2数据写入

• 文档写入时,Elasticsearch 根据文档的`@timestamp`值选择合适的后端索引进行存储。

• 如果文档的时间戳超出索引的时间范围,Elasticsearch 会拒绝该文档。

3.3数据查询

• 查询时,Elasticsearch 利用`_tsid`和时间范围优化查询性能。

• 支持按时间序列聚合和分析,例如计算时间序列的平均值、最大值等。

---

4.TSDS 的优势

• 高效存储:通过压缩和优化索引结构,显著减少磁盘空间占用。

• 高性能查询:基于时间范围和维度的优化,提高了查询效率。

• 自动管理:Elasticsearch 自动处理索引滚动、时间范围更新等操作,减少了运维成本。

---

5.适用场景

• 系统监控:用于存储和分析系统指标(如 CPU 使用率、内存使用率)。

• 金融数据:跟踪股票价格、交易量等时间序列数据。

• 物联网:存储来自传感器的实时数据(如温度、湿度、设备状态)。

• 日志分析:虽然 TSDS 主要用于指标数据,但也可以用于某些时间序列化的日志数据。

---

6.限制与注意事项

• 仅适用于指标数据:TSDS 专为时间序列指标设计,不适合存储日志或追踪数据。

• 时间顺序写入:数据需要按时间顺序插入,否则可能影响性能。

• 维度字段限制:维度字段必须是静态的,不能动态更改。

• 查询限制:某些查询操作可能受到`_tsid`和时间范围的限制。

---

7.总结

Elasticsearch 的时间序列数据流(TSDS)是一种高效、优化的时间序列数据存储解决方案。它通过时间绑定索引、基于维度的路由和数据压缩等技术,显著提高了存储效率和查询性能。TSDS 特别适用于需要高效处理大规模时间序列数据的场景,如系统监控、金融数据分析和物联网应用。然而,它也有一些限制,例如对数据写入顺序和维度字段的严格要求。因此,在使用 TSDS 时,需要根据具体需求权衡其优势和限制。


http://www.kler.cn/a/570683.html

相关文章:

  • 【原创】Ubuntu 24自动分区后的根目录扩展
  • 配置Spring Boot API接口超时时间(五种)
  • C++学习之C++初识、C++对C语言增强、对C语言扩展
  • 基于vue3 + ts 封装一个自定义的message组件
  • 基于机器学习的智能谣言检测系统
  • java jar包内的jar包如何打补丁
  • 2022 年 12 月青少年软编等考 C 语言五级真题解析
  • 第6篇:面向对象编程重构系统
  • Spring MVC 返回数据
  • 如何实现前端“小手向右指”的效果
  • Zookeeper 的核心引擎:深入解析 ZAB 协议
  • ECharts饼图高级美化技巧:泛光效果实现与间隔布局
  • JavaWeb3、Tomcat
  • Transformer 代码剖析6 - 位置编码 (pytorch实现)
  • 机器学习11-经典网络解析
  • AI语音交互模组方案,设备无线物联网控制,实时语音联动应用
  • 数据结构:二叉搜索树(排序树)
  • Redis高可用部署:3台服务器打造哨兵集群
  • 基于 Rust 与 GBT32960 规范的编解码层
  • 动态表头报表的绘制与导出