有人在知乎上提问:“作为国产开源的时序数据库,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 重新定位为时序数据库。

6:三大优点

那么作为时序数据库,怎么与众多的时序数据库 PK 或差异化,我个人认为就是:高性能、分布式与 SQL 支持。这三个特点足以让我说服 InfluxDB, OpenTSDB, TimeScale 的客户切换到 TDengine 上来。因此在我们最近的网站改版时,大胆地将 TDengine 的 Slogan 定为:高性能、分布式、支持 SQL 的时序数据库。

贪多嚼不烂,用户没法记住你那么多特点优点,因此我们列出高性能、分布式、支持 SQL 这三个优点足够,其他优点由用户自己去总结和体会,让他们有惊喜。只要将三个优点做实做得足够好,TDengine 与其他时序数据库就会有足够的差异化,就一定能赢得开发者的信赖,赢得市场。

避免创业的大忌,我为何给 TDengine 只选择了集群、高性能与 SQL 支持三大特点?相关推荐

  1. 避免创业的大忌,我为何给 TDengine 只选择了集群、高性能与 SQL 支持三大特点?...

    有人在知乎上提问:"作为国产开源的时序数据库,TDengine 的哪些优点最吸引你?".这促使我将自己对一些问题,包括创业本身的思考整理出来,分享给大家,希望能给众多研发同学和创业 ...

  2. 在集群的操作机上执行命令为什么会出现权限被拒绝_如何使用 TDengine 2.0 最新开源的集群功能?

    导读:8月3日,TDengine 发布了 v2.0 版本,这次更新最大的亮点是,我们将分布式集群功能开源.开源后,引起了很大反响,又连续几天在 GitHub 趋势榜排名第一.不少关注TDengine的 ...

  3. Docker Compose搭建TDengine集群

    文章目录 1. Linux上安装Docker 2. 安装Docker Compose 3. 自定义Docker 网络 4. 搭建集群 4.1 基础配置 4.2 查看启动效果 4.3 测试节点 4.3. ...

  4. TDengine集群搭建

    我这里用三台服务器搭建集群 1.如果搭建集群的物理节点上之前安装过TDengine,先卸载清空 直接执行以下4条命令 rmtaos rm -rf /var/lib/taos rm -rf /var/l ...

  5. 创业如同盖房子 故事新编-三只小猪盖房子

    猪妈妈对三个孩子说:"你们已经长大了,应该学一些本领.你们各自去盖一座房子吧!"三只小猪高高兴兴走了. 老大说,我要跟叔叔学习,自己动手盖一座房子! 老二呢,听说邻村有一个包工队, ...

  6. 【科技、商业和管理】看剧学创业:《硅谷》第五季第7-8集

    目录 1 科技:如何应对51%攻击? 2 商业:合作伙伴和商业问题背后的技术原因 3 管理:技术型CEO的独特激励方式 4 其他有趣的故事:如何在美国本土寻找制造商 看剧了解和学习科技创业.我从科技. ...

  7. 【科技、商业和管理】看剧学创业:《硅谷》第五季第4-6集

    目录 1 科技:具备人类智慧的机器人 2 商业:寻找内鬼和为公司做品牌宣传 3 管理:敏捷开发的冲刺和情绪管理 4 其他有趣的故事:硅谷会传怎样的八卦? 看剧了解和学习科技创业.我从科技.商业和管理的 ...

  8. Ansible自动化部署配置实践(实现TDEngine集群的自动化部署)

    一.说明 Ansible是一款基于Python的自动化运维,用于发布.管理和编排计算机系统的工具.而且可以支持批量系统配置.批量部署运维.批量运行命令等功能. 这里以TDEngine的集群部署为例, ...

  9. TDengine 应用实录:存储缩减超过 60%,HBase 等集群指数级下线

    小 T 导读:狮桥集团的网货平台与金融 GPS 系统,对于车辆轨迹收集与计算有着强需求.GPS 每日产生总量在 40 亿左右,需要为业务方提供实时末次位置查询,近 180 日行驶轨迹查询,类似车辆轨迹 ...

最新文章

  1. Postgresql的使用
  2. python实现WordCount(第三次作业)
  3. RocketMQ 核心
  4. Linux下tar.xz结尾的文件的解压方法
  5. 使用TR1的智能指针
  6. 产生线程安全的原因(2)(操作系统)
  7. java8新特性_Java8新特性_lambda表达式
  8. Scala类型系统的目的——Martin Odersky访谈(三)
  9. citrix+netscaler配置第一次培训
  10. 3rd,Python登录模拟
  11. python 笔记 之 线程锁
  12. 3.高性能MySQL --- 服务器性能剖析( 2 )
  13. 【原创】C语言之父和Linux之父谁更伟大?
  14. WAPI安全协议检测系统测试分析
  15. ESP8266 WIFI模块开发入门1 开发环境搭建
  16. 电脑如设置路由器WiFi外加无线桥接一个副路由器
  17. 在夜神模拟器内部安装App
  18. View inflate方法和LayoutInflater inflate方法的区别
  19. 正则表达式:回车和换行的区别
  20. 超微服务器安装操作系统,超微服务器bios设置

热门文章

  1. PHP7的异常处理机制,set_error_handler和set_exception_handler方法介绍
  2. MegaCli命令设置raid磁盘阵列为直通模式
  3. 奥利给! loading效果这么搞真的太棒了
  4. Krpano(虚拟漫游)
  5. 佳能服务器维护,佳能产品维护工具(IJ Printer Assistant tool)
  6. ACFLY开源飞控的介绍
  7. Java+Jsp+MySql实现图书管理系统_图书管理系统代码
  8. Verilog中任务task的使用
  9. Unity Shader 表面着色器边缘光(Rim Lighting)二
  10. 商城类小程序开发全过程(附源码)