当前位置:首页>科技 >内容

涛思数据开源TDengine(10多万行C代码_登顶GitHub!)

2024-08-14 12:41:46科技漂亮的斑马

7月28日周日下午,刚刚过了酷暑的北京,越来越热。当编辑来到由淘思数据和CSDN举办的“TDengine和它的朋友们”的Beijing Meetup时,陶建辉

涛思数据开源TDengine(10多万行C代码_登顶GitHub!)

7月28日周日下午,刚刚过了酷暑的北京,越来越热。当编辑来到由淘思数据和CSDN举办的“TDengine和它的朋友们”的Beijing Meetup时,陶建辉正在回答观众的问题。

突然,编辑被一个二十多岁的小女孩热情地提醒,可以坐下来听了。聊了几句,得知女孩是在伦敦留学的电子工程专业毕业生,暑假来到这里做志愿者。

不仅志愿者很高大上,淘思数据的团队也是“高配”:3名博士,4名海归。他们最近获得了一个超级好消息:只有十个人的淘思数据团队在GitHub的开源TDengine中连续几天高居榜首。

那么,这是一个什么样的项目呢?是什么样的团队?团队背后的创始人是怎样的体验?创始人陶建辉亲自写了这篇文章来回答你的问题。快点读下去!

7月12日,淘思数据宣布TDengine将开源,包括核心存储引擎和计算引擎在内的10多万行C代码上传到GitHub。

两周内,GitHub上的Star数量已经超过7300,Fork数量超过1800。开发人员社区的反应远远超出了预期。应开发者要求,7月28日在北京进行了一场线下交流,现场互动非常热烈。

离线活动网站

很多人很好奇,为什么一个从来没有开发过大数据或者数据库软件的人,可以开发出物联网的大数据平台软件?

还有你是怎么想到开发这样的软件的?你创业了三次,每次都跨界了,怎么可能做到?

7月28日分享了我在创业过程中的思考和分析,供创业路上的朋友,尤其是技术型创业者参考。

2016年初,我上一家创业公司开心妈咪被收购,很轻松。但是总有很多朋友拉着我去看项目,有的想让我投资,有的想让我加入团队。

因为在智能硬件圈有一定名气,所以看到最多的就是智能硬件和物联网相关的项目。我花了很多时间思考几个项目。

第一个是菜市场的智能秤。希望通过智能秤彻底打通菜市场的信息流,打造一个不亚于美团的平台。

二是水产养殖物联网,希望自动控制投饵机,监控养殖鱼塘环境,通过物联网打通饲料、养殖、水产品的销售,形成平台;

三是电梯物联网。通过监控,系统由计划保修变为按需保修,建立了全国范围的电梯维保平台。

有好几个智能家居,但是最后没有一个打动我,让我投入进去的。因为在分析了这些项目之后,我发现他们成功的关键因素并不是我或者现有团队所具备的。

但是这些项目让我看到了物联网的前景,看到了万物互联是不可阻挡的趋势,所以一定要抓住。作为一个技术背景很强,行业资源很少的人,能在这个趋势中找到什么样的机会?

我第一反应是开发一个物联网平台,但仔细一看,从微软、IBM、甲骨文、亚马逊等IT巨头到GE、西门子等工业巨头,都有自己的物联网平台,尤其是仔细看了GE的Predix,发现我能想到的都是它做的。

放眼中国,做物联网平台的公司比较多,海尔,3一、徐工,阿里,百度等,更不用说无数创业公司了。我心里一凉,这个物联网平台永远做不成了。我要做的就是修修补补。唯一的可能就是靠行业特色和市场资源取胜,而我就是没有太多的行业背景和资源。

但是仔细看了很多物联网平台的资料,终于发现了一丝曙光,那就是数据处理。物联网平台有很多模块,但最重要的一个是数据处理,包括采集、存储、查询、分析和计算,这是整个物联网产业的共同组成部分,并且具有较低的deg

仔细一看,大部分物联网平台,尤其是国内的,几乎无一例外都是用Hadoop生态搭建的,使用的是互联网行业流行的大数据架构。收集的数据是高级Kafka,然后分流到HBase/Cassandra/MongoDB进行持久存储,Redis进行缓存,Spark/Flink进行流计算,后面是应用,大屏幕显示等等。

虽然我没有真正接触过大数据的处理,但是在了解了这些通用的大数据框架之后,我的第一反应是Hadoop太重了,至少对于物联网的大数据来说是这样。

搭建一个平台,要把各种开源软件拼接在一起。R&D和运维的效率会很低,很难保证数据的一致性。定位一个问题涉及的环节太多,不适合私有化部署。

抽象出各种物联网场景,我总结了物联网数据的十二个特征:

数据是时间序列的,而且必须有时间戳;

数据是结构化的;

数据很少被更新或删除;

数据源是唯一的;

相对于互联网应用,多写少读;

用户关注的是一段时间的趋势,而不是某个特征时间点的数值;

数据有保留期;

数据的查询和分析必须基于时间段和地理区域;

除了存储查询,还经常需要各种统计和实时计算操作;

流量稳定且可预测;

经常需要一些特殊的计算比如插值;

数据量巨大,一天可以收集100多亿条。

总结了这些特点后,我恍然大悟,用Hadoop等开源软件来处理物联网数据是完全错误的。

物联网数据就像日志数据一样,几乎没有更新操作的可能,所以在数据库中实现事务处理完全是多余的;数据是顺序的,时间戳自然可以作为主键,所以不需要复杂的索引结构。物联网数据是结构化的,和HBase、Cassandra一样用Key-Value存储,大大降低了计算效率和存储效率,所以应该采用结构化存储。物联网数据的冷热程度是由时间决定的,刚采集的数据是最热的,而不是用户的点击决定的。

因此,通过简单的FIFO内存管理,可以很好地实现高效缓存,Redis根本不需要;从设备的角度来看,物联网数据是一种数据流。实现滑窗的流量计算不是最自然的事情,没必要用Spark这么复杂的发动机。对于数据分区,简单的按设备分区、按时间段分区就可以轻松解决,完全不需要复杂的分区机制;物联网的数据流是相对稳定的,物联网的设备必须具备缓存能力,所以我们完全可以抛弃Kafka suites,实现简单的消息队列和数据订阅来满足需求。

后来发现有时间序列数据库。马上看他们的文档和代码,发现他们利用了时间序列数据的一些特性,但还是没有充分利用,仅仅定位为数据库。

后来了解到业内有实时数据库,发现这些实时数据库都是古董级的产品,基本都是在Windows上开发的,价格昂贵,也没有标准的SQL。几乎没有横向扩展,几乎没有大数据分析能力。完全无法应对日益增长的大数据量和大数据分析需求,迟早会被淘汰。

我分析完之后非常兴奋,觉得自己找到了一个空白点。但是我有能力自己开发这个产品吗?深思熟虑之后,我还是很激动。

2008年,我创办了何新,除了推送,推送平台的一个重要模块就是消息队列。2009年,我们开发了一个具有高可靠性和持久存储的分布式消息队列。每部手机需要推送的消息都放在一个队列里。物联网的消息队列和时间序列数据有区别吗?不完全是。

一个是非结构化的,一个是结构化的;一个是简单的进出,但另一个需要分析计算;在系统架构设计上两者没有太大区别。

考虑到一定要设计成分布式系统,由于多年的通信设备研发背景,对它比较熟悉。因此,我应该有我需要的知识和技能,我多年积累的R&D经验都可以派上用场。

所以我很快定位了我要做的产品,那就是物联网大数据平台,它要集成时序数据库、缓存、消息订阅、流计算等一系列功能,一站式解决物联网大数据问题,从而大大降低系统开发和维护的复杂度和成本。

前两次创业都是2C产品,让我养成了追求简单和完美的习惯。我当即决定采用SQL接口,通过JDBC接口可以和很多第三方工具无缝集成,安装部署要一键完成。目的是方便开发者使用,完全没有学习成本。

在研究了物联网数据的特点后,我想到了两个技术创新。一种是“一器一表”的数据模型,大大提高单个设备的数据插入和查询效率。另一种是对每个表进行静态标记,将静态标记数据和收集的动态数据完全分开存储,解决多表聚集查询问题。

明白这一点后,2016年底,我快50岁的时候,我决定自己写程序。为什么不找个人?几个原因:

我做技术多年,有一个心结,就是希望自己写的代码能被无数人使用;

开发很难,尤其是分布式。如果我自己不完成主框架,不把存储引擎写好,团队效率会很低。

这个产品的核心是技术。如果不大量参与研发,公司会很危险。

当我准备开始写的时候,我跟我老婆说,如果我写的存储引擎在数据插入和查询速度上不比其他数据库好五倍,那就认为我又写了一个有趣的程序。

如果能达到五倍以上,那我就再折腾一次。因为在我眼里,技术产品,要打败市场上现有的厂商,如果没有五倍以上的优势,完全没必要去做,因为对方有了人,有了钱,有了客户群,你凭什么和对方拼。

好在我两个月写了18000多行代码,充分证明了凭借我的两项创新,在性能上可以秒杀市场现有产品,所以才有了今天的TDengine。

淘思数据团队,左三是陶建辉的儿子(一个00后),他也为TDengine项目做出了贡献。

底层基础软件开发和推广难度大。即使功能和性能比现有产品好一个数量级,客户还是会以安全稳定为由拒绝你。所以我觉得应该把最核心的代码和详细设计用开源的方式曝光出来,让更多的程序员参与进来,建立一个开发者社区。

一个活跃的开发者社区,可以让各大客户觉得所选择的技术不会被抛弃,不会有重大的安全漏洞,可以放心使用。

另一方面,许多中小型企业客户的数据量较小,技术选择较多。如果他们不开源,他们会选择一些其他的开源解决方案。

你一开始就赚不到他们的钱,为什么不开源让他们免费使用呢?不仅要让大家免费使用,还要组织一个庞大的团队去运营,和各种背景的开发者互动,解答他们的疑问,给他们技术上的支持和帮助,希望他们能参与进来,有荣誉感和自豪感,让他们发自内心的去传播。

同时,通过开源,可以快速得到市场的反馈,了解市场需求。这是好事,所以我们毫不犹豫的决定开源。

大数据平台、物联网平台、数据库有很多主流产品,很难挑战。专门为物联网打造的大数据平台还没有,TDengine是全球首创。

物联网市场高速增长,收集的数据量呈指数级增长。五年内,全球90%的数据将是物联网类型的数据,这个细分市场肯定会成为一个ma

只要韬思数据团队继续努力,采取开放合作的态度,充分利用开源构建技术生态,与全球的系统集成商、独立软件开发商、渠道合作,积极构建商业生态,那么TDengine一定有一天会成为独角兽。

就像丘吉尔的话,“成功不是最终的,失败不是致命的,重要的是继续下去的勇气”,继续跑吧,朋友们!

声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们

Top