TDengine vs MongoDB

TDengine 时序数据库与 MongoDB 时序数据库综合对比

TDengine 概览

TDengine 是一款专为物联网、工业互联网等场景设计并优化的大数据平台,其核心模块是高性能、集群开源、云原生、极简的时序数据库。它能安全高效地将大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据进行汇聚、存储、分析和分发,对业务运行状态进行实时监测、预警,提供实时的商业洞察。

MongoDB 概览

MongoDB 是一个流行的开源 NoSQL 数据库,于 2009 年推出。设计用于处理大量的非结构化和半结构化数据,MongoDB 提供了灵活的、无模式的数据模型、水平扩展和高性能。其易用性、基于 JSON 的文档存储以及对多种编程语言的支持,促使它在各行各业和各种应用中得到广泛应用。

TDengine 与 MongoDB 综合对比

对比项 TDengine MongoDB
官网 https://www.taosdata.com/ https://www.mongodb.com/
数据库类型 采用时序数据库模型,支持超级表和子表的概念 采用文档模型,支持 JSON 格式的文档存储
技术文档 https://docs.taosdata.com/ https://www.mongodb.com/docs/
开源性 开源 开源
云服务 TDengine Cloud MongoDB Atlas
底层语言 C C++
操作系统 Linux、Windows、MacOS Linux、Windows、MacOS
语言连接器 · Python
· Java
· C/C++
· Go
· Node.js
· Rust
· C#
· Python
· Java
· Node.js
· C#
· Ruby
· PHP
· Go
· C++
语法 支持标准 SQL MongoDB Query Language
分布式 支持分布式架构 支持分布式架构
开源许可证 AGPLv3 SSPL
应用场景 工业大数据、物联网 IoT 平台、智能制造、能源数据管理等 内容管理系统、移动应用程序、实时分析和物联网数据管理等

TDengine 的数据库功能

  • 高效写入写入数据:支持 SQL 写入、无模式写入,并可与多种第三方工具的无缝集成,它们都可以仅通过配置而无需任何代码即可将数据写入 TDengine。
  • 高效查询:支持标准 SQL,并提供一系列时序数据特有查询和窗口函数,支持 UDF。
  • 流式计算:TDengine 不仅支持连续查询,还支持事件驱动的流式计算,这样在处理时序数据时就无需 Flink 或 Spark 这样流式计算组件。
  • 数据订阅:应用程序可以订阅一张表或一组表的数据,提供与 Kafka 相同的 API,并且可以指定过滤条件。
  • 缓存功能:将每张表的最后一条记录缓存起来,这样无需 Redis 就能对时序数据进行高效处理。
  • 可视化:支持与各种第三方可视化组件的无缝集成,如 Grafana、Seeq、Google Data Studio 等。
  • 集群:可以通过增加节点进行水平扩展以提升处理能力,通过多副本提供高可用能力,支持通过 Kubernetes 部署 TDengine。
  • 管理:监控运行在 TDengine 中的实例,支持多种数据导入/导出方式
  • 工具:提供交互式命令行程序(CLI),便于管理集群,检查系统状态,做即席查询;提供压力测试工具 taosBenchmark,用于测试 TDengine 的性能
  • 提供各种语言的连接器:如 C/C++、Java、Go、Node.js、Rust、Python、C# 等,支持 REST 接口。

MongoDB 的数据库功能

  • 灵活的文档模型:MongoDB 使用 JSON 格式的文档来存储数据,支持复杂的数据结构和嵌套文档,适用于各种类型的数据存储需求。
  • 多种查询操作:MongoDB 支持各种类型的查询操作,包括基本的 CRUD 操作(插入、查询、更新、删除)、复杂的聚合查询和地理空间查询等。
  • 高可用性和容错性:MongoDB 支持副本集和自动故障转移机制,确保数据的高可用性和连续性。
  • 分片集群:MongoDB 支持分片集群架构,可以水平扩展和负载均衡数据存储和查询。
  • 索引和聚合管道:MongoDB 支持多种类型的索引和聚合管道操作,以提高查询性能和灵活性。
  • 地理空间索引和查询:MongoDB 提供了地理空间索引和查询功能,支持地理位置数据的存储和查询操作。
  • 安全性和权限控制:MongoDB 提供了强大的安全性功能,包括访问控制、数据加密和身份认证等。

TDengine 关键概念

  • 采集量(Metric):采集量是指传感器、设备或其他类型采集点采集的物理量,比如电流、电压、温度、压力、GPS 位置等,是随时间变化的,数据类型可以是整型、浮点型、布尔型,也可是字符串。
  • 标签(Label):标签是指传感器、设备或其他类型采集点的静态属性,不是随时间变化的,比如设备型号、颜色、设备的所在地等,数据类型可以是任何类型。
  • 数据采集点(Data Collection Point):数据采集点是指按照预设时间周期或受事件触发采集物理量的硬件或软件。一个数据采集点可以采集一个或多个采集量,但这些采集量都是同一时刻采集的,具有相同的时间戳。对于复杂的设备,往往有多个数据采集点,每个数据采集点采集的周期都可能不一样,而且完全独立,不同步。
  • 表(Table):因为采集量一般是结构化数据,同时为降低学习门槛,TDengine 采用传统的关系型数据库模型管理数据。用户需要先创建库,然后创建表,之后才能插入或查询数据。
  • 超级表(STable):由于一个数据采集点一张表,导致表的数量巨增,难以管理,而且应用经常需要做采集点之间的聚合操作,聚合的操作也变得复杂起来。为解决这个问题,TDengine 引入超级表(Super Table,简称为 STable)的概念。超级表是指某一特定类型的数据采集点的集合。
  • 子表(Subtable):当为某个具体数据采集点创建表时,用户可以使用超级表的定义做模板,同时指定该具体采集点(表)的具体标签值来创建该表。通过超级表创建的表称之为子表
  • 库(Database):库是指一组表的集合。TDengine 容许一个运行实例有多个库,而且每个库可以配置不同的存储策略。

MongoDB 关键概念

  • 数据库(Database):MongoDB 中的数据库是集合(Collections)的容器,集合是一组相关文档的集合。
  • 集合(Collection):MongoDB 中的集合类似于关系数据库中的表,用于存储一组文档。
  • 文档(Document):MongoDB 中的文档是以 BSON(二进制 JSON)格式存储的单个记录。集合中的文档可以具有不同的结构。
  • 字段(Field):字段是文档内的键值对,类似于关系数据库中的属性或列。
  • 索引(Index):MongoDB 中的索引是一种数据结构,用于提高集合内特定字段的查询性能。

TDengine 底层架构

TDengine 可以部署在本地、云端或作为混合解决方案,从而在部署和管理上具有灵活性。

TDengine 的架构设计主要包括以下组件:

  • 存储层:TDengine 的存储层负责实际存储数据,它采用了列式存储结构,以提高查询性能和压缩数据大小。数据存储在本地磁盘上,以保证数据的持久性和可靠性。
  • 计算层:TDengine 的计算层负责执行查询和计算任务。它包括了查询处理器和计算引擎,用于解析查询语句、执行计算操作,并将结果返回给客户端。
  • 分布式架构:TDengine 支持分布式架构,可以将数据分片存储在多个节点上,以实现水平扩展和负载均衡。每个节点可以独立地处理查询请求和执行计算任务,从而提高了系统的性能和可靠性。
  • 元数据管理:TDengine 使用元数据来管理数据的存储和分布。元数据包括了数据库、表、分区等信息,以及数据在各个节点上的分布情况。元数据管理使得 TDengine 能够有效地管理和路由数据。
  • 客户端接口:TDengine 提供了各种客户端接口,包括 SQL 接口、HTTP 接口和客户端库等。开发人员可以使用。

MongoDB 底层架构

MongoDB 使用灵活的类 JSON 文档模型来存储数据,这允许在无需停机的情况下进行动态模式更改。它支持即时查询、索引和实时聚合。主要包括以下组件:

  • 节点:MongoDB 集群由多个节点组成,每个节点可以扮演不同的角色,如主节点、从节点或仲裁节点。
  • 副本集:MongoDB 使用副本集来提供数据的冗余备份和高可用性。副本集由一个主节点和多个从节点组成,主节点负责处理所有写操作,而从节点则复制主节点的数据。如果主节点发生故障,副本集会自动选举新的主节点,保证系统的连续性和可用性。
  • 分片集群:MongoDB 使用分片集群来实现水平扩展和负载均衡。分片集群将数据分割成多个分片,每个分片可以存储部分数据,并分布在不同的节点上。路由节点负责将查询请求路由到相应的分片上,并将结果合并返回给客户端。
  • 配置服务器:配置服务器存储了分片集群的元数据信息,包括分片的位置和范围等信息。配置服务器使得 MongoDB 能够有效地管理和路由数据。
  • 驱动程序:MongoDB 驱动程序是与 MongoDB 数据库交互的客户端库,提供了各种语言的 API,如 Python、Java、Node.js 等。开发人员可以使用驱动程序来连接 MongoDB 数据库,并执行各种操作,如插入文档、查询数据等。

TDengine 主要特性

由于 TDengine 充分利用了时序数据特点,比如结构化、无需事务、很少删除或更新、写多读少等等,因此与其他时序数据库相比,TDengine 有以下特点:

  • 高性能:TDengine 是唯一一个解决了时序数据存储的高基数难题的时序数据库,支持上亿数据采集点,并在数据插入、查询和数据压缩上远胜其它时序数据库。
  • 极简时序数据平台:TDengine 内建缓存、流式计算和数据订阅等功能,为时序数据的处理提供了极简的解决方案,从而大幅降低了业务系统的设计复杂度和运维成本。
  • 云原生:通过原生的分布式设计、数据分片和分区、存算分离、RAFT 协议、Kubernetes 部署和完整的可观测性,TDengine 是一款云原生时序数据库并且能够部署在公有云、私有云和混合云上。
  • 简单易用:对系统管理员来说,TDengine 大幅降低了管理和维护的代价。对开发者来说, TDengine 提供了简单的接口、极简的解决方案和与第三方工具的无缝集成。对数据分析专家来说,TDengine 提供了便捷的数据访问能力。
  • 分析能力:通过超级表、存储计算分离、分区分片、预计算和其它技术,TDengine 能够高效地浏览、格式化和访问数据。
  • 核心开源:TDengine 的核心代码包括集群功能全部在开源协议下公开。全球超过 528.7k 个运行实例,GitHub Star 22.9k(数据统计至 2024.5.10),且拥有一个活跃的开发者社区。

MongoDB 主要特性

  • 灵活的数据模型:MongoDB 的无模式数据模型允许存储和查询多种数据类型,使其能够处理复杂和不断演化的数据结构。
  • 高可用性:MongoDB 的副本集功能通过自动故障转移和数据冗余确保高可用性。
  • 水平扩展:MongoDB 的分片集群架构实现了水平扩展和负载均衡,使其能够处理大规模数据处理和查询。

TDengine 应用场景

  • 物联网:整个物联网 IoT 领域的的数据量越来越大,传统大数据的方案以及以关系型数据库为核心的解决方案都开始捉襟见肘。如何应对大数据量下的实时数据存储、查询、分析,选择一款针对物联网 IoT 平台的时序数据库,成为了目前迫切需要解决的问题。
  • 工业互联网:在工业大数据领域,生产、测试、运行阶段都可能会产生大量带有时间戳的传感器数据,这都属于时序数据。时序数据主要由各类型实时监测、检查与分析设备所采集或产生,涉及工业制造、电力、化工、工程作业、智能制造等,具备写多读少、量非常大等典型特性。
  • 车联网:通过车机报文的分析,可以实现实时车载网络质量监控、车机零部件健康度监控、用户驾驶行为监控、车载系统安全分析、合规监控等业务。随着汽车保有量和车机传感器数量的日益增多,选对时序数据库,可以避免车载报文平台在数据存储方面的瓶颈。
  • 电力能源:伴随电力物联网的发展,发、输、变、配、用各个环节产生的数据量越来越大,严重挑战传统的以关系型数据库为核心的解决方案。如何应对大数据量下电力、能源数据的存储、查询、分析,如何选择一款电力时序数据库,成为了目前迫切需要解决的问题。
  • IT 运维:随着服务器、物联网设备逐步增多以及各类新型传感器的加装,传统运维方式越发吃力,严重限制业务发展,因此对硬件系统的运行维护是各行各业的信息服务部门普遍关注和不堪重负的问题。迫切需要基于海量时序数据的平台来支撑繁杂的运维工作。
  • 金融:子表多、实时数据量大、数据格式固定和保留时限长的金融行情数据的存储计算十分需要适合的时序数据库来处理,TDengine 提供基于行情中心的资产管理、实时监控、绩效分析、风险分析、舆情分控、股票回测、信号模拟、报表输出等应用投研服务。

MongoDB 应用场景

  • 内容管理系统(CMS):MongoDB 的灵活数据模型使其成为内容管理系统的理想选择,这些系统通常需要能够存储和管理各种类型的内容,如文章、图片和视频。MongoDB 无模式的特性使其能够轻松适应不断变化的内容结构和需求。
  • 物联网IoT平台数据存储与分析:MongoDB 对高数据量和水平扩展性的支持使其适用于存储和处理由物联网设备生成的数据,例如传感器读数和设备日志。其高效的索引和查询功能使得可以进行实时的数据分析和物联网设备的监控。
  • 电子商务平台:MongoDB 的灵活性和性能特性使其成为电子商务平台的优选,这些平台需要高效存储和查询多样化的产品信息、客户数据和交易记录。MongoDB 的灵活数据模型使得可以轻松适应产品属性和客户偏好的变化,而高可用性和可扩展性特性确保了用户体验的流畅和响应。

TDengine 定价模型

TDengine OSS 采用 AGPLv3 许可证,是一款开源软件,在遵守 AGPL 的许可下,可以免费使用。此外,TDengine 还提供了 TDengine Enterprise 和 TDengine Cloud 两个商业版本,这两个版本在 TDengine OSS 基础上提供了额外的功能,并提供专业技术支持。

TDengine Enterprise 版本的价格和场景用量等息息相关,可选按年订阅或者永久授权;TDengine Cloud 的计费方案是根据实际数据量的计算资源来确定的,按月收费,提供入门版、基础版、标准版、专业版、旗舰版,可点击计费方案计算器来估价。

MongoDB 定价模型

MongoDB 提供多种定价选项,包括免费的开源社区版和商业企业版。企业版包括高级功能、管理工具和技术支持。

MongoDB 还提供了完全托管的基于云的数据库服务 MongoDB Atlas,采用按需付费的定价模式,根据存储、数据传输和计算资源进行计费。MongoDB Atlas 提供了一个免费层,供用户试用服务而不产生费用,但资源有限。

快速运行 TDengine

高性能、分布式的物联网、工业大数据平台