依据 2022 年最新 DB-engines 排名,支流时序数据库仍然是 InfluxDB、Prometheus 等。但从排行回升趋势不难看出,近一年新的时序数据库锋芒毕露,这也阐明企业技术选型的方向也越来越多。
如何做好时序数据库的抉择,也是困扰泛滥企业的基本问题。数据迁徙的难度、前期运维的老本、更甚至是物理条件的限度等等一系列问题都会成为妨碍企业倒退的一道不可逾越的鸿沟。TDengine 作为一款集群版都开源的时序数据库,近几年也帮忙很多大厂实现了技术选型和企业数据的迁徙。如果你正在为技术选型而头秃,无妨循着前人的脚步进行一番摸索。
用户案例
TDengine:十年期货股票行情数据轻松解决——TDengine 在同心源基金的利用
TDengine:TDengine 在弘源泰平量化投资中的实际
TDengine:TDengine 在同花顺组合治理业务中的优化实际
作为泛滥公司的最终抉择,TDengine 能怀才不遇的根本原因还是在于其技术的齐备。大数据有很多解决工具,例如 HBase,Hive,YARN,Storm,Spark 等系列工具。整个大数据平台中往往还有 Kafka,Redis 等相似的音讯队列、缓存软件。这些软件较好的解决了通用大数据问题,然而物联网、车联网、工业互联网等场景的数据有其独特性,充分利用这些独特之处,必然能够使数据处理有数量级的晋升,并且大大减少研发和运维老本。
TDengine 专为物联网、车联网等时序空间大数据设计,其外围性能是时序数据库。但为缩小大数据平台的研发和运维的复杂度,更进一步升高计算资源,TDengine 还提供大数据处理所须要的音讯队列、音讯订阅、缓存、流式计算等性能。TDengine 的劣势非常显著,次要体现在以下几个方面:
1. 大幅晋升数据插入和查问性能
物联网的数据是结构化的,因而 TDengine 采取的是结构化存储,而不是风行的 KV 存储。物联网场景里,每个数据采集点的数据源是惟一的,数据是时序的,而且用户关怀的往往是一个时间段的数据,而不是某个非凡工夫点。基于这些特点,TDengine 要求对每个采集设施独自建表。如果有 1000 万个设施,就须要建 1000 万张表。
基于这样的设计,任何一台设施采集的数据在存储介质里能够是一块一块间断的寄存的,而且依照工夫排序。因而查问单个设施一个时间段的数据,查问性能就有数量级的晋升。另外一方面,尽管不同设施因为网络的起因,达到服务器的工夫无法控制,是齐全乱序的,但对于同一个设施而言,数据点的时序是保障的。一个设施一张表,就保障了一张表插入的数据是有时序保障的,这样数据插入操作就变成了一个简略的追加操作,插入性也能大幅度提高。
KV 存储的益处是不必定义数据库表构造,每条记录都能够变换格局。但在物联网、车联网这些场景里,个别数据格式是固定的,改变的频次很低,而且 TDengine 实现了一种高效的批改表构造的办法,因而 TDengine 采取格式化存储不会带来太大的不便。
2. 大幅升高硬件或云服务老本
因为数据插入查问性能大幅度晋升,零碎所须要的计算资源就大幅缩小。另外一方面,物联网采集的物理量的值是随工夫扭转的,但失常状况下,是突变的,因而 TDengine 采取列式存储,将同一个物理量在多个工夫点采集的值间断寄存,这样能成倍的进步压缩效率。而且 TDengine 针对不同的数据类型采取不同的压缩办法,比方 delta-delta 编码、simple 8B 办法、zig-zag 等等,这样更进一步的进步压缩率。与通用数据库相比,在曾经测试过的物联网场景中,TDengine 存储空间不到 1/5,大幅节俭存储资源。在 TDengine 颁布的比照测试报告里,有如下的后果:
3. 大幅简化大数据系统架构
与互联网利用不一样的是,物联网场景中,只有指定联网设施数量,数据采集频次,零碎所须要的流量就能够较为精确地估算进去,不像双 11,电商的流量能够几十倍的变动,而物联网的流量则较为安稳。同时,物联网设施都有肯定的数据缓存能力,以避免网络连接失败,因而物联网平台对音讯队列的需要没有那么强烈。TDengine 外部实现了一简略的音讯队列,同时提供订阅性能,这样就不须要应用 Kafka 等相似的音讯队列软件了。
TDengine 对数据库调配了固定的内存区域,新插入的数据,会先写入内存。内存依照先进先出的准则进行治理,内存不足时,老的数据会被长久化存储,而内存里的老数据会被最新的笼罩掉。TDengine 还保障了任何一台设施最初一条记录肯定在内存中,如果利用要获取每个设施的最新数据或状态,都将从内存里间接获取,这样的设计让零碎能够不再须要 Redis 这类软件。
因而 TDengine 提供了大数据处理所须要的数据库、缓存、音讯队列、流式计算等系列性能。应用 TDengine,在物联网大数据平台中齐全能够摈弃掉 Kafka、HDFS、HBase、Spark 和 Redis 等软件,大幅简化大数据平台的设计,升高研发老本大,而且零碎将更加强壮,数据的一致性更有保障。
因而 TDengine 提供了大数据处理所须要的数据库、缓存、音讯队列、流式计算等系列性能。应用 TDengine,在物联网大数据平台中齐全能够摈弃掉 Kafka、HDFS、HBase、Spark 和 Redis 等软件,大幅简化大数据平台的设计,升高研发老本大,而且零碎将更加强壮,数据的一致性更有保障。
4. 弱小的历史数据分析能力
TDengine 设计上让用户对历史数据和实时数据的解决齐全通明,不辨别历史数据和实时数据。用户只须要在 SQL 语句里指定时间段,TDengine 主动决定是否从内存、从本地硬盘,还是从网络存储上获取数据, 这样利用的实现变的简略。
每个设施的数据按块存储,而且每个数据块都曾经做了预聚合(比方和、最大、最小值等),这样执行一个设施一个时间段的各种统计操作,有可能不必扫描原始数据,就能计算出来,性能大幅晋升。即便有的计算须要扫描原始数据,但因为数据是一块一块间断存储的,读取速度远超通用数据库,计算剖析速度也是大幅晋升。而且因为结构化存储,解压后,不必做任何解析,读进内存就能够间接计算,绝对于 NoSQL 数据库,计算剖析速度也是大幅晋升。
TDengine 定义了一新的概念——超级表,用以形容同一类型的设施。给每个设施或表打上动态标签后,就能够用标签值筛出一部分满足过滤条件的设施,而后对这一部分设施的数据进行聚合。TDengine 还设计了一非凡的机制,对于多个设施数据聚合,仅仅须要扫描一次数据文件,这样大幅缩小 IO 操作次数,进步聚合计算速度。为进步易用性,用户能够通过 TDengine 自带的 shell,或者 Python、R、Matlab 等工具间接进行各种 Ad-Hoc 的查问或剖析。TDengine 用来做物联网、车联网、工业互联网的数据仓库,会是一个现实的抉择。
5. 零运维治理,零学习老本
TDengine 安装包很小,下载、装置几秒钟搞定。对于企业版,把一台机器退出集群一条命令就能实现,而且数据库是实时主动备份,不必手动分库分表,运维极其简略。零碎应用规范的 SQL,反对 C/C++、Java、Python 和 Go 等各种语言开发接口,反对 JDBC,反对 RESTful 接口。应用起来就像是在应用 MySQL,简直不须要学习老本。
6. 与第三方工具无缝集成
目前 TDengine 在数据采集侧,曾经反对 Telegraf、Kafka,后续还将反对 MQTT、OPC 等。在利用侧,曾经反对 Grafana 可视化工具,反对 Matlab,R 以及一些 BI 工具。因为 TDengine 反对 JDBC 接口,很容易实现与第三方工具的接口,能够预感,更多的工具将会被无缝集成。
对于运维监测场景,不必写任何代码,只有将开源的 Telegraf、Grafana 与 TDengine 配置好,就能够迅速搭建一个高效的运维监测平台。
开源
TDengine 由北京涛思数据技术有限公司自主开发,没有依赖任何第三方软件。研发工夫曾经超过 2 年,而且曾经有一批付费商业客户,波及电力、数控机床、智慧城市、车辆网等多个畛域,客户的应用反馈都很不错。可喜的是,涛思数据将 TDengine 的外围存储、计算引擎齐全开源。TDengine 的社区版齐全能满足肯定规模的物联网、车联网、工业互联网的利用需要。因为涛思数据外围团队就在北京,相比其余开源软件,应该可能给中国的软件工程师提供更好的本地服务。
结语
比照其余时序数据库,TDengine 在易用性、性能上、性能上有显著的劣势。采纳 TDengine,让物联网、工业互联网、运维监测的大数据平台的搭建变得极为简略,具备超强性能,不仅升高硬件老本、运维老本,还能大幅升高对研发和运维人员的需要。
想理解更多 TDengine Database 的具体细节,欢送大家在 GitHub 上查看相干源代码。