時序列數(shù)據(jù)庫武斗大會之 TSDB 名錄 Part 1

【編者按】
劉斌,OneAPM后端研發(fā)工程師,擁有10多年編程經(jīng)驗,參與過大型金融、通信以及Android手機操作系的開發(fā),熟悉Linux及后臺開發(fā)技術(shù)。曾參與翻譯過《第一本Docker書》、《GitHub入門與實踐》、《Web應(yīng)用安全權(quán)威指南》、《WEB+DB PRESS》、《Software Design》等書籍,也是Docker入門與實踐課程主講人。本文所闡述的「時間序列數(shù)據(jù)庫」,系筆者所負責產(chǎn)品 Cloud Insight 對性能指標進行聚合、分組、過濾過程中的梳理和總結(jié)。

通過上一章《時序列數(shù)據(jù)庫武斗大會之什么是TSDB》的介紹,相信大家已經(jīng)知道了什么是時序列數(shù)據(jù)庫,以及對它能干什么,具有什么特點。

那么在這一篇文章中,我們將介紹一下目前都有哪些 TSDB,以及它們各自的特點,并基于個人觀點,給出一定的(喜好)評判。

由于個人能力所限,有些地方調(diào)查可能不到位,再加上一定的個人主觀因素,跟其他人的結(jié)論可能不一樣,不過這應(yīng)該也正常。沒有調(diào)查過就沒有發(fā)言權(quán),只有真正的深度用戶的發(fā)言,才具有說服務(wù)力,你權(quán)當這里就是我拋磚了。

雖然也有人用 ElasticSearch 或者 MongoDB 來存儲時序列數(shù)據(jù),作為更適合分類為 NOSQL 的這兩個數(shù)據(jù)庫軟件,我們這里就不對它們做介紹了。

DB-Engines 中時序列數(shù)據(jù)庫排名

我們先來看一下DB-Engines中關(guān)于時序列數(shù)據(jù)庫的排名,這是當前(2016年2月的)排名情況:

下面,我們就按照這個排名的順序,簡單介紹一下這些時序列數(shù)據(jù)庫中的一些。下面要介紹的 TSDB 以開源的為主,如果是商業(yè)或者 SaaS 服務(wù),也簡單介紹一下其特點,讓大家能對其他領(lǐng)域的事物也有所了解。

這里有一個例外,就是 Pinot 并不在這個排名里,但是我也把它列在了這里。

1. InfluxDB

InfluxDB 由 Golang 語言編寫,也是由 Golang 編寫的軟件中比較著名的一個,在很多 Golang 的沙龍或者文章中可能都會把 InfluxDB 當標桿來介紹,這也間接幫助 InfluxDB 提高了知名度。

InfluxDB的主要特點包括下面這些:

  • schemaless(無結(jié)構(gòu)),可以是任意數(shù)量的列
  • 可擴展(集群)
  • 方便、強大的查詢語言
  • Native HTTP API
  • 集成了數(shù)據(jù)采集、存儲、可視化功能
  • 實時數(shù)據(jù) Downsampling
  • 高效存儲,使用高壓縮比算法,支持retention polices

InfluxDB 是 TSDB 中為數(shù)不多的進行了用戶和角色方面實現(xiàn)的,提供了 Cluster Admin、Database Admin 和 Database User 三種角色。

InfluxDB 的數(shù)據(jù)采集系統(tǒng)也支持多種協(xié)議和插件: - 行文本 - UDP - Graphite - CollectD - OpenTSDB

不過 InfluxDB 每次變動都較大,尤其是在存儲和集群方面,追求平平安過日子,不想瞎折騰的可以考慮下。

注意:由于InfluxDB開發(fā)太活躍了,很可能你在網(wǎng)上搜到的資料都是老的,會害到你,所以你需要以官方文檔為主。

一句話總結(jié):欣欣向榮、值得一試。

2. RRDtool

RRDtool 全稱為 Round Robin Database Tool,也就是用于操作 RRD 的工具,簡單明了的軟件名。

什么是 RRD 呢?簡單來說它就是一個循環(huán)使用的固定大小的數(shù)據(jù)庫文件(其實也不太像典型的數(shù)據(jù)庫)。

大體來說,RRDtool 提供的主要工具如下:

  • 創(chuàng)建RRD(rrdtool create)
  • 更新RRD(rrdtool update)
  • 畫圖(rrdtool graph)

這其中,畫圖功能是最復(fù)雜也是最強大的,甚至支持下面這些圖形,這是其他 TSDB 中少見的:

  • 指標比較,對兩個指標值進行計算,描畫出滿足條件的區(qū)域
  • 移動平均線
  • 和歷史數(shù)據(jù)進行對比
  • 基于最小二乘法的線性預(yù)測
  • 曲線預(yù)測
  • 總之,它的畫圖功能太豐富了。

一句話總結(jié):老牌經(jīng)典、藝多不壓身。

3. Graphite

Graphite 由 Orbitz, LLC 的 Chris Davis 創(chuàng)立于 2006 年,它主要有兩個功能:

  • 存儲數(shù)值型時序列數(shù)據(jù)
  • 根據(jù)請求對數(shù)據(jù)進行可視化(畫圖)

相應(yīng)的,它的特點為:

  • 分布式時序列數(shù)據(jù)存儲,容易擴展
  • 功能強大的畫圖Web API,提供了大量的函數(shù)和輸出方式
  • Graphite本身不帶數(shù)據(jù)采集功能,但是你可以選擇很多第三方插件,比如適用于* collectd、Ganglia或Sensu的插件等。同時,Graphite也支持Plaintext、Pickle和AMQP這些數(shù)據(jù)輸入方式。

Graphite主要由三個模塊組成:

  • whisper:創(chuàng)建、更新RRD文件
  • carbon:以守護進程的形式運行,接收數(shù)據(jù)寫入請求
    • carbon-cache:數(shù)據(jù)存儲
    • carbon-relay:分區(qū)和復(fù)制,位于carbon-cache之前,類似carbon-cache的負載均衡
    • carbon-aggregator:數(shù)據(jù)集計,用于減輕carbon-cache的負載
  • graphite-web:用于讀取、展示數(shù)據(jù)的Web應(yīng)用

whisper 使用了類似 RRDtool 的 RRD 文件格式,它也不像 C/S 結(jié)構(gòu)的軟件一樣,沒有服務(wù)進程,只是作為 Python library 使用,提供對數(shù)據(jù)的 create/update/fetch 操作。

如果你對它的性能比較在意,這里有一份老的數(shù)據(jù)可供參考。

Google、Etsy、GitHub、豆瓣、Instagram、Evernote 和 Uber 等很多知名公司都是 Graphite 的用戶。有此背景,其可信度又加一層,而且網(wǎng)上的資料也相當?shù)亩啵档迷u估一下。

一句話總結(jié):群眾基礎(chǔ)好、可以參考。

4. OpenTSDB

OpenTSDB 是一個分布式、可伸縮的時間序列數(shù)據(jù)庫。它支持豪秒級數(shù)據(jù)采集所有 metrics,支持永久存儲(不需要 downsampling),和 InfluxDB 類似,它也是無模式,以 tag 來實現(xiàn)維度的概念。

比如,這就是它的一個metric例子:

mysql.bytes_received 1287333217 66666666 schema=foo host=db1

OpenTSDB 的節(jié)點稱為 TSD(Time Series Daemon (TSD)),它沒有主、從之分,消除了單點隱患,非常容易擴展。它主要以HBase作為存儲系統(tǒng),現(xiàn)在也增加了對 Cassandra 和 Bigtable(非云端)。

OpenTSDB 以數(shù)據(jù)存儲和查詢?yōu)橹鳎綆Я艘粋€簡單地圖形界面(依賴Gnuplot),共開發(fā)、調(diào)試使用。

一句話總結(jié):好用,我們的產(chǎn)品Cloud Insight 也在用這項技術(shù)來實現(xiàn)對性能指標進行聚合、分組、過濾。

5.KDB+

所有 TSDB 中,估計就數(shù)這個最酷了,我說的是域名,只有兩個字母,猥瑣地想一下,域名就值很多錢 :-)。

kdb+是一個面向列的時序列數(shù)據(jù)庫,以及專門為其設(shè)計的查詢語言q(和他們的域名一樣簡短)。Kdb+ 混合使用了流、內(nèi)存和實時分析,速度很快,支持分析 10 億級別的記錄以及快速訪問TB級別的歷史數(shù)據(jù)。

不過這是一個商業(yè)產(chǎn)品,但是也提供了免費版本(貌似還限制在32位)。

6.KairosDB

KairosDB 是一個 OpenTSDB 的 fork,不過是基于 Cassandra 存儲的。由于 Cassandra 的行比 HBase 寬,所以 KairosDB 的 Cassandra 的默認行大小為 3 星期,而 OpenTSDB 的 HBase 則為 1 小時。

KairosDB 支持通過 Telnet、Rest、Graphite 等協(xié)議寫入數(shù)據(jù),你也可以通過編寫插件自己實現(xiàn)數(shù)據(jù)寫入。

KairosDB 也提供了基于 Web API 的查詢接口,支持數(shù)據(jù)聚合、持過濾和分組等功能。

同時 KairosDB 提供了一個供開發(fā)用的 Web UI,圖形繪制引擎使用了 Flot。

和 OpenTSDB 類似,KairosDB 也提供了插件機制,你可以使用插件完成如下工作:

  • 添加數(shù)據(jù)點(data point)監(jiān)聽器
  • 添加新的數(shù)據(jù)存儲服務(wù)
  • 添加新的協(xié)議處理程序
  • 添加自定義系統(tǒng)監(jiān)視服務(wù)

7.Druid

Druid 是一個快速、近實時的海量數(shù)據(jù) OLAP 系統(tǒng),并且是開源的。Druid 誕生于 Metamarkets,后來一些核心人員創(chuàng)立了 IMPLY 公司,進行 Druid 相關(guān)的產(chǎn)品開發(fā)。

Druid 會按時間來進行分區(qū)(segment),并且是面向列存儲的。它的主要特性如下:

  • 支持嵌套數(shù)據(jù)的列式存儲
  • 層級查詢
  • 二級索引
  • 實時數(shù)據(jù)攝取
  • 分布式容錯架構(gòu)

根據(jù)去年底 druid.io 的白皮書,現(xiàn)在生產(chǎn)環(huán)境下最大的集群規(guī)模如下:

  • 3M EVENTS / SECOND SUSTAINED (200B+ EVENTS/DAY)

  • 10 – 100K EVENTS / SECOND / CORE
  • 500TB OF SEGMENTS (>50 TRILLION RAW EVENTS)

  • 5000 CORES (>400 NODES, >100TB RAM)

  • QUERY LATENCY (500MS AVERAGE)
  • 90% < 1S 95% < 2S 99% < 10S
  • 3+ trillion events/month
  • 3M+ events/sec through Druid’s real-time ingestion
  • 100+ PB of raw data
  • 50+ trillion events

Druid 企業(yè)用戶比較多,比如 OneAPM、Netflix 和 Paypal 等。具體可以參考 http://druid.io/druid-powered.html

Druid 架構(gòu)比較復(fù)雜,因此對部署和運維也有一定的負擔,比如需要的機器多、機器配置要高(尤其是內(nèi)存)。

一句話總結(jié):好用,我們在用。

8.Prometheus

Prometheus 是一個開源的服務(wù)監(jiān)控系統(tǒng)和時序列數(shù)據(jù)庫,由社交音樂平臺 SoundCloud 在2012年開發(fā),最近也變得很流行,最新版本為 0.17.0rc2。

Prometheus 從各種輸入源采集 metric,進行計算后顯示結(jié)果,或者根據(jù)指定條件出發(fā)報警。

和其他監(jiān)控系統(tǒng)相比,Prometheus 的特點包括:

  • 多維數(shù)據(jù)模型(時序列數(shù)據(jù)由metric名和一組key/value組成)
  • 靈活的查詢語言
  • 不依賴分布式存儲,單臺服務(wù)器即可工作
  • 通過基于HTTP的pull方式采集是序列數(shù)據(jù)
  • 可以通過中間網(wǎng)關(guān)進行時序列數(shù)據(jù)推送
  • 多種可視化和儀表盤支持

由于 Prometheus 采用了類似 OpenTSDB 和 InfluxDB 的 key/value 維度機制,所以如果你對任一種 TSDB 有了解的話,學習起來會簡單些。

一句話總結(jié):貌似比較火,何不試一試?

9.Pinot

Pinot 是一個開源的實時、分布式 OLAP 數(shù)據(jù)存儲方案。它來自 Linkedin,雖然 Linkedin 最近估價表現(xiàn)很差,但是他們創(chuàng)建的各種軟件、中間件實在太多了。這一點我們做軟件的都應(yīng)該向 Linkedin 表示感謝。

Pinot 就像是一個 Druid 的 copy,不過兩者的靈感都來源于SenseiDB(Sensei 在日語里為老師的意思,寫成漢字為“先生”)。

Pinot 也像 Druid 一樣,能加載 offline 數(shù)據(jù)(Hadoop 文件)和實時數(shù)據(jù)(Kafka)。Pinot 從設(shè)計上就面向水平擴展。

Pinot 主要特點:

  • 面向列
  • 插拔式索引引擎:排序索引、位圖索引和反向索引
  • 根據(jù)查詢語句和segment信息對查詢/執(zhí)行計劃進行優(yōu)化
  • 從 Kafka 實時數(shù)據(jù)攝取(ingestion)
  • 從 Hadoop 進行批量攝取
  • 類似 SQL 的查詢語言,支持聚合、過濾、分組、排序和唯一處理。
  • 支持多值字段
  • 水平擴展和容錯

Pinot 的特點和 Druid 很像,兩者可互為參考。

一句話總結(jié):背靠大樹好乘涼。

小結(jié)

這里我們?yōu)榇蠹医榻B了幾種常見 TSDB,如不出意外,你可能會在這里選擇某一種來使用。

盡管如此,我們還是會為大家介紹更多一些的項目,讓大家能更多的了解一些不同的 TSDB 及其特點,也能幫助讀者深入了解 TSDB 的各種場景,開闊思路。

在下一篇文章中,我們將會為各位再介紹幾種時序列數(shù)據(jù)庫。

這是本系列文章的其他部分:

本文轉(zhuǎn)自 OneAPM 官方博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內(nèi)容