HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

性能碾压 MySQL、ClickHouse 等,国产开源大数据平台 TDengine 全面剖析

  • 2019-07-28
  • 本文字数:7424 字

    阅读完需:约 24 分钟

性能碾压MySQL、ClickHouse等,国产开源大数据平台TDengine全面剖析

数据读取和写入性能碾压 MySQL、Cassandra、InfluxDB、Open TSDB 和 ClickHouse,同时将数据库、消息队列、缓存、流式计算等功能融合一起,应用无需再集成 Kafka/Redis/HBase/Spark 等软件,TDengine 是如何做到的?


近期,IDC 对物联网支出作出预测,2019 年全球物联网支出将达到 7450 亿美元,IDC 报告表明,各行业的物联网解决方案支出占比持续提升,物联网的预期增长仍然很高。物联网的下一章刚刚开始,在涛思数据创始人陶建辉看来,未来 5 年内,世界上 90%的数据都会是物联网采集的数据,于是他们打造了 TDengine。这是一个专为物联网、车联网、工业互联网、IT 运维等设计和优化的大数据平台。除了高性能的核心时序数据库功能,TDengine 还提供缓存、数据订阅、流式计算等功能,旨在最大程度地减少研发和运维的工作量。从 7 月 12 日在 ArchSummit 全球架构师峰会(深圳站)2019宣布开源至今两周时间,TDengine开源项目在 GitHub 上已经收获了超过 6800 个 Star,Fork 数超过 1700,在业内引发热议。


InfoQ 记者有幸在 ArchSummit 全球架构师峰会(深圳站)2019 现场采访到了涛思数据创始人陶建辉,听他分享 TDengine 性能做到 Hadoop 十倍背后的技术创新、TDengine 开源的初衷以及未来对 TDengine 商业化推广和开源社区的规划。


以下是视频采访的全部内容,为方便读者查看,视频下方也附上了文字内容。


00:00 / 00:00
    1.0x
    • 3.0x
    • 2.5x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    InfoQ:您好,非常感谢您参加 ArchSummit 全球架构师峰会(深圳站)2019 的视频采访,首先请您做一下简单的自我介绍,包括您的工作经历和创业经历。


    陶建辉:大家好,我叫陶建辉,我是涛思数据的创始人。今天很高兴来到现场与大家互动。我是 86 年考上大学,94 年到美国留学,97 年开始在芝加哥摩托罗拉工作,后来又到了 3Com 公司。我在 2008 年回到北京创业,前面做过两家创业公司,一个叫和信,做的是手机实时消息推送服务,后来这家公司被联发科收购了;13 年我又重新创业,做了一家做智能硬件的公司,叫快乐妈咪,主要是做母婴健康大数据服务平台,这家公司在 16 年年初被太平洋网络收购了。然后我休息了一年。我觉得物联网一定会发展起来,随着数据量越来越大,需要一个新的方式来处理物联网采集的海量数据,这是一个机会。再结合我前面那家创业公司的经验,我觉得我还没老。那时候,我正好 49 岁,我觉得我可以自己做,而且我认为现在大家的处理物联网数据的方法不太合适,我找到了一种更好的创新方法来存储和处理这些物联网数据,因此我就自己一个人写了两个月代码,来证明我的想法是对的。然后我就开始融资、组建团队,涛思数据就是在 17 年 5 月份正式成立的。


    InfoQ:所以 TDengine 这款产品一开始的定位就是专门为物联网而设计的吗?


    陶建辉:物联网是一个很宽泛的概念,包含了车联网、工业互联网、IT 智能运维监测等,只要通过各种机器设备传感器采集数据,都属于这个范畴。因为我上一家创业公司做的是智能硬件,需要采集各种各样的数据送到云端,做健康数据的分析。后来我又了解了很多物联网项目,包括工业互联网、智能硬件、智能家居等项目,这里面共性的东西实际上就是数据的处理,怎么存储、怎么高效地查询计算和分析。涛思数据这两年多的时间,一直在做的就是这样一件事情。


    InfoQ:TDengine 是什么时候正式对外推出可用产品的?从 TDengine 开始研发,到推出对外可用的产品,一共花了多长时间?


    陶建辉:我们第一款产品真正可以交给用户使用是在 2018 年 8 月份,从一开始研发到对外推出可用的产品大概花了一年半的时间。


    InfoQ:在 TDengine 的研发过程中,团队遇到最大的困难是什么?这背后有什么故事可以跟我们分享吗?


    陶建辉:最大的困难就是技术,技术挑战相当大。我们这款产品看上去很简单,不就是把各种采集的数据存储起来再做查询,实际上因为这属于底层软件,所以它的技术挑战很大。比方说我们经常要做一百亿条记录的插入、查询测试,这一百亿条记录如果中间丢了一条,你要找出丢的是哪一条、为什么丢,涉及的模块很多,技术挑战相当大。


    我可以分享一个我们在 TDengine 开发过程中的小故事。因为我自己在做这个产品,它主要强调性能和易用性这两个方面。如果性能不够好,那它就没有代替其他软件的可能,我就举一个性能的例子。有一次我们团队一个工程师,改了一行代码,他改的那行代码还是我写的,大家都没有意识到,这行代码让整个产品的性能下降了一半都不止。整个团队都急死了,花了整整一天时间,回滚代码查看,最后才找出原因并修复了问题。


    InfoQ:在性能测试报告中,你们对比了 TDengine 和 MySQL、ClickHouse 等开源数据库产品的读写性能,这是否意味着这些产品是 TDengine 的对标对象?


    陶建辉:虽然 MySQL、ClickHouse 这些是大家更熟悉的开源数据库产品,但我们真正对标的是测试报告上写的 InfluxDB、OpenTSDB,包括阿里的 HiTSDB 等产品,这些才是我们真正对标的产品。但是也不完全公平,因为这些产品只是一个数据库。TDengine 的核心功能也是个数据库,但除了数据库之外,TDengine 还支持很多其他功能,比如说大数据处理所需要的缓存、消息队列、流式计算等一系列功能。我们的性能测试报告针对的是数据库这项功能,因为数据库测试相对标准化,一般看的就是插入速度、查询速度,所以我们基于此做了对比。目前 TDengine 在大数据领域还没有真正完全对标的对象,我们是全球第一个真正做物联网大数据平台的产品。这也是为什么我们不把自己叫做数据库的原因。


    InfoQ:官网上对 TDengine 的介绍中提到了“超融合”,指的是将大数据处理需要的消息队列、缓存、数据库、流式计算、订阅等功能融合在一起。但目前大数据生态中普遍是不同的产品负责不同的功能、各司其职,很少有集大成的产品。能否详细谈谈为什么要做“超融合”?


    陶建辉:为什么要做“超融合”呢?目前通用的大数据平台,往往要集成五六个甚至七八个软件,对于研发者来讲挑战很大,因为你不只要学一个软件、掌握一个工具,而是要同时掌握好多个工具。对于企业管理人员来讲,连招人都很困难。而且每个开源软件,你认真细究都会出问题。如果我们把所有这些功能集成在一起,只需要一个软件就能提供所有功能,就能够把开发的难度大大降低。而且因为我们使用的是标准的 SQL 接口,只要学过计算机的人,几乎没有不会用的,因此我们就让研发和维护都变得极其简单,这点改进是非常重要的。同时,TDengine 也有它特别的地方,它只面向物联网行业。它不适合做舆情分析,不适合做用户画像,不适合好多通用的互联网行业应用场景,我们只能做物联网、车联网、工业互联网、运维监测这些场景,比如风力发电、国家电网物联网的建设等。


    InfoQ:能不能再谈一谈怎么实现“超融合”,技术上可以分为哪几块?


    陶建辉:数据库插入数据的时候,一般需要先进入消息队列缓存起来。而物联网的数据很特殊,它实际上非常类似消息队列,因为物联网采集的数据是按照时间顺序源源不断发过来的,它本身就是一个队列。第二点,物联网最重要的特点就是要看实时状态,因此我们会把每个设备的数据都直接缓存在内存里一段时间,缓存的时间会根据它采集的时间长度定。而互联网应用的缓存不是由这个决定的,它的缓存是由用户行为决定的,比如说这条微博点击的人特别多,就要一直缓存着。但物联网数据不是这样的,对于物联网数据,大家最关心的是刚采集到的数据,已经过去几个小时或几天的数据,大家都不在乎。因此我们巧妙地利用了这些特点实现了消息队列和缓存。另外还有流式计算,因为物联网数据本身就是流式的,我们能够顺其自然地推出流式计算,当然最后这些数据也要存起来,数据库也要能做历史数据的分析,这都是数据库本来就擅长的。


    InfoQ:从性能测试结果来看,TDengine 在读写性能、集群水平扩展性能等各方面表现都非常惊人。能否谈谈你们在技术上做了哪些创新?


    陶建辉:主要是我们的数据模型不一样。我们的数据模型要求对每个采集点,或者每个采集设备单独建表。比如说你有一千万个智能电表,它就建一千万张表。单独建表的好处是什么?单独建表之后,每个设备采集的数据在内存里或者硬盘上,就会是一块一块连续存放的。当然,不可能完全无限连续,但可以做到 4K、16K、64K 这样连续。这样一来,读数据的时候就会读完整的一块。因为物联网还有一个特点是从来不关心单个点的值,而更多关心的是整个趋势。因此物联网场景下做查找的时候,往往是查 5 分钟的数据。但 5 分钟的数据又包含很多点,因此我们这种设计,就能够让查询速度大大加快。按照我们的数据模型设计,一次读取可能可以读一千条记录出来,而按照以前的数据库设计,如果要读一千条记录可能就要一千次 IO 操作,一定会慢。


    那么写操作为什么我们也能够做到很快?对于物联网设备来讲,我们设计成一个设备一张表以后,每写一张表其实就是一个设备在写。因为物联网的数据,比如说车或者智能电表、智能手环,数据一定是某一个设备产生的,一张表对应的数据生产者是唯一的,同时只会有一个设备在写这个表,从技术上来看就很简单了。另一方面,物联网数据是按时间顺序来的,这就意味着它是一个追加操作,所以写操作自然就很快。


    但是我们这种数据模型,也有另外一个问题,那就是表的数量太多了,比如说一千万个智能电表,那就一千万张表。这些表如果只是单独看,那我们这个方法已经足够好了。对单个电表或者单个汽车的数据的插入、查询速度,都不可能有比我们快的。但是如果要做聚合,那就很麻烦。因此,我们还有另外一个很重要的创新,叫超级表。超级表指的是将同一类型的设备看作一个表,每个表可以带标签,比如喜来登酒店 11 楼某个房间的电表,聚合的时候只要统计 11 楼的十几个电表,或者整个喜来登酒店一百个电表,查询起来还是很快的。如果没有这个超级表的创新,我们的产品也不太可能受欢迎。


    InfoQ:TDengine 在高可靠性方面做了哪些工作?其可靠性可以做到什么程度?


    陶建辉:我们研发 TDengine 的时候是基于一个假设,那就是任何软件、任何硬件都是不可靠的,也就是说任何软件不可能没有 Bug,任何硬件不可能不出问题。基于这个假设,我们就要做一个多副本的分布式系统,数据都可以丢,硬盘都可以换,甚至我们做到了什么程度呢?我们支持热插拔,硬盘坏了可以当场换,甚至 IDC 机房迁移的过程中,数据库仍然可以继续工作,做到了这种程度。


    在可靠性方面,我们主要用到了业内公开的一些 NoSQL 分布式数据库的方法。当然我们也充分利用了物联网数据的特点,才能够做得足够好。我们坚信物联网一定会发展起来,可能不到五年或五年左右的时间,世界上 90%的数据都会是物联网类型的数据。


    InfoQ:与现有的时序数据库产品相比,TDengine 的优势是什么?


    陶建辉:TDengine 的优势是高性能而且简单易学,它的安装包只有 1.5MB,从下载到安装成功运行不会超过 5 秒钟,这是现在没有任何大数据软件能做到的。但我们跟现有的大数据产品相比当然也有弱点,我们的产品仅仅开发了两年时间,生态还有待完善,而 InfluxDB 数据采集接口和应用软件的接口已经有很多了,这是我们后面要长期努力的目标。


    InfoQ:TDengine 做到了高性能和易用性,但技术没有完美的技术,TDengine 是否在其他方面做了平衡和妥协?


    陶建辉:我们做的妥协是什么?第一个,刚才我一直强调,我们是专门做物联网的数据,做不了微博的数据,做不了微信、电商的数据,这些都做不了,我们真正做的是物联网、车联网,这是一个。第二个妥协是,从技术的角度来看,我们是采用结构化方法实现的,这意味着开发者需要自己定义表的结构。而像 InfluxDB、OpenTSDB 是不需要定义表的结构的,因为他们都是 NoSQL,不用定义 Schema,开发者爱怎么写数据就怎么写,如果已经习惯了这种做法可能就会觉得 TDengine 不好用。但如果你历来都只是用 MySQL、Oracle 这种结构化数据库,那就没有问题。但结构化的方法在物联网、车联网行业并不是个问题,这是我们在准备开发之前就决定的。因为物联网数据都是由硬件设备采集的,硬件的数据格式是固定的,一般很少改动,除非固件更新,但固件更新的可能性很小。而互联网应用开发则需要频繁迭代和更新,变化太大,所以它用 Schemaless 这种不需要定义结构的方法就是很合适的。但物联网、车联网、工业互联网的数据格式可能一辈子都不更新,所以结构化就不是很大的障碍。


    InfoQ:现阶段大部分企业都已经搭建了自己的大数据平台,让他们整套切换到一个新的大数据平台并不现实,TDengine 是否可以与已有的大数据生态兼容?对于 TDengine 的落地应用和推广,您是怎么考虑的?


    陶建辉:基础软件切换的成本极其高,最终还是要看这个企业有没有遇到真正的难点和痛点,现在我们付费的客户都是已经遇到了难点和痛点,他觉得非得抛弃眼前已有的大数据平台。那么难点和痛点在哪里?第一,我们有一个做车联网的客户,目前已经拥有 PB 级别的数据,查历史数据几乎读都读不出来,他们现在就用 HBase 层的,他们老板找他,无论怎么搞都要查出来,哪怕几秒钟也行,但问题是几秒钟都查不出来,他非得解决这个问题,就成了我们的客户。还有另外一个客户,他们的数据量已经很大了,他们觉得成本太高了,而我们能够把他们的总拥有成本降到原来的 20%都不到,比如原来需要十台服务器,现在一台就够了。因为 TDengine 的存储做得很好,以前 10 个 T 的数据,到我们这里变成一个 T 了,那这肯定就要换,因为能省很多钱。还有一类是什么?因为大数据系统,尤其是 Hadoop 这个体系已经深入人心了,但其实它在很多场景下数据量并不大,但是 Hadoop 要做一套私有化部署的时候,可能要装 HDFS、HBase、Kafka 等一系列的东西,这个成本真的高,不是机器的成本,而是安装部署维护的成本极其高。那如果我们能够提供一个统一融合的解决方案,只要一个小软件全部搞定,就能大大简化安装部署维护的难度,那么客户就会有足够的动力来换。同时,对于已经自建大数据平台的企业,我们也会提供一些工具,比如数据迁移的工具,甚至我们会兼容一些现有的接口,对于用户来说接口和以前可能一模一样,只要换个 IP 地址就行了。


    InfoQ:目前已经有客户在试用或在实际业务中使用 TDengine 了吗?


    陶建辉:我们试用的客户有好几十家了,而最终买单的客户马上就超过十家,包括车联网、电力、数控机床、智慧城市等不同行业场景的客户。


    InfoQ:当前 TDegine 还存在哪些问题有待解决?


    陶建辉:应该不算是问题,而是一些需要不断改善的地方。其中一个是我们的流计算做得还不够,比如说我们现在支持简单的滑动窗口,未来需要把它变成事件驱动的流计算,然后我们还要支持用户自定义函数。等我们把用户自定义函数和事件驱动完善后,TDengine 会在物联网领域发挥机器大的作用,数据清洗、规则引擎都可以用一套软件完全搞定,很多工具都不再需要了。


    InfoQ:对于 TDengine 接下来的研发重点和推广部署,您还有什么进一步的计划?


    陶建辉:今天我们就是来宣布 TDengine 开源的,开源是我们的一个推广方式。当然我们确实越需要开源,尤其是要把我们最核心的代码开源出来。就像刚才讲的,为什么 TDengine 能够比其他产品快一二十倍?如果你不相信,你可以去看我们开源的源代码,看完之后你就知道,这个代码保证快。在中国,很多用户都不愿意付费,都希望用开源软件,那我们就开源给你用,这是我们的一个推广方式,我们希望把这个社区经营起来,从而打造品牌、扩大影响力。另外一方面,我们也非常欢迎其他开发者加入进来共同为这个项目做贡献,比如说我们需要各种数据采集接口,开源之后可能就会有人参与进来一起贡献代码。


    另外一方面,我们除了开源版之外,还会有企业版。企业版是要收费的,它是一个高可靠可扩容升级的版本,并且会提供专业的一对一服务。我们还有第三个版本就是云服务版本,我们会将这个版本放在阿里云、AWS 等不同的云平台上面,企业可以直接购买我们的服务,按照用量和使用时长来收费。


    InfoQ:现在 TDengine 已经在 GitHub 正式开源,你们采用的是什么样的开源许可?


    陶建辉:我们采用是 AGPL 许可,这个开源许可意味着,只要你使用了我们的开源软件,你也必须开源。


    InfoQ:作为一款开源产品,肯定绕不开开源和商业盈利模式的问题,TDengine 开源之后的盈利模式,您是怎么考虑的?


    陶建辉:我们开源的技术一定会尽最大的努力去维护,但我们还有企业版,就像我们的竞争对手,比如说 InfluexDB,我们的模式几乎跟它一模一样,都是有开源版、企业版和云端版。像 MongoDB 也是这样,有企业版、社区版和云端版本。


    InfoQ:但其实现在 MongoDB 跟云厂商之间也存在一些纠葛,那你们未来和云厂商之间的关系是怎么考虑的?


    陶建辉:当然,我们希望跟云厂商采取合作的方式,但你完全免费地拿这个东西在云上提供服务,我们的 AGPL 许可是不允许的。不可能我们整个团队辛辛苦苦开发的代码,直接被你拿去赚钱,这是整个开源社区和云厂商之间最大的问题。比如说 MySQL 这么流行,结果云厂商什么贡献都没做却从 MySQL 赚了很多钱。我们所使用的 AGPL 许可和 MongoDB 搞的服务器端公共许可证(SSPL)都是来解决这个问题的,包括 Redis,最近大家修改开源协议的原因都是为了避免这样的情况发生。


    InfoQ:目前 TDengine 跟国内云厂商已经有一些合作了吗?


    陶建辉:还没有。但我的信号十分明确,肯定不能让他们免费使用我们的开源代码,他们必须有贡献。等我们的开发者社区和用户群慢慢壮大起来,我相信一定能走到合作的一天。其实开源和云不是天生敌人,而是可以互利互赢的。


    InfoQ:那么下一步 TDengine 的开发者社区和生态,您打算怎么去推进?


    陶建辉:这是下一步整个公司的重心,我们新上线的网站里面会有博客,我们会在 GitHub 上、Twitter 上、微博上、Stackoverflow 上,各种技术论坛与开发者互动,我们也会参加比如像 ArchSummit 架构师峰会这样的开发者大会,我们也会自己组织活动,线上线下一起来推动社区的发展。


    采访嘉宾介绍:


    陶建辉,涛思数据创始人,1986 年考入中国科大,1994 年到美国印第安纳大学攻读天体物理博士,曾在美国芝加哥 Motorola、3Com 等公司从事 2.5G、3G、WiFi 等无线互联网的研发工作,国际顶尖无线数据专家。2008 年回到北京创办和信,专注移动互联网 IP Push 和 IP 实时消息服务,2010 年和信被台湾联发科收购。2013 年再度创业,创办快乐妈咪,专注母婴智能硬件和母婴健康服务,2016 年初快乐妈咪被太平洋网络收购。2017 年 5 月创办涛思数据,专注时序空间大数据的实时高效的处理(存储、查询、计算等),其产品 TDengine 比其他业内标杆能好 10 倍以上,可广泛运用于物联网、车联网、工业大数据、金融等领域。


    2019-07-28 14:0017028
    用户头像
    蔡芳芳 InfoQ主编

    发布了 798 篇内容, 共 548.5 次阅读, 收获喜欢 2788 次。

    关注

    评论 1 条评论

    发布
    用户头像
    标题党,内容还比较中肯
    2020-10-10 10:06
    回复
    没有更多了
    发现更多内容

    Tiger DAO VC:DAO组织风险投资时代来临

    西柚子

    java高级用法之:JNA中的Function

    程序那些事

    Java Netty 程序那些事 4月月更

    YonMaster开发者认证线上赋能培训班定档4月18日

    YonBuilder低代码开发平台

    STM32+华为云IoTDA,带你设计一个属于自己的动态密码锁

    华为云开发者联盟

    stm32 iotda 华为云IoT 密码锁 Qt框架

    Tiger DAO VC:将你的风险投资变成DAO组织协同

    小哈区块

    Spring Cloud入门教程-使用Hystrix Dashboard 监控熔断器的状态

    爱好编程进阶

    Java 面试 后端开发

    TASKCTL调度服务(主/从)代理节点的启动和停止

    敏捷调度TASKCTL

    数据仓库 kettle 调度引擎 ETL 调度任务

    Spring(十)

    爱好编程进阶

    面试 后端开发Java

    小程序能当成 App 吗?

    FinClip

    《零基础》MySQL 连接(四)

    爱好编程进阶

    Java 面试 后端开发

    RadonDB MySQL on K8s 2.1.4 发布!

    RadonDB

    MySQL 数据库 Kubernetes 高可用 RadonDB

    macOS系统病毒常见的两种传播途径

    火绒安全

    macos 终端安全 勒索病毒 蠕虫

    WeTest平台产品&技术合作伙伴招募

    WeTest

    【并发编程系列10】阻塞队列之SynchronousQueue

    爱好编程进阶

    Java 面试 后端开发

    来也科技收购Mindsay背后:新旧势力交锋智能自动化备受关注

    王吉伟频道

    RPA 收购 机器人流程自动化 来也科技 Mindsay

    jackson学习之十(终篇):springboot整合(配置类)

    程序员欣宸

    Java web 4月月更

    SpringBoot+WebSocket实时监控异常

    爱好编程进阶

    Java 面试 后端开发

    SpringBoot系列:RabbitMq讲解与示例

    爱好编程进阶

    Java 面试 后端开发

    【源码分析设计模式 10】SpringMVC中的建造者模式

    爱好编程进阶

    Java 面试 后端开发

    简单实用的redis分布式锁

    Rubble

    4月日更 4月月更

    SSM 最简单最全面的整合Spring+SpringMVC+Mybatis三大框架 快速搭建

    爱好编程进阶

    Java 面试 后端开发

    【并发编程系列1】Thread生命周期及interrupted()作用分析

    爱好编程进阶

    Java 面试 后端开发

    thinkphp5框架新建页面相关规范详解

    CRMEB

    阿里云视频云人脸生成领域最新研究成果入选CVPR2022

    阿里云视频云

    计算机视觉 视频编码 CVPR 视频云

    聚焦供应链布局,新能源汽车企业重塑产业核心竞争能力

    数商云

    数字化转型 供应链 新能源汽车

    “东数西算”超级工程利好云计算,多云管理背后却暗藏汹涌!

    行云管家

    云计算 多云 东数西算 云管

    云图说丨叮咚,您有一份短信通关攻略待查收

    华为云开发者联盟

    短信 签名 消息 签名模板 MSGSMS

    2022年提高远程工作效率的三大实用技巧汇总

    行云管家

    远程办公 居家办公 办公软件

    Vue 学习笔记(3)路由的基本使用 结合 SpringBoot

    爱好编程进阶

    Java 面试

    “双碳”下的建筑业:未来10年必须重视这5大方向

    WorkPlus

    计算机存储层次简析

    懒时小窝

    计算机基础

    性能碾压MySQL、ClickHouse等,国产开源大数据平台TDengine全面剖析_大数据_蔡芳芳_InfoQ精选文章