避免创业的大忌,我为何给 TDengine 只选择了集群、高性能与 SQL 支持三大特点?
有人在知乎上提问:“作为国产开源的时序数据库,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 支持三大特点?相关推荐
- 避免创业的大忌,我为何给 TDengine 只选择了集群、高性能与 SQL 支持三大特点?...
有人在知乎上提问:"作为国产开源的时序数据库,TDengine 的哪些优点最吸引你?".这促使我将自己对一些问题,包括创业本身的思考整理出来,分享给大家,希望能给众多研发同学和创业 ...
- 在集群的操作机上执行命令为什么会出现权限被拒绝_如何使用 TDengine 2.0 最新开源的集群功能?
导读:8月3日,TDengine 发布了 v2.0 版本,这次更新最大的亮点是,我们将分布式集群功能开源.开源后,引起了很大反响,又连续几天在 GitHub 趋势榜排名第一.不少关注TDengine的 ...
- Docker Compose搭建TDengine集群
文章目录 1. Linux上安装Docker 2. 安装Docker Compose 3. 自定义Docker 网络 4. 搭建集群 4.1 基础配置 4.2 查看启动效果 4.3 测试节点 4.3. ...
- TDengine集群搭建
我这里用三台服务器搭建集群 1.如果搭建集群的物理节点上之前安装过TDengine,先卸载清空 直接执行以下4条命令 rmtaos rm -rf /var/lib/taos rm -rf /var/l ...
- 创业如同盖房子 故事新编-三只小猪盖房子
猪妈妈对三个孩子说:"你们已经长大了,应该学一些本领.你们各自去盖一座房子吧!"三只小猪高高兴兴走了. 老大说,我要跟叔叔学习,自己动手盖一座房子! 老二呢,听说邻村有一个包工队, ...
- 【科技、商业和管理】看剧学创业:《硅谷》第五季第7-8集
目录 1 科技:如何应对51%攻击? 2 商业:合作伙伴和商业问题背后的技术原因 3 管理:技术型CEO的独特激励方式 4 其他有趣的故事:如何在美国本土寻找制造商 看剧了解和学习科技创业.我从科技. ...
- 【科技、商业和管理】看剧学创业:《硅谷》第五季第4-6集
目录 1 科技:具备人类智慧的机器人 2 商业:寻找内鬼和为公司做品牌宣传 3 管理:敏捷开发的冲刺和情绪管理 4 其他有趣的故事:硅谷会传怎样的八卦? 看剧了解和学习科技创业.我从科技.商业和管理的 ...
- Ansible自动化部署配置实践(实现TDEngine集群的自动化部署)
一.说明 Ansible是一款基于Python的自动化运维,用于发布.管理和编排计算机系统的工具.而且可以支持批量系统配置.批量部署运维.批量运行命令等功能. 这里以TDEngine的集群部署为例, ...
- TDengine 应用实录:存储缩减超过 60%,HBase 等集群指数级下线
小 T 导读:狮桥集团的网货平台与金融 GPS 系统,对于车辆轨迹收集与计算有着强需求.GPS 每日产生总量在 40 亿左右,需要为业务方提供实时末次位置查询,近 180 日行驶轨迹查询,类似车辆轨迹 ...
最新文章
- Postgresql的使用
- python实现WordCount(第三次作业)
- RocketMQ 核心
- Linux下tar.xz结尾的文件的解压方法
- 使用TR1的智能指针
- 产生线程安全的原因(2)(操作系统)
- java8新特性_Java8新特性_lambda表达式
- Scala类型系统的目的——Martin Odersky访谈(三)
- citrix+netscaler配置第一次培训
- 3rd,Python登录模拟
- python 笔记 之 线程锁
- 3.高性能MySQL --- 服务器性能剖析( 2 )
- 【原创】C语言之父和Linux之父谁更伟大?
- WAPI安全协议检测系统测试分析
- ESP8266 WIFI模块开发入门1 开发环境搭建
- 电脑如设置路由器WiFi外加无线桥接一个副路由器
- 在夜神模拟器内部安装App
- View inflate方法和LayoutInflater inflate方法的区别
- 正则表达式:回车和换行的区别
- 超微服务器安装操作系统,超微服务器bios设置
热门文章
- PHP7的异常处理机制,set_error_handler和set_exception_handler方法介绍
- MegaCli命令设置raid磁盘阵列为直通模式
- 奥利给! loading效果这么搞真的太棒了
- Krpano(虚拟漫游)
- 佳能服务器维护,佳能产品维护工具(IJ Printer Assistant tool)
- ACFLY开源飞控的介绍
- Java+Jsp+MySql实现图书管理系统_图书管理系统代码
- Verilog中任务task的使用
- Unity Shader 表面着色器边缘光(Rim Lighting)二
- 商城类小程序开发全过程(附源码)