有人在知乎上提問:“作為國產開源的時序資料庫,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 !
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/435459.html
標籤:其他
上一篇:幣安資料/幣安開通資料/幣安資料檢測/幣安開通檢測/幣安資料篩選/幣安資料查詢
下一篇:HBase架構——詳解
