InfluxDB vs TDengine :2025 年了,谁家用的数据库还不能高效读缓存?

简介: 在工业互联网和物联网的大数据应用场景中,实时数据的写入和查询性能至关重要。如何快速获取最新设备状态并实时处理数据,直接影响到业务的高效运转。本文将深入分析 TDengine 和 InfluxDB 在缓存机制上的差异,帮助读者更好地理解这两款主流时序数据库在性能优化方面的优劣。

在工业互联网和物联网的大数据应用场景中,实时数据的写入和查询性能至关重要。如何快速获取最新设备状态并实时处理数据,直接影响到业务的高效运转。本文将深入分析 TDengine 和 InfluxDB 在缓存机制上的差异,帮助读者更好地理解这两款主流时序数据库在性能优化方面的优劣。

TDengine 的读缓存机制

在物联网(IoT)和工业互联网(IIoT)的应用中,实时数据的获取与处理至关重要。相比于历史数据,当前值通常具有更高的优先级和应用价值。因为这些系统大多数依赖实时监控来驱动决策和行动。例如,在智能制造领域,设备的实时状态数据直接影响生产效率和产品质量,任何延迟的决策都可能导致设备故障、生产停滞甚至安全事故。而在智能交通或车联网中,实时数据决定了交通管理和驾驶行为的调整,直接关系到交通流畅性和安全性。因此,获取和分析当前值比仅仅依赖历史数据更具战略意义,它能够更准确地反映出系统的即时需求与状态,帮助实现快速响应和决策优化。

一些架构师尝试通过在时序数据库之外部署 Redis 来实现数据的实时获取,但这种做法往往显著增加了系统的复杂性,同时对工业企业有限的 IT 资源带来额外负担。毕竟,大多数企业并没有专门的团队来支持这些复杂组件的部署与维护。因此,对于这些企业来说,数据平台必须具备内建的实时分析能力,而不是依赖外部工具来弥补这一需求。TDengine 就很好地解决了这一问题,它不仅具备高效的时序数据存储能力,还原生支持实时数据分析,帮助企业简化架构,降低运维成本,并确保数据能够及时转化为可操作的洞察。

TDengine 通过时间驱动的缓存管理策略,将最新的数据优先保存在缓存中。这意味着,最新数据在查询时能更快地被读取,而不必频繁访问硬盘。当缓存容量达到预设阈值后,系统会将最早的数据批量写入硬盘,以此实现高效的缓存管理。这种设计不仅满足了实时数据的高效查询需求,还降低了写入操作对硬盘的压力,延长了硬件寿命。

而在读取数据时,TDengine 的用户通过设置cachemodel参数,可以选择不同的缓存模式。通过该机制,用户可以选择缓存最新一行数据、每列最近非 NULL 值,或同时缓存行和列的数据,这一设计使得 TDengine 能够根据业务需求为用户提供精准的优化。这在物联网场景中尤为关键,让快速访问设备当前状态成为可能。

InfluxDB 的缓存机制

在数据读取方面,InfluxDB 并没有设计专门的读缓存。这意味着每次查询都需要从存储引擎中读取数据,不像 TDengine 可以直接从读缓存中获取最新数据。在实时性要求高的场景中,InfluxDB 由于缺乏读缓存机制,可能会出现查询延迟。为弥补这一缺陷,InfluxDB 的用户往往需要借助外部缓存系统(如 Redis)来提升查询性能,但这同时增加了系统的复杂性和维护成本。

实时数据查询的缓存实践

为了更直观地验证 TDengine 缓存功能对实时数据查询性能的提升,我们以下面的智能电表应用为例,展示 LAST 缓存的实际效果。

首先,使用taosBenchmark工具生成测试所需的时序数据。运行以下命令,该工具会在 TDengine 中创建一个名为power的电表数据库,生成 10 亿条时序数据。数据的时间戳从 2020 年 9 月 13 日 20:26:40(+08:00)开始,超级表为meters,包含 10000 个设备(子表),每个设备记录 10000 条数据,采集频率为每 10 秒一条:

taosBenchmark -d power -Q --start-timestamp=1600000000000 --tables=10000 --records=10000 --time-step=10000 -y

生成数据后,查询任意一个电表的最新电流值和时间戳数据,可以执行以下 SQL 语句:

jtaos> select last(ts,current) from meters;

查询结果如下:

j        last(ts)         |    last(current)     |
=================================================2020-09-15 00:13:10.000 |            1.1294620 |
Query OK, 1 row(s) in set (0.353815s)

使用last_row函数进行类似查询,也可以得到以下结果:

jtaos> select last_row(ts,current) from meters;

结果为:

j      last_row(ts)       |  last_row(current)   |
=================================================2020-09-15 00:13:10.000 |            1.1294620 |
Query OK, 1 row(s) in set (0.344070s)

为了进一步利用缓存提升查询性能,执行以下命令启用读缓存并指定缓存模式为both,即缓存行和列的最新数据:

taos> alter database power cachemodel 'both';

接下来,通过show create database power\G确认数据库配置,包括缓存设置:

*************************** 1.row ***************************
       Database: power
Create Database: CREATE DATABASE `power` BUFFER 256 CACHESIZE 1 CACHEMODEL 'both' COMP 2 DURATION 14400m WAL_FSYNC_PERIOD 3000 MAXROWS 4096 MINROWS 100 STT_TRIGGER 2 KEEP 5256000m,5256000m,5256000m PAGES 256 PAGESIZE 4 PRECISION 'ms' REPLICA 1 WAL_LEVEL 1 VGROUPS 10 SINGLE_STABLE 0 TABLE_PREFIX 0 TABLE_SUFFIX 0 TSDB_PAGESIZE 4 WAL_RETENTION_PERIOD 3600 WAL_RETENTION_SIZE 0 KEEP_TIME_OFFSET 0
Query OK, 1 row(s) in set (0.000282s)

在启用缓存后,再次查询电表的最新实时数据,第一次查询会做缓存计算,后续查询时延显著降低:

taos> select last(ts,current) from meters;

结果:

        last(ts)         |    last(current)     |
=================================================2020-09-15 00:13:10.000 |            1.1294620 |
Query OK, 1 row(s) in set (0.044021s)

再运行last_row查询,结果同样在较短时延内返回:

taos> select last_row(ts,current) from meters;

查询结果:

      last_row(ts)       |  last_row(current)   |
=================================================2020-09-15 00:13:10.000 |            1.1294620 |
Query OK, 1 row(s) in set (0.046682s)

从测试结果可以看出,在启用缓存后,查询时延从最初的 353/344 毫秒大幅缩短至 44 毫秒,性能提升约 8 倍。这一例子充分展示了 TDengine 缓存机制对实时数据查询效率的显著改善。

结语

通过上文,我们可以对 TDengine 与 InfluxDB 这两大数据库进行一个对比分析的总结,帮助大家更直观地了解它们各自的优势和适用场景:

  • 实时数据查询性能:TDengine 通过读缓存机制,能够快速获取最新数据,显著提升查询性能。而 InfluxDB 缺乏专门的读缓存,每次查询都需要从存储引擎读取数据,可能导致查询延迟。
  • 系统复杂性和运营成本:TDengine 的读缓存机制内置于数据库中,无需额外部署缓存系统,降低了系统复杂性和运营成本。相比之下,使用 InfluxDB 的用户可能需要引入外部缓存系统(如 Redis)来提升查询性能,增加了系统的复杂性和维护成本。
  • 缓存策略灵活性:TDengine 允许用户根据业务需求,灵活配置缓存策略,如选择缓存最新一行数据或每列最近的非 NULL 值。而 InfluxDB 在这方面的配置选项相对有限。

在工业互联网和物联网大数据应用场景中,TDengine 通过精心设计的缓存机制,实现了数据的实时高效写入和快速查询,降低了系统复杂性和运营成本。相比之下,InfluxDB 缺乏专门的读缓存机制,可能在查询最新数据时表现出一定的延迟。因此,对于需要高实时性数据查询的应用场景,TDengine 的缓存策略更具优势。

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
2月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
541 5
|
7月前
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
678 4
|
8月前
|
物联网 测试技术 API
时序数据库 InfluxDB 3.0 版本性能实测报告:写入吞吐量提升效果验证
TSBS 测试表明,对于少于 100 万台设备的数据集,InfluxDB OSS 3.0 的数据写入速度实际上比 InfluxDB OSS 1.8 更慢。 对于 100 万台及以上设备的数据集,InfluxDB OSS 3.0 的数据写入性能才开始超过 InfluxDB OSS 1.8。 InfluxDB OSS 3.0 的数据写入接口与 InfluxDB 1.8 并不兼容,用户无法顺利迁移。
697 7
|
8月前
|
Rust 物联网 数据处理
Rust +时序数据库 TDengine:打造高性能时序数据处理利器
TDengine 是一款专为物联网、车联网、工业互联网等时序数据场景优化设计的开源时序数据库,支持高并发写入、高效查询及流式计算,通过“一个数据采集点一张表”与“超级表”的概念显著提升性能。 Rust 作为一门系统级编程语言,近年来在数据库、嵌入式系统、分布式服务等领域迅速崛起,以其内存安全、高性能著称,与 TDengine 的高效特性天然契合,适合构建高可靠、高性能的数据处理系统。
338 2
|
8月前
|
存储 运维 监控
百万指标,秒级查询,零宕机——时序数据库 TDengine 在 AIOps 中的硬核实战
本篇文章详细讲述了七云团队在运维平台中如何利用 TDengine 解决海量时序数据存储与查询的实际业务需求。内容涵盖了从数据库选型、方案落地到业务挑战及解决办法的完整过程,特别是分享了升级 TDengine 3.x 时的实战经验,给到有需要的小伙伴参考阅读。
324 1
|
8月前
|
缓存 NoSQL 关系型数据库
WordPress数据库查询缓存插件
这款插件通过将MySQL查询结果缓存至文件、Redis或Memcached,加速页面加载。它专为未登录用户优化,支持跨页面缓存,不影响其他功能,且可与其他缓存插件兼容。相比传统页面缓存,它仅缓存数据库查询结果,保留动态功能如阅读量更新。提供三种缓存方式选择,有效提升网站性能。
169 1
|
8月前
|
消息中间件 缓存 NoSQL
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
|
9月前
|
存储 数据挖掘 数据处理
2600 万表流计算分析如何做到? 时序数据库 TDengine 助力数百家超市智能化转型
在生鲜超市的高效运营中,实时数据分析至关重要。万象云鼎的“云鲜生”通过智能秤+网关+软件系统的组合,实现了销售数据的精准管理与优化。而在数据处理方面,TDengine 的流计算能力成为了这一方案的核心支撑。本文详细分享了“云鲜生”如何利用 TDengine 高效存储和分析海量销售数据,在优化超市运营、提升用户体验的同时,解决高基数分组、高并发查询等技术挑战。
257 1
|
8月前
|
存储 SQL 关系型数据库
从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?
TDengine 助力广州疆海科技有限公司高效完成储能业务的数据分析任务,轻松应对海量功率、电能及输入输出数据的实时统计与分析,并以接近 1 : 20 的数据文件压缩率大幅降低存储成本。此外,taosX 强大的 transform 功能帮助用户完成原始数据的清洗和结构优化,而其零代码迁移能力更实现了历史数据从 TDengine OSS 与 MySQL 到 TDengine 企业版的平滑迁移,全面提升了企业的数据管理效率。本文将详细解读这一实践案例。
314 0
|
8月前
|
存储 NoSQL MongoDB
从 MongoDB 到 时序数据库 TDengine,沃太能源实现 18 倍写入性能提升
沃太能源是国内领先储能设备生产厂商,数十万储能终端遍布世界各地。此前使用 MongoDB 存储时序数据,但随着设备测点增加,MongoDB 在存储效率、写入性能、查询性能等方面暴露出短板。经过对比,沃太能源选择了专业时序数据库 TDengine,生产效能显著提升:整体上,数据压缩率超 10 倍、写入性能提升 18 倍,查询在特定场景上也实现了数倍的提升。同时减少了技术架构复杂度,实现了零代码数据接入。本文将对 TDengine 在沃太能源的应用情况进行详解。
408 0

热门文章

最新文章