物联网、车联网、工业互联网大数据平台,为什么推荐使用TDengine?-程序员宅基地

大数据有很多处理工具,最流行的当属Hadoop系统。Hadoop生态包括HDFS, HBase, Hive, YARN, Storm, Spark, Zookeeper等系列工具。整个大数据平台中往往还有Kafka, Redis等类似的消息队列、缓存软件。这些软件较好的解决了通用大数据问题,但是物联网、车联网、工业互联网等场景的数据有其独特性,如果充分利用这些独特之处,可以推出一个专有的物联网大数据处理平台,数量级的提升数据处理能力,并减少研发和运维成本。刚刚开源的TDengine就是这样的产品。

TDengine专为物联网、车联网等时序空间大数据设计,其核心功能是时序数据库。但为减少大数据平台的研发和运维的复杂度,更进一步降低计算资源,TDengine还提供大数据处理所需要的消息队列、消息订阅、缓存、流式计算等功能。TDengine的优势十分明显,主要表现在以下几个方面:

大幅提升数据插入和查询性能

物联网的数据是结构化的,因此TDengine采取的是结构化存储,而不是流行的KV存储。物联网场景里,每个数据采集点的数据源是唯一的,数据是时序的,而且用户关心的往往是一个时间段的数据,而不是某个特殊时间点。基于这些特点,TDengine要求对每个采集设备单独建表。如果有1000万个设备,就需要建1000万张表。

基于这样的设计,任何一台设备采集的数据在存储介质里可以是一块一块连续的存放的,而且按照时间排序。因此查询单个设备一个时间段的数据,查询性能就有数量级的提升。另外一方面,虽然不同设备由于网络的原因,到达服务器的时间无法控制,是完全乱序的,但对于同一个设备而言,数据点的时序是保证的。一个设备一张表,就保证了一张表插入的数据是有时序保证的,这样数据插入操作就变成了一个简单的追加操作,插入性也能大幅度提高。

KV存储的好处是不用定义数据库表结构,每条记录都可以变换格式。但物联网、车联网这些场景里,一般数据格式是固定的,改动的频次很低,而且TDengine实现了一种高效的修改表结构的方法,因此TDengine采取格式化存储不会带来太大的不便。

大幅降低硬件或云服务成本

由于数据插入查询性能大幅度提升,系统所需要的计算资源就大幅减少。另外一方面,物联网采集的物理量的值是随时间改变的,但正常情况下,是渐变的,因此TDengine采取列式存储,将同一个物理量在多个时间点采集的值连续存放,这样能成倍的提高压缩效率。而且TDengine针对不同的数据类型采取不同的压缩方法,比如delta-delta 编码、simple 8B方法、zig-zag等等,这样更进一步的提高压缩率。与通用数据库相比,在已经测试过的物联网场景中,TDengine存储空间不到1/5,大幅节省存储资源。

大幅简化大数据系统架构

与互联网应用不一样的是,物联网场景中,只要指定联网设备数量,数据采集频次,系统所需要的流量是可较为准确估算出来的,不像双11,电商的流量可以几十倍的变化,而物联网的流量是较为平稳的。同时,物联网设备都有一定的数据缓存能力,以防止网络连接失败,因此物联网平台对消息队列的需求没有那么强烈。TDengine内部实现了一简单的消息队列,同时提供订阅功能,这样就不需要使用Kafka等类似的消息队列软件。

TDengine对数据库分配了固定的内存区域,新插入的数据,会先写入内存。内存按照先进先出的原则进行管理,内存不足时,老的数据会被持久化存储,而内存里的老数据会被最新的覆盖掉。TDengine还保证了任何一台设备最后一条记录一定在内存中,如果应用要获取每个设备的最新数据或状态,都将从内存里直接获取,这样的设计让系统可以不再需要Redis这类软件。

物联网数据是一个流数据,基于滑动窗口,TDengine后台定时的拉起查询计算,提供了一简化的流式计算,可以做各种实时的统计聚合操作,这样对于一般的物联网场景,不再需要使用Spark等类型的流式计算软件。

因此TDengine提供了大数据处理所需要的数据库、缓存、消息队列、流式计算等系列功能。使用TDengine,在物联网大数据平台中完全可以抛弃掉Kafka, HDFS,HBase,Spark, Redis等软件,大幅简化大数据平台的设计,降低研发成本大,而且系统将更加健壮,数据的一致性更有保证。

强大的历史数据分析能力

TDengine设计上让用户对历史数据和实时数据的处理完全透明,不区分历史数据和实时数据。用户只需要在SQL语句里指定时间段,TDengine自动决定是否从内存、从本地硬盘,还是从网络存储上获取数据,这样应用的实现变的简单。

每个设备的数据按块存储,而且每个数据块都已经做了预聚合(比如和、最大、最小值等),这样执行一个设备一个时间段的各种统计操作,有可能不用扫描原始数据,就能计算出来,性能大幅提升。即使有的计算需要扫描原始数据,但由于数据是一块一块连续存储的,读取速度远超通用数据库,计算分析速度也是大幅提升。而且由于结构化存储,解压后,不用做任何解析,读进内存就可以直接计算,相对于NoSQL数据库,计算分析速度也是大幅提升。

TDengine定义了一新的概念超级表,用以描述同一类型的设备。给每个设备或表打上静态标签后,就可以用标签值筛出一部分满足过滤条件的设备,然后对这一部分设备的数据进行聚合。TDengine还设计了一特殊的机制,对于多个设备数据聚合,仅仅需要扫描一次数据文件,这样大幅减少IO操作次数,提高聚合计算速度。为提高易用性,用户可以通过TDengine自带的shell, 或者Python, R, Matlab等工具直接进行各种Ad Hoc的查询或分析。TDengine用来做物联网、车联网、工业互联网的数据仓库,会是一理想的选择。

零运维管理,零学习成本

TDengine安装包不到2M,下载、安装几秒钟搞定。对于企业版,把一台机器加入集群一条命令就能完成,而且数据库是实时自动备份,不用手动分库分表,运维极其简单。系统使用标准的SQL,支持C/C++, Java,Python,Go等各种语言开发接口,支持JDBC,支持RESTful接口。使用起来像是在使用MySQL,几乎不需要学习成本。

与第三方工具无缝集成

目前TDengine在数据采集侧,已经支持Telegraf, Kafka,后续还将支持MQTT,OPC等。在应用侧,已经支持Grafana可视化工具,支持Matlab,R以及一些BI工具。因为TDengine支持JDBC接口,很容易实现与第三方工具的接口,可以预见,更多的工具将会被无缝集成。

对于运维监测场景,不用写任何代码,只要将开源的Telegraf, Grafana与TDengine配置好,就可以迅速搭建一个高效的运维监测平台。

开源

TDengine由北京涛思数据技术有限公司自主开发,没有依赖任何第三方软件。研发时间已经超过2年,而且已经有一批付费商业客户,涉及电力、数控机床、智慧城市、车辆网等多个领域,客户的使用反馈都很不错。可喜的是,涛思数据将TDengine的核心存储、计算引擎完全开源。TDengine的社区版完全能满足一定规模的物联网、车联网、工业互联网的应用需求。因为涛思数据核心团队就在北京,相比其他开源软件,应该能够给中国的软件工程师提供更好的本地服务。

结语

TDengine在易用性、功能上、性能上已经远超其他时序数据库。采用TDengine,物联网、工业互联网、运维监测的大数据平台的搭建变得极为简单,具备超强性能,不仅降低硬件成本、运维成本,还能大幅降低对研发和运维人员的需求。

因为是开源免费的,而且安装包不到2M,不妨访问tdengine.com下载一个试试。

点击“阅读原文”下载开源的TDengine

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/taos_data/article/details/100147654

智能推荐

栈——后进先出(LIFO:last in first out)_栈的后进先出例题-程序员宅基地

文章浏览阅读2.9k次,点赞2次,收藏2次。栈:后进先出(LIFO:last in first out)例如:自助餐中的自取餐盘面试题目:有六个元素6 5 4 3 2 1 的顺序进栈,哪一个不是合法的出栈序列:A. 5 4 3 6 1 2 B.4 5 3 2 1 6 C.3 4 6 5 2 1 D.2 3 4 1 5 6解析:进入栈的顺序保持6 5 4 3 2 1 ,3出栈所以栈中现在是从栈底-->栈顶依次为6..._栈的后进先出例题

java实现post请求(PostMethod)-程序员宅基地

文章浏览阅读3.9k次。项目要求:实现post请求,且请求格式是json格式。maven依赖包<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version></dependency><dependency> ..._postmethod

N皇后问题-n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。_在n×n的方格棋盘放置3个皇后,任意两个皇后不能相邻,否则她们会相互攻击(也就是说-程序员宅基地

文章浏览阅读4.4k次。n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。相互攻击就是说:在同一行、同一列或者在同一斜线方向时,不能同时存在两个皇后。示例:输入: 4输出: [ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..Q.", // 解法 2 "Q...", "...Q", ".Q..._在n×n的方格棋盘放置3个皇后,任意两个皇后不能相邻,否则她们会相互攻击(也就是说

使用Docker安装达梦数据库_docker pull安装达梦8-程序员宅基地

文章浏览阅读1.8k次。前言最近公司要求对老项目进行维护,需要安装达梦数据库,我采用了centos7.8的docker进行安装,这里做个记录。一、docker的安装查看当前centos系统内核版本,高于3.10才能安装docker#uname -r下载和安装docker#yum -y install docker安装完成后,查看docker版本#docker version启动docker服务#systemctl start docker设置docker开机启动#systemctl enable _docker pull安装达梦8

Springboot集成高低版本kafka_spring-kafka版本-程序员宅基地

文章浏览阅读3.7k次。springboot整合kafka的时候一定要根据自己springboot版本选择对应版本的kafka,两者版本对应关系可以直接查看官网。_spring-kafka版本

Java性能优化:数据传输优化_java数据推送方案优化-程序员宅基地

文章浏览阅读1.2k次。数据传输优化一、前言客户端与服务端经常进行着频繁的数据传输,数据传输又影响着用户体验,本小节就传输速率的优化,整理了部分注意事项。二、数据传输优化2.1 减少数据字节数:在开始的时候,采用的是xml传输,这就要使用到Serializable/Parcelable序列化以及反序列化,其传输速度之慢,基本已经被遗弃,后来又出现了JSON序列化传输,其常用工具就是GSON和fastjson,但随着时代的进步,json也体现出了局限性json的局限性主要体现在其是基于字符串的传输,在_java数据推送方案优化

随便推点

QT常见错误:"multiple definition of xxx"_e:\34[c++]\11[20230323qt_test]\example\contach.cpp-程序员宅基地

文章浏览阅读904次。错误原因重复定义解决方法打开QT工程文件*.pro查看SOURCES += \ 以及 HEADERS += \下方是否有重复的源文件名或头文件名,删掉重复的即可_e:\34[c++]\11[20230323qt_test]\example\contach.cpp:3: error: multiple defini

ajax jsonp跨域_ajax 什么时候 jsonp跨域-程序员宅基地

文章浏览阅读1.6k次。js跨域问题是指:js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。js跨域参考:http://www.cnblogs.com/2050/p/3191744.html可以通过jsonp实现js跨域,但是获取的数据必须是脚本文件,例如json。下面_ajax 什么时候 jsonp跨域

自然语言处理(NLP)学习路线总结_nlp自然语言处理流程-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏29次。文章目录1、自然语言处理概述2、自然语言处理入门基础2.1 数学基础2.2 语言学基础2.3 Python基础2.4 机器学习基础2.5 深度学习基础2.6 自然语言处理的理论基础3、自然语言处理的主要技术范畴3.1 语义文本相似度分析3.2 信息检索(Information Retrieval, IR)3.3 信息抽取(Information Extraction)3.4 文本分类(Text Categorization)3.5 文本挖掘(Text Mining)3.6 文本情感分析(Textual Af_nlp自然语言处理流程

【转载】梦断计院--一个计算机学院学生大学学习生活的回顾与反省-程序员宅基地

文章浏览阅读272次。作为正值大学毕业的我,无意中看到这篇博文,只看了点开头,就决定给他转载。此刻的我没有工作,时不时的还得为感情事而发愁,一天天的吵架,合好,吵架。我也不像以前的我啦,学习没激情,目标不坚定,生活挺颓废,工作也不找,整天待在寝室进行所谓的“学习”,其实是为工作做准备,把这大学以来丢的东西补上,然后再去找工作,学到现在,也没发觉学得怎么样,离成为一个合格的计算机科学与技术专业的学生相差甚远。

洛谷P4180 严格次小生成树-程序员宅基地

文章浏览阅读360次。题意就是求严格次小生成树。其实思路挺明确的,跟非严格次小生成树差不多。那么先回忆一下非严格次小生成树:先求出最小生成树,再利用Kruskal的贪心思路,对每一条非树边求它连成的环上最大的一条边,用这条非树边替换掉,对于替换掉每一条边后的树权值取min就是答案。严格与非严格的区别:不能相等了。所以好像只求最大值会出问题,如果一个环上有两条一样长的边,得到的结果就是非严格的。所以改进算法,倍增..._p4180

java的cp命令_"java -cp \"./bin"-程序员宅基地

文章浏览阅读9.6k次。-cp 参数后面是类路径,是指定给解释器到哪里找到你的.class文件, 写法: java -cp .;myClass.jar packname.mainclassname classpath中的jar文件能使用通配符,如果是多个jar文件,要一个一个地罗列出来,从某种意义上说jar文件也就是路径。要指定各个JAR文件具体的存放路径,相同路径有多个可使用通配符 java -cp .;c:/classes/myClass.jar;d:_"java -cp \"./bin"