避免创业的大忌,我为何给 TDengine 只选择了集群、高性能与 SQL 支持三大特点?爱倒腾的程序员关注共 3809字,需浏览 8分钟 ·2022-03-03 20:33 有人在知乎上提问:“作为国产开源的时序数据库,TDengine 的哪些优点最吸引你?”。这促使我将自己对一些问题,包括创业本身的思考整理出来,分享给大家,希望能给众多研发同学和创业者带来一些启发。当我在 2016 年底开始启动 TDengine 这个项目,瞄准时序数据库这个方向时,市场上已经有很多时序数据库,包括 InfluxDB, OpenTSDB, TimeScale, Kdb, Prometheus, RRDTool, Graphite 等。在传统行业里,有实时数据库,比如 PI, iHistorian 等。那如果我再做一个,到底有什么优势?怎么做出差异化,怎么推广它?作为一个创业者,是必须认真思考的。我下面从几个点来分析。 1:分布式从 2016 年底到现在,大部分时序数据库都不是分布式的,换句话说,它们不支持水平扩展。即便是 InfluxDB,也只有企业版支持集群,开源版是不支持的。而传统实时数据库更是没有一个支持水平扩展,最多是双机热备。但是随着物联网、车联网的高速发展,IT 基础设施规模的增大,数据的采集量越来越大,单机是没有办法解决问题的,底层数据库必须具有水平扩展能力。 很多企业使用的是开源时序数据库的单机版,后续为了应对海量数据的处理,只好自己投入人力物力,在单机版的基础上,开发自己的 Proxy,对数据进行分片处理。对于数据写入,这种方法简单而且有效。但是对于查询,往往牵涉多个节点,那么 Proxy 就要做各种查询的聚合,因此开发的工作量很大。有些公司为了避免麻烦,就选用 OpenTSDB,因为它把分布式版本也开源了。 从使用的角度来看,OpenTSDB 底层的存储引擎用的是 HBase,安装维护极为复杂,存储压缩性能不够,查询效率也很低,不是一个优秀的产品。但它仍然有相当多的用户,这唯一的原因就是由于它支持分布式,可以水平线性扩展。因此,在 2016 年底,整个 TDengine 的设计从第一天起,就是支持分布式的。为了便于更多使用开源版本的用户用得更好,在 2020 年 8 月,我们将 TDengine的分布式版本开源了。分布式版本开源后,TDengine 的用户量持续增长,全球安装实例数已经超过 10 万,每天新增实例都在 200 以上,这是一个相当可观的数字。这证明了我们将 TDengine 分布式版本开源是非常明智的决定。 2:高性能时序数据及时序数据的应用有其典型特点(详细请看官网 www.tdengine.com 上的博客 ),如果充分利用时序数据的特点,我们可以将数据写入和查询性能大幅提高,数据压缩率也能大幅提高。 我之所以在 2016 年决定开发 TDengine,其中一个核心原因是我认为 InfluxDB 并没有充分利用时序数据特点。如果我充分利用,就能在性能上碾压它。在我仔细研究后,我提出来“一个数据采集点一张表”的设计,让一个采集点来的数据按照时间顺序一块一块的存,并且使用列式存储。这样就会导致写入变成简单的追加操作,而且一次读的 IO 操作就能把一个数据采集点的数据点成片读出。而时序数据的查询分析往往是一个时间段,数据命中率一下提高很多,这样导致查询效率极其之高,而且压缩率也会极其之高。同时我提出“超级表”概念,来解决多个数据点数据高效聚合的问题。通过标签将需要聚合的数据采集点先过滤出来,大幅减小需要扫描的数据集,从而大幅提升聚合速度。 那么性能重要吗?毫无疑问非常重要,因为如果用户不关心性能,那选择通用数据库来处理时序数据就可以了。如果都是时序数据库,用户当然也会选择性能或效率更高的产品。因此从研发的第一天起,我和整个团队一直在追求极致的性能。 3:SQL 支持任何一款新产品,都有入门门槛。降低门槛最好的方法就是不改变用户习惯。SQL 是全球最流行的查询语言,学过计算机的人都会用 SQL 写查询语句。时序数据库并不新鲜,已经有相当长的历史,但相当多的时序数据库或实时数据库都有自己的查询语言,比如 InfluxDB, OpenTSDB, Prometheus 等都有自己的查询语言,这样大大增加了学习成本,而且也增加了应用的迁移成本。 采用 SQL 还有一个好处,就是能与众多的 BI、可视化工具对接,生态丰富很多。如果采用自己研发的查询语言,所有工具都要定制化开发,难度一下大了很多。kdb 就是最典型的例子,完全是自有语法,因此虽然很多性能指标相当不错,但十几年过去,还是不温不火。 从 TDengine 研发的第一天起,我就决定采用标准 SQL 做查询语言,并且采用关系数据库模型,而不是 InfluxDB, OpenTSDB, Prometheus 等数据库的 tag-set 模型。其根本原因就是想降低学习成本。目前看来,这个策略是极其正确的。 涛思数据团队还将在查询分析上投入相当大的研发力量,希望 TDengine 具有强大的时序数据分析功能。 4:开源基础软件在开源大势所趋的情况下,如果不将代码,特别是核心代码开源,想要赢得市场是完全不可能的。因此,我们才将 TDengine 完全开源。开源使涛思数据获得了高速增长,这是一个完全正确的决定。 但从产品角度来看,开源是 TDengine 的一大优势吗?看起来是,但细想一下,其实不是,它只是取得成功的一个必要条件。因为全球市场上开源的的时序数据库产品很多,中国本土开源的时序数据库也不止 TDengine 一家,大家不会由于 TDengine 是开源的就选择它,而是有其他特点才会选用它。 如果市场上还没有开源的时序数据库,那么开源就是 TDengine 最大的亮点。我决定将集群开源,根本的原因是由于 InfluxDB 没有把集群开源,这给了我们高速增长的机会。只有别人做不到或比不上你的功能或性能,那才是你需要宣传的特点。功能或性能指标的跟随者永远不值得做任何推广。 5:其他TDengine 还有很多其他优点,比如 All in One 的特性,TDengine 自身带有缓存、流计算、数据订阅等功能,因此在很多场景下,用户不再需要集成 Kafak, Redis, Spark, Zookeeper 等软件,TDengine 就可以作为一个大数据平台来使用,能大幅降低整个系统的复杂度和运维成本。与大部分研发同学一样,我也喜欢罗列各种开发的功能和亮点,我还可以罗列 TDengine 的很多很多其他优点。 但是作为一个连续创业者,很清楚无论是产品还是市场宣传,必须做减法。研发出身的创业者最喜欢的就是不断加功能,在宣传上胡子眉毛一把抓,不突出重点,这是创业者的大忌。用户能看上你的产品,往往不是你功能全,而是产品的某一个亮点打动了他,特别是早期的用户,完全是喜欢产品的某项功能才容忍了诸多其他方面的不足。宣传上也是,众多的特点无法让人记住,能记住一个就相当不错。我们要做的是,把真正的亮点做到极致,而且做最大程度的传播,让人人都知道它,喜欢它。 做减法对于研发同学是极其困难的,因为不将自己花精力没日没夜开发的功能宣传出去,太让自己没有成就感。但作为创业者,就是与要习惯思维做斗争。只有聚焦,你才会真正思考产品在市场的独特定位,把某个亮点做到极致。只有独特,才能真正吸引用户,才能真的受人喜欢。 因此过去的几年,我们一直强调 TDengine 是一个物联网大数据平台,聚焦在物联网细分市场,强调的是 All in One 的特性,这样就能与其他时序数据库做出差异化来。 但 TDengine 开源 2 年多时间,大部分用户还是把我们当做时序数据库来使用,而且不仅是物联网行业用户在用,金融、IT 运维、能源、汽车、工业互联网等行业的用户也在用。经过很多思考之后,我决定将 TDengine 重新定位为时序数据库。TDengine 新网站 www.tdengine.com6:三大优点那么作为时序数据库,怎么与众多的时序数据库 PK 或差异化,我个人认为就是:高性能、分布式与 SQL 支持。这三个特点足以让我说服 InfluxDB, OpenTSDB, TimeScale 的客户切换到 TDengine 上来。因此在我们最近的网站改版时,大胆地将 TDengine 的 Slogan 定为:高性能、分布式、支持 SQL 的时序数据库。 贪多嚼不烂,用户没法记住你那么多特点优点,因此我们列出高性能、分布式、支持 SQL 这三个优点足够,其他优点由用户自己去总结和体会,让他们有惊喜。只要将三个优点做实做得足够好,TDengine 与其他时序数据库就会有足够的差异化,就一定能赢得开发者的信赖,赢得市场。陶建辉2022 年 2 月 26 日点击阅读原文,体验拥抱开源的 TDengine ! 浏览 53点赞 评论 收藏 分享 手机扫一扫分享分享 举报 评论图片表情视频评价全部评论推荐 选择项目管理软件时应避免的三大错误市场上有各种各样的项目管理软件。 但是,有许多竞争解决方案可供选择,这会造成混乱,并使项目经理和业务专业人员感到不知所措。选择错误的软件程序会导致一系列问题,例如减少通信流,报告,账单和整体生产率。基本上,选择错误的项目管理软件会增加犯下更大的,无法预料的错误的风险,从而使您的公司蒙受损失。 正确的软件选择很重要,可以从避免一些太常见的错误开始。如果您希望避免因选择不适合您的需求而导致的与选择项目管理软件相关的错误,那么下面的信息会有所帮助。 错误1:无法检查您的业务流程并将其与软件产品相匹配 就像任何类型的选择项目一样,首先要弄清楚您的需求是值得的。必须考虑项目是如何在公司内部形成的,包括通常涉及哪些团队以及他们需要什么以Redis客户端工具RDM支持集群了猿天飞0谈谈我为何放弃高薪选择大公司!全栈开发者社区0SQL 避免使用 IN 和 NOT IN点击关注上方“ Stephen ”, 设为“置顶或星标 ”,第一时间送达干货 WHY? IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢? 1、效率低 项目中遇到这么个情况: t1表 和 t2表 都是150w条数据,600M的样子,都...我放弃了Ranom,选择了ThreadLocalRandomJava学习之道0我又二次创业了?给大家吃颗定心丸前端闰土哥0MultiContactsSelector支持多选的联系人选择MultiContactsSelector 是一个完全可定制来从手机上选择联系人的控件,支持多选。高性能GPU服务器硬件拓扑与集群组网01、术语与基础大模型训练一般都是用单机 8 卡 GPU 主机组成集群,机型包括 8*{A100,A800,H100,H800} 。下面一台典型 8*A100 GPU 的主机内硬件拓扑:| 典型 8 卡 A100 主机硬件拓扑本文来自“高性能GPU服务器硬件拓扑与集群组网”。本节将基于这张我放弃上海的高薪,选择回老家了码上实战0MultiContactsSelector支持多选的联系人选择MultiContactsSelector 是一个完全可定制来从手机上选择联系人的控件,支持多选。点赞 评论 收藏 分享 手机扫一扫分享分享 举报