物联网、车联网、工业互联网大数据平台,为什么推荐使用TDengine?

物联网、车联网、工业互联网大数据平台,为什么推荐使用TDengine?
物联网、车联网、工业互联网大数据平台为什么推荐使用TDengine大数据有很多处理工具最流行的当属Hadoop系统。Hadoop生态包括HDFS, HBase, Hive, YARN, Storm, Spark, Zookeeper等系列工具。整个大数据平台中往往还有Kafka, Redis等类似的消息队列、缓存软件。这些软件较好的解决了通用大数据问题但是物联网、车联网、工业互联网等场景的数据有其独特性如果充分利用这些独特之处可以推出一个专有的物联网大数据处理平台数量级的提升数据处理能力并减少研发和运维成本。刚刚开源的TDengine就是这样的产品。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后台定时的拉起查询计算提供了一简化的流式计算可以做各种实时的统计聚合操作这样对于一般的物联网场景不再需要使用Spark等类型的流式计算软件。因此TDengine提供了大数据处理所需要的数据库、缓存、消息队列、流式计算等系列功能。使用TDengine,在物联网大数据平台中完全可以抛弃掉Kafka, HDFSHBaseSpark, Redis等软件大幅简化大数据平台的设计降低研发成本大而且系统将更加健壮数据的一致性更有保证。4: 强大的历史数据分析能力TDengine设计上让用户对历史数据和实时数据的处理完全透明不区分历史数据和实时数据。用户只需要在SQL语句里指定时间段TDengine自动决定是否从内存、从本地硬盘还是从网络存储上获取数据,这样应用的实现变的简单。每个设备的数据按块存储而且每个数据块都已经做了预聚合比如和、最大、最小值等这样执行一个设备一个时间段的各种统计操作有可能不用扫描原始数据就能计算出来性能大幅提升。即使有的计算需要扫描原始数据但由于数据是一块一块连续存储的读取速度远超通用数据库计算分析速度也是大幅提升。而且由于结构化存储解压后不用做任何解析读进内存就可以直接计算相对于NoSQL数据库计算分析速度也是大幅提升。TDengine定义了一新的概念超级表用以描述同一类型的设备。给每个设备或表打上静态标签后就可以用标签值筛出一部分满足过滤条件的设备然后对这一部分设备的数据进行聚合。TDengine还设计了一特殊的机制对于多个设备数据聚合仅仅需要扫描一次数据文件这样大幅减少IO操作次数提高聚合计算速度。为提高易用性用户可以通过TDengine自带的shell, 或者Python, R, Matlab等工具直接进行各种Ad Hoc的查询或分析。TDengine用来做物联网、车联网、工业互联网的数据仓库会是一理想的选择。5: 零运维管理零学习成本TDengine安装包不到2M下载、安装几秒钟搞定。对于企业版把一台机器加入集群一条命令就能完成而且数据库是实时自动备份不用手动分库分表运维极其简单。系统使用标准的SQL支持C/C, JavaPython,Go等各种语言开发接口支持JDBC支持RESTful接口。使用起来象是在使用MySQL,几乎不需要学习成本。6: 与第三方工具无缝集成目前TDengine在数据采集侧已经支持Telegraf, Kafka后续还将支持MQTT,OPC等。在应用侧已经支持Grafana可视化工具支持Matlab,R以及一些BI工具。因为TDengine支持JDBC接口很容易实现与第三方工具的接口可以预见更多的工具将会被无缝集成。对于运维监测场景不用写任何代码只要将开源的Telegraf, Grafana与TDengine配置好就可以迅速搭建一个高效的运维监测平台。7: 开源TDengine由北京涛思数据技术有限公司自主开发没有依赖任何第三方软件。研发时间已经超过2年而且已经有一批付费商业客户涉及电力、数控机床、智慧城市、车辆网等多个领域客户的使用反馈都很不错。可喜的是涛思数据将TDengine的核心存储、计算引擎完全开源。TDengine的社区版完全能满足一定规模的物联网、车联网、工业互联网的应用需求。因为涛思数据核心团队就在北京相比其他开源软件应该能够给中国的软件工程师提供更好的本地服务。结语TDengine在易用性、功能上、性能上已经远超其他时序数据库。采用TDengine物联网、工业互联网、运维监测的大数据平台的搭建变得极为简单具备超强性能不仅降低硬件成本、运维成本还能大幅降低对研发和运维人员的需求。因为是开源免费的而且安装包不到2M不妨访问tdengine.com下载一个试试。