时序数据库的订阅对比:TDengine vs InfluxDB 谁更强?

     

目录

1. 架构:内置 vs 依赖外部

TDengine:

InfluxDB:

2. 灵活性:动态订阅 vs 静态订阅

TDengine:

InfluxDB:

3. 消费机制、API 兼容性与易用性对比

4. 结语


    在时序数据应用场景中,数据实时消费和处理能力成为衡量数据库性能和可用性的重要指标。TDengine 和 InfluxDB 作为 时序数据库(Time Series Database)中的佼佼者,在数据订阅方面各有特点,他俩谁更强呢?

    下文将从多个维度进行深入对比,详细剖析。

1. 架构:内置 vs 依赖外部

TDengine:

      TDengine 内置了类似 Kafka 消息队列功能,并与数据库存储和查询系统深度集成。这意味着用户无需部署另外的消息队列,即可实现数据实时传输和消费。

  • 预写日志 (WAL) 支撑消息存储:WAL 文件索引机制使订阅数据存取更加高效,减少延迟。
  • 多消费组的并行处理:支持多消费者组的分布式消费,确保数据消费速度最大化。

     这种集成架构好处是极大简化了系统设计,用户无需再集成额外的消息队列组件(如 Kafka 或 RabbitMQ),大幅降低运维成本和系统复杂性。

InfluxDB:

     相较而言,InfluxDB 在其 2.0 版本中已不再支持数据订阅功能。

     取而代之,用户需要使用 Telegraf 等工具将数据写入多个实例,或通过 Flux 查询处理特定数据集,实现类似需求。

     可以看出,严格意义上 InfluxDB 已不具备数据订阅功能,只是依赖其他组件实现的数据复制功能。

      这种依赖外部的设计,无法与内部引擎模块高效协作,调用功能链路长,性能低下。同时增加了系统复杂性,并且在数据量大、实时性要求高等复杂场景中,有着明显的局限性。

2. 灵活性:动态订阅 vs 静态订阅

TDengine:

     TDengine 数据订阅功能支持用户通过 SQL 查询灵活定义订阅主题。

     用户可以创建查询主题,基于 SQL 查询过滤条件实时订阅数据,从而精准控制所需数据及消费模式,SQL 主题还支持标量函数和 UDF(用户自定义函数),能够在订阅前对数据进行过滤与预处理。

      同时,TDengine 还支持订阅超级表,能够动态跟踪超级表结构变化,并灵活订阅不同子表数据,确保数据消费与表结构变更无缝衔接。

      此外,TDengine 还支持订阅数据库,实现对整个数据库所有数据流全面订阅。这些特性让 TDengine 在数据订阅上具备了极高灵活性与适应性,满足不同业务场景的实时数据处理需求。

示例:

  1. CREATE TOPIC power_topic AS SELECT ts, current, voltage FROM power.meters WHERE voltage > 200;
  2. CREATE TOPIC topic_name [with meta] AS STABLE stb_name [where_condition]
  3. CREATE TOPIC topic_name [with meta] AS DATABASE db_name;

      第一个例子是查询主题,只有电压大于 200 的数据会被订阅,仅仅返回时间戳、电流、电压 3 个采集量(不返回相位),减少了传输的数据量和客户端处理负担。

      第二个例子是超级表主题,订阅整个超级表的数据,并且可以控制是否订阅 meta 数据,也可以加上子表的过滤条件,只订阅超级表下的部分子表。

      第三个例子是数据库主题,订阅整个数据库的数据,同样可以控制是否订阅 meta 数据。

     超级表订阅和数据库订阅在有新增子表的情况下也可以动态订阅到新增加的数据。

InfluxDB:

     再看下 InfluxDB,其订阅模型则依赖于 Telegraf 和 Flux 查询,只能订阅固定规则数据,无法获取到 meta 数据以及新增表数据。

      对于复杂数据订阅场景,用户需要在应用端增加处理代码,开发和维护成本高。

3. 消费机制、API 兼容性与易用性对比

    TDengine 消费者组机制允许多个消费者组成组,共享消费同一主题,极大地提高了消费效率

  • 分布式并行消费:多个消费者节点可以并发处理同一主题数据,适合高吞吐量应用场景。
  • 消费确认(ACK)机制:确保每条消息至少被处理一次,即使在网络中断或系统重启后仍然能保证数据完整性。

     InfluxDB 依赖其他插件实现类似数据订阅功能,无法提供消费者组和消费进度控制。对于分布式处理场景,无法并行提高消费速度,并且在系统故障时无法自动存储消费进度, 很致命缺点。

     在 API 兼容性上,TDengine 订阅 API 与 Kafka 订阅模型高度兼容,熟悉 Kafka 的开发者可以无需学习直接上手。

     此外,TDengine 提供了多种语言的 SDK(如 C、Java、Go、Python、Rust 等),支持用户在多种环境中进行开发和集成。

     相比之下,InfluxDB 需要编写相应脚本处理数据,速度上明显会受到影响,还需要熟悉相应脚本语言。

4. 结语

     TDengine 在构架、灵活性及消费机制、API 及易用性等方面全面碾压 InfluxDB,  TDengine 的订阅高效、灵活、易用,深受开发者喜欢。

     如果你希望深入了解更多 TDengine 订阅功能,访问 TDengine 官方文档,提供了全面技术说明,包括订阅主题创建、配置示例、API 使用方法以及最佳实践,帮助你更高效搭建 TDengine 数据订阅场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952875.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一个好用的C++数据库操作库:OTL

目录 1.简介 2.OTL库的核心类 3.OTL使用 4.使用OTL时注意事项 4.1.多线程初始化 4.2.OTL支持连接池 4.3.大字段的读取方式 4.4.指定数据库类型 4.5.异常处理 5.下载地址 6.总结 1.简介 OTL(Oracle, ODBC and DB2-CLI Template Library)是一个…

高级生化大纲

一,蛋白质化学: 蛋白质分离是生物化学和分子生物学研究中的一项基本技术,用于根据蛋白质的物理和化学特性将其从混合物中分离出来。 1. 离心分离法 离心分离法利用离心力来分离不同质量或密度的颗粒和分子。 差速离心:通过逐…

linux网络 | http结尾、理解长连接短链接与cookie

前言:本节是http章节的最后一部分,主要解释一些小概念。讲解到了HTTP的方法,表单, 重定向等等。 现在废话不多说, 开始我们的学习吧。 ps:本节内容都是概念, 知道就行, 友友们放心观…

金融项目实战 03|JMeter脚本实现手工接口测试

目录 一、环境说明 1、项目环境搭建 2、Mock说明 二、构造测试数据 1、通过系统页面构造 2、通过接口构造 3、通过数据库构造【推荐】 4、案例:构造借款业务数据 三、JMeter执行接口测试用例 1、获取图片验证码、获取短信验证码 2、注册脚本 3、登录脚本…

点赞系统设计(微服务)

点赞业务是一个常见的社交功能,它允许用户对其他用户的内容(如帖子、评论、图片等)表示喜欢或支持。在设计点赞业务时,需要考虑以下几个方面: 一、业务需求 点赞业务需要满足以下特性: 通用:…

网络原理一>UDP协议详解

UDP和TCP都是应用层中的重要协议,如果做基础架构开发,会用得多一些。 这一篇我们先简单聊一下的UDP TCP格式呈现: 我们知道UDP是一种无连接,面向数据报,全双工,不可靠传输特性的网络协议。 基本格式如图…

时空笔记:CBEngine(微观交通模拟引擎)

CBEngine 是一个微观交通模拟引擎,可以支持城市规模的道路网络交通模拟。CBEngine 能够快速模拟拥有数千个交叉路口和数十万辆车辆的道路网络交通。 以下内容基本翻译自CBEngine — CBLab 1.0.0 documentation 1 模拟演示 1.0 模拟演示结构 config.cfg 定义了 roa…

金融项目实战 04|JMeter实现自动化脚本接口测试及持续集成

目录 一、⾃动化测试理论 二、自动化脚本 1、添加断言 1️⃣注册、登录 2️⃣认证、充值、开户、投资 2、可重复执行:清除测试数据脚本按指定顺序执行 1️⃣如何可以做到可重复执⾏? 2️⃣清除测试数据:连接数据库setup线程组 ①明确…

20250112面试鸭特训营第20天

更多特训营笔记详见个人主页【面试鸭特训营】专栏 250112 1. TCP 和 UDP 有什么区别? 特性TCPUDP连接方式面向连接(需要建立连接)无连接(无需建立连接)可靠性可靠的,提供确认、重传机制不可靠&#xff0c…

导出文件,能够导出但是文件打不开

背景: 在项目开发中,对于列表的查询,而后会有导出功能,这里导出的是一个excell表格。实现了两种,1.导出的文件,命名是前端传输过去的;2.导出的文件,命名是根据后端返回的文件名获取的…

马斯克的Grok-2 Beta APP在苹果应用商店上限了,Grok-2安装尝鲜使用教程

马斯克的Grok-2 Beta APP 已经上线苹果商城了,移动端的Grok挺好用的!无需登录即可使用! (文末有安装教程) 实测之后,Grok-2 绘画方面个人感觉比GPT-4的绘画还要强一些。而且速度还挺快,可以多次…

《机器学习》——sklearn库中CountVectorizer方法(词频矩阵)

CountVectorizer方法介绍 CountVectorizer 是 scikit-learn 库中的一个工具,它主要用于将文本数据转换为词频矩阵,而不是传统意义上的词向量转换,但可以作为词向量转换的一种基础形式。用于将文本数据转换为词频矩阵,它是文本特征…

CV 图像处理基础笔记大全(超全版哦~)!!!

一、图像的数字化表示 像素 数字图像由众多像素组成,是图像的基本构成单位。在灰度图像中,一个像素用一个数值表示其亮度,通常 8 位存储,取值范围 0 - 255,0 为纯黑,255 为纯白。例如,一幅简单的…

支持向量回归(SVR:Support Vector Regression)用于A股数据分析、预测

简单说明 支持向量回归是一种用来做预测的数学方法,属于「机器学习」的一种。 它的目标是找到一条「最合适的线」,能够大致描述数据点的趋势,并允许数据点离这条线有一定的误差(不要求所有点都完全落在这条线上)。 可以把它想象成:找到一条「宽带」或「隧道」,大部分…

ollama教程(window系统)

前言 在《本地大模型工具哪家强?对比Ollama、LocalLLM、LM Studio》一文中对比了三个常用的大模型聚合工具优缺点,本文将详细介绍在window操作系统下ollama的安装和使用。要在 Windows 上安装并使用 Ollama,需要依赖 NVIDIA 显卡&#xff0c…

Flink系统知识讲解之:容错与State状态管理

Flink系统知识之:容错与State状态管理 状态在Flink中叫作State,用来保存中间计算结果或者缓存数据。根据是否需要保存中间结果,分为无状态计算和有状态计算。对于流计算而言,事件持续不断地产生,如果每次计算都是相互…

DolphinScheduler自身容错导致的服务器持续崩溃重大问题的排查与解决

01 问题复现 在DolphinScheduler中有如下一个Shell任务: current_timestamp() { date "%Y-%m-%d %H:%M:%S" }TIMESTAMP$(current_timestamp) echo $TIMESTAMP sleep 60 在DolphinScheduler将工作流执行策略设置为并行: 定时周期调度设置…

ASP.NET Core 实现微服务 - Elastic APM

这次要给大家介绍的是Elastic APM ,一款应用程序性能监控组件。APM 监控围绕对应用、服务、容器的健康监控,对接口的调用链、性能进行监控。在我们实施微服务后,由于复杂的业务逻辑,服务之间的调用会像蜘蛛网一样复杂。有了调用链…

25/1/12 嵌入式笔记 学习esp32

了解了一下位选线和段选线的知识: 位选线: 作用:用于选择数码管的某一位,例如4位数码管的第1位,第2位) 通过控制位选线的电平(高低电平),决定当前哪一位数码管处于激活状…

IMX6U Qt 开发环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、交叉编译 1. 安装通用 ARM 交叉编译工具链 2. 安装 Poky 交叉编译工具链 二、编译出厂源码 1. U-boot 2. 内核和模块 3. 编译出厂 Qt GUI 综合 Demo 前言…