避免创业的大忌,我为何给 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,其中一个核心原因是我认为 InflxuDB 并没有充分利用时序数据特点。如果我充分利用,就能在性能上碾压它。在我仔细研究后,我提出来“一个数据采集点一张表”的设计,让一个采集点来的数据按照时间顺序一块一块的存,并且使用列式存储。这样就会导致写入变成简单的追加操作,而且一次读的 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.com
6:三大优点
那么作为时序数据库,怎么与众多的时序数据库 PK 或差异化,我个人认为就是:高性能、分布式与 SQL 支持。这三个特点足以让我说服 InfluxDB, OpenTSDB, TimeScale 的客户切换到 TDengine 上来。因此在我们最近的网站改版时,大胆地将 TDengine 的 Slogan 定为:高性能、分布式、支持 SQL 的时序数据库。
贪多嚼不烂,用户没法记住你那么多特点优点,因此我们列出高性能、分布式、支持 SQL 这三个优点足够,其他优点由用户自己去总结和体会,让他们有惊喜。只要将三个优点做实做得足够好,TDengine 与其他时序数据库就会有足够的差异化,就一定能赢得开发者的信赖,赢得市场。
陶建辉
2022 年 2 月 26 日
避免创业的大忌,我为何给 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 日行驶轨迹查询,类似车辆轨迹 ...
最新文章
- 面试之Hashtable和ConcurrentHashMap
- 独家 | AI仍然受困于仇恨言论——但科学家们在衡量每个系统失败的地方正做得越来越好...
- matlab错误:Variable 'a' cannot be saved to a MAT-file whose version is older than 7.3.
- centos7 通过脚本查询每个应用使用的内存
- 操作系统期末考试重点
- Flex scroller皮肤的使用
- Java成神之路——javaAgent(插桩,attach)
- JavaSE10:日期时间类、java比较器、System类、Math类、大数类
- 三容水箱液位控制系统_光电液位传感器在饮水机中的应用解决方案
- 拍照尺寸 ios_即将收费!11款价值80元iOS限免应用,全部免费下载
- CSS世界Bug般的存在——字母x与“居中”
- unity Debug.DrawLine画线
- LSDSLAM算法解析
- 苹果计算机做视频教程,Mac版Final Cut Pro x使用技巧及视频教程
- 信用评分卡DAY8-9
- JAVA 支付宝支付_史诗级简单教程(SpringBoot)
- 小学教材失实一事体现出僵化的教育思维
- 基础博弈论(NIm,威佐夫,巴什游戏)
- 确定有限自动机(DFA)和不确定有限自动机(NFA)的主要区别
- 使用dscaler在windows下播放电视的设置
热门文章
- 微信小程序css篇----定位(position)
- производство в смоленске кирпича
- 温湿度传感器驱动SHT85 单片机STM32 HAL库
- U盘装完系统后多出来的EFI盘复原
- 【web】React-hooks
- wxPython 4.2.0 发布
- adb命令之pm hide 与 disable
- mysql算gps距离_mysql JS 计算两GPS坐标的距离函数:
- 网络安全工程师入门,防火墙基本概述,防火墙调试入门
- PLM系统在制造业的应用(下)