在构建任何软件应用程序时,选择合适的数据库至关重要。所有数据库在性能方面都有不同的优势和劣势,因此,为您的特定用例和数据模型决定哪个数据库的优势最大、缺点最少是一个重要的决定。下面您将找到 TDengine 和 TimescaleDB 的关键概念、架构、特性、用例和定价模型的概述,以便您可以快速了解它们之间的比较。

本文的主要目的是比较 TDengine 和 TimescaleDB 在涉及时间序列数据的工作负载方面的性能,而不是所有可能的用例。时间序列数据通常在数据库性能方面提出了独特的挑战。这是由于大量数据被写入以及访问这些数据的查询模式。本文并非旨在说明哪个数据库更好;它只是提供了每个数据库的概述,以便您可以做出明智的决定。

TDengine 与 TimescaleDB 分解


 
数据库模型

时间序列数据库

时间序列数据库

架构

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

TimescaleDB 构建于 PostgreSQL 之上,并继承了其架构。它通过特定于时间序列的优化和功能扩展了 PostgreSQL,使其能够高效地管理时间序列数据。它可以作为单节点、多节点设置或在云端作为托管服务进行部署。

许可证

AGPL 3.0

Timescale 许可证(适用于 TimescaleDB 社区版);Apache 2.0(适用于核心 PostgreSQL)

用例

物联网数据存储、工业监控、智能能源、智能家居、监控和可观测性

监控、可观测性、物联网、实时分析、金融市场数据

可扩展性

通过集群和内置负载均衡实现水平扩展。TDengine 还提供了解耦的计算和存储,以及对象存储支持,以便在某些版本中进行数据分层

通过对分区、复制和分片的本地支持实现水平扩展。提供多节点功能,用于跨节点分发数据和查询。

正在寻找最有效的入门方式?

无论您是在寻求成本节约、更低的管理开销还是开源,InfluxDB 都能帮到您。

TDengine 概述

TDengine 是一款高性能开源时间序列数据库,旨在高效处理海量时间序列数据。它由涛思数据于 2017 年创建,专门为物联网 (IoT)、工业物联网和 IT 基础设施监控用例而设计。TDengine 具有独特的混合架构,结合了关系型数据库和 NoSQL 数据库的优点,提供高性能、易于使用的 SQL 查询以及灵活的数据建模功能。

TimescaleDB 概述

TimescaleDB 是一款构建于 PostgreSQL 之上的开源时间序列数据库。它的创建是为了解决管理时间序列数据的挑战,例如可扩展性、查询性能和数据保留策略。TimescaleDB 于 2017 年首次发布,此后因其 PostgreSQL 兼容性、性能优化和灵活的数据保留策略而成为存储和分析时间序列数据的热门选择。


TDengine 用于时间序列数据

TDengine 从头开始设计为时间序列数据库,因此它非常适合大多数涉及大量存储和分析时间序列数据的用例。

TimescaleDB 用于时间序列数据

TimescaleDB 专门为时间序列数据而设计,使其成为存储和查询此类数据的自然选择。它为时间序列数据管理提供了多项优势,例如水平可扩展性、列式存储和保留策略支持。但是,TimescaleDB 可能不是所有时间序列用例的最佳选择。一个例子是,如果应用程序需要非常高的写入吞吐量或实时分析,则 InfluxDB 等其他专门的时间序列数据库可能更适合。


TDengine 关键概念

  • 超级表:用于创建具有相同模式的多个表的模板。它类似于某些其他数据库中的表继承概念。
  • 子表:基于超级表创建的表,继承其模式。子表可以具有额外的标签,用于分类和查询目的。
  • 标签:一种元数据属性,用于对超级表中的子表进行分类和筛选。标签已索引并针对高效查询进行了优化。

TimescaleDB 关键概念

  • 超表:超表是一种分布式表,按时间和可能的其他维度(例如设备 ID 或位置)进行分区。它是 TimescaleDB 中存储时间序列数据的主要抽象,旨在跨多个节点进行水平扩展。
  • :块是超表的分区,包含超表数据的子集。块由 TimescaleDB 根据指定的时间间隔自动创建,并且可以单独压缩、索引和备份,以获得更好的性能和数据管理。
  • 分布式超表:对于大规模部署,TimescaleDB 支持分布式超表,它跨多个节点对数据进行分区,以提高查询性能和容错能力。


TDengine 架构

TDengine 使用云原生架构,结合了关系型数据库(支持 SQL 查询)和 NoSQL 数据库(可扩展性和灵活性)的优点。

TimescaleDB 架构

TimescaleDB 是构建在 PostgreSQL 之上的扩展,继承了其关系数据模型和 SQL 支持。但是,TimescaleDB 使用自定义数据结构和针对时间序列数据的优化(例如超表和块)扩展了 PostgreSQL。

免费时间序列数据库指南

获取对备选方案和选择关键要求的全面评述。

TDengine 特性

数据摄取

TDengine 支持高速数据摄取,能够处理每秒数百万个数据点。它支持批量和单个数据插入。

数据查询

TDengine 提供 ANSI SQL 支持以及其他功能,使用户可以使用熟悉的 SQL 语法轻松查询时间序列数据。它支持各种聚合函数、筛选和连接。

数据保留和压缩

TDengine 自动压缩数据以节省存储空间,并提供数据保留策略以自动删除旧数据。

TimescaleDB 特性

分区

TimescaleDB 使用超表和块自动对时间序列数据表进行分区,从而简化了数据管理并提高了查询性能。

面向时间序列的 SQL 函数

TimescaleDB 为时间序列数据应用场景提供了多个专门的 SQL 函数和运算符,例如 time_bucket、first 和 last,它们简化了时间序列数据的查询和聚合。

查询优化

如前所述,TimescaleDB 扩展了 PostgreSQL 的查询计划器,用于编写和查询时间序列数据,包括基于时间的索引和块剪枝等优化。


TDengine 用例

物联网数据存储和分析

TDengine 旨在处理物联网设备生成的海量时间序列数据。其高性能的摄取、查询和存储能力使其成为物联网数据存储和分析的合适选择。

工业物联网监控

TDengine 可用于存储和分析来自工业物联网传感器和设备的数据,帮助组织监控设备性能、检测异常和优化运营。

基础设施监控

TDengine 可用于收集和分析来自 IT 基础设施组件(例如服务器、网络和应用程序)的时间序列数据,从而促进实时监控、警报和性能优化。

TimescaleDB 用例

监控和指标

TimescaleDB 非常适合存储和分析监控和指标数据,例如服务器性能指标、应用程序日志和传感器数据。其超表结构和查询优化使其易于存储、查询和可视化大量时间序列数据。

物联网数据存储

TimescaleDB 可用于存储和分析物联网数据,例如传感器读数和设备状态信息。它对自动分区和专用 SQL 接口的支持简化了大规模物联网数据集的管理和查询。

金融数据

TimescaleDB 适用于存储和分析金融数据,例如股票价格、汇率和交易量。其查询优化和专用 SQL 函数使其易于执行基于时间的聚合和分析金融数据中的趋势。


TDengine 定价模型

TDengine 是开源的,根据 AGPLv3 许可证免费使用。TDengine 还为需要额外功能、支持或符合特定许可要求的组织提供商业许可证和企业支持选项。

TimescaleDB 定价模型

TimescaleDB 有两个版本:TimescaleDB 开源版和 TimescaleDB Cloud。开源版可以免费使用并且可以自托管,而云版是一种托管服务,采用按需付费的定价模式,具体取决于存储、计算和数据传输使用情况。TimescaleDB Cloud 提供具有不同资源和功能级别(例如持续备份和高可用性)的各种定价层级。