【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

性能碾压 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
    • 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:0016492
    用户头像
    蔡芳芳 InfoQ主编

    发布了 781 篇内容, 共 496.3 次阅读, 收获喜欢 2749 次。

    关注

    评论 1 条评论

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

    大小单双怎样倍投绝对赚

    闵东升

    压大单小单大双小双稳赢公式

    闵东升

    赚钱导师在线一对一无需本金

    闵东升

    一天300如何在七天内赚4000元

    闵东升

    买大小单双的平台app违法吗

    闵东升

    生物芯片搅局多肽筛选!揭秘量准与禾泰健宇新布局!

    联营汇聚

    大小单双正规平台下载安卓版

    闵东升

    导师带人回血上岸是真的吗

    闵东升

    贴吧上说带人回血是真的吗

    闵东升

    网上带人回血上岸是真的吗还是假的

    闵东升

    猜大小明明50%胜率为啥赢不了

    闵东升

    200元回血一万技巧回血上岸需要多久

    闵东升

    大发最正规的单带回血导师

    闵东升

    200元回血一万技巧真实案例

    闵东升

    单双最安全的倍投方法图解

    闵东升

    倍投方案表50期倍投计划

    闵东升

    大发最安全回血计划

    闵东升

    玩大小单双有正规平台嘛

    闵东升

    大发极速大发人工精准全天计划

    闵东升

    大小单双怎么判断出长龙

    闵东升

    导师带赚钱一对一有赚的吗

    闵东升

    500本金每天盈利20详细计算表图

    闵东升

    大发一分走势规律出号口诀

    闵东升

    玩大小单双的正规平台推荐视频

    闵东升

    玩大发最厉害的回血导师

    闵东升

    带人回血上岸是什么套路

    闵东升

    网上买大小单双平台有人带包赢

    闵东升

    大发回血计划不赚包赔

    闵东升

    正规买大小单双的平台

    闵东升

    求带回血的良心导师联系方式

    闵东升

    玩大小的平台游戏有哪些软件

    闵东升

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