TDengine vs DolphinDB

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

TDengine 概览

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

DolphinDB 概览

DolphinDB是一种高性能、分布式的时序数据库,专为处理大量时间序列数据和进行实时分析而设计。主要包括高性能、分布式架构、丰富的数据类型、强大的查询语言、数据存储和管理、应用场景、开发和集成等特点,DolphinDB以其高性能、扩展性和丰富的功能,成为处理和分析大规模时序数据的理想选择。

TDengine 与 DolphinDB 综合对比

对比项 TDengine DolphinDB
官网 www.taosdata.com dolphindb.cn
数据库类型 采用时序数据库模型,支持超级表和子表的概念。 采用时序数据库模型
技术文档 docs.taosdata.com docs.dolphindb.cn/zh/about/ddb_docs_intro.html
开源性 开源 不完全开源
云服务 TDengine Cloud DolphinDB自建云服务
底层语言 C C++
支持的操作系统 Linux、Windows、MacOS Linux、Windows、MacOS
支持的语言连接器 Python
Java
C/C++
Go
Node.js
Rust
C#
Java
Python
C++
C#
R
Node.js
MATLAB
语法 支持标准 SQL 类似于SQL的DSQL
分布式 支持分布式架构 支持分布式架构
开源性质 AGPLv3 Apache License 2.0 或 MIT License
应用场景 工业大数据、物联网 IoT 平台、智能制造、能源数据管理等 物联网 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 接口。

DolphinDB 的数据库功能

  • 表管理:支持创建、删除、修改表结构,包括分区表和非分区表。
  • 数据库管理:支持创建、删除数据库,并管理数据库的元数据信息。
  • 数据类型:支持多种数据类型,如整数、浮点数、字符串、日期时间等,以及复杂数据类型如数组、字典等。
  • DSQL(DolphinDB SQL):提供 SQL 查询语言,支持常见的 SQL 操作,如 SELECT、INSERT、UPDATE、DELETE、JOIN 等,同时支持窗口函数、聚合函数、分组、排序等高级功能。
  • 分布式查询:支持分布式查询,能够在多个节点上并行执行查询任务,提高查询性能和处理能力。
  • 实时查询和流式处理:支持实时数据查询和流式处理,能够处理高速数据流并进行实时分析。
  • 数据过滤和条件查询:支持按条件过滤数据,进行复杂的数据查询和筛选。
  • 数据转换和聚合:支持数据转换、聚合操作和复杂计算,如平均值、标准差、方差、协方差、相关系数等统计计算。
  • 高级分析函数:内置多种高级分析函数,如移动平均、滑动窗口统计、分位数计算等,支持用户自定义函数。
  • 时序数据存储和查询:优化的时序数据存储结构,支持快速存储和检索大规模时序数据。
  • 时序数据聚合:支持按时间进行数据聚合,如分钟、小时、天等不同粒度的聚合操作。

TDengine 关键概念

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

DolphinDB 关键概念

  • 数据库:DolphinDB 中的数据存储单位,包含多个表,可以是分布式的,也可以是本地的。
  • :数据库中的数据存储结构,类似于关系数据库中的表格。支持分区表和非分区表。
  • 分区:将大数据集拆分成更小的部分,以提高查询性能和数据管理效率。
  • 数据节点(Data Nodes):负责存储和处理数据,执行分布式查询和计算任务。
  • 控制节点(Control Nodes):负责集群管理、任务调度和查询分发,协调数据节点的操作。
  • DSQL:DolphinDB 的查询语言,结合了 SQL 和面向数组编程的优点,支持复杂的数据查询和分析操作。
  • 数据副本(Replication):DolphinDB 支持数据副本,通过多个副本存储提高数据可靠性和系统容错能力。

TDengine 底层架构

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

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

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

DolphinDB 底层架构

DolphinDB 采用了基于 shared-nothing 的分布式架构。在这个架构中,集群中的各个节点相互独立,拥有自己独立的计算资源和存储资源,不共享中心资源。具体角色包括:

  • 控制节点:DolphinDB 集群的核心部分,负责收集代理节点和数据节点的心跳,监控每个节点的工作状态,管理分布式文件系统的元数据、分配分区位置,并提供对事务的支持。
  • 代理节点:执行控制节点发出的启动和关闭数据节点或计算节点的命令。每台物理服务器有且仅有一个代理节点。
  • 数据节点:既可以存储数据,也可以用于数据的查询和计算。每台物理服务器可以配置多个数据节点。
  • 计算节点:不存储表数据和元数据,只承担计算相关的职能,负责响应客户端请求并返回结果。适用于数据密集型查询计算任务。

TDengine 主要特性

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

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

DolphinDB 主要特性

  • 高性能:DolphinDB 专为处理大规模时间序列数据而设计,具有出色的读写性能。它支持高并发查询和复杂计算,适用于金融、物联网、工业制造等领域。
  • 多维数据模型:DolphinDB 支持多维表格,可以轻松处理复杂的数据结构,如矩阵、向量和标量。
  • 分布式架构:正如我之前提到的,DolphinDB 采用 shared-nothing 分布式架构,允许水平扩展,实现高可用性和负载均衡。
  • 内置函数和库:DolphinDB 内置了丰富的函数和库,包括统计、机器学习、时间序列分析等。用户可以直接使用这些功能,无需额外安装或配置。
  • 支持 SQL 和脚本语言:DolphinDB 支持 SQL 查询,同时还提供了自定义脚本语言,方便用户根据需求编写复杂的数据处理逻辑。
  • 实时数据处理:DolphinDB 具有低延迟的数据写入和查询能力,适用于实时数据流处理。
  • 数据压缩和存储优化:DolphinDB 使用了自适应压缩算法,有效减小存储空间,提高查询性能。
  • 安全性和权限管理:DolphinDB 支持用户和角色的权限管理,保护数据安全。

TDengine 应用场景

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

DolphinDB 应用场景

  • 金融数据分析:DolphinDB 可以处理大规模金融数据,例如股票交易数据、期权数据、债券数据等。它支持复杂的查询和分析,以帮助金融机构做出更明智的决策。
  • 物联网数据存储:DolphinDB 的时间序列数据库引擎适用于存储和分析物联网设备生成的海量时间序列数据。它可以轻松处理传感器数据、日志数据、工业设备数据等。
  • 实时数据处理:DolphinDB 具有低延迟的特点,适用于实时数据处理场景,如实时监控、风险管理、交易执行等。
  • 大数据分析:DolphinDB 支持 SQL 查询、复杂分析和机器学习模型的执行。它可以与 Hadoop、Spark 等大数据平台集成,用于数据挖掘和大规模数据分析。
  • 时序数据存储:DolphinDB 的 TSDB 引擎专门用于存储和查询时间序列数据,例如传感器数据、日志数据、市场行情数据等。

快速运行 TDengine

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