時序列數據庫武鬥大會之TSDB名錄 Part 2

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

在前面《時序列數據庫武鬥大會之 TSDB 名錄 Part 1》咱們已經介紹了一些常見的 TSDB,這裏咱們再對剩餘的一些TSDB 作些簡單介紹。web

10.Geras

Geras 是一個專一於 IoT 的領域(固然不只限於傳感器採集到的數據)可擴展的、分佈式的時序列數據庫,用於幫助用戶進行快速分析。Geras 是一個 SaaS 服務,可是你也能夠購買軟件本身部署、託管。Geras 提供了免費版,它不對數據存儲的時間和數據量作任何限制,只是不提供 SLA 而已。不過他們的 SaaS 主頁我卻一直沒打開過,貌似該 DNS 記錄已經不存在了,官方相關資料也很少,真懷疑這個項目已經廢棄了,該產品已經演化爲新產品。sql

Geras 速度很是快,它支持對任什麼時候間精度進行 Rollup,也支持保存原始數據的精度。它專門爲寫操做進行了優化,能夠接收海量設備的數據輸入。數據庫

Geras 運行在容錯、分佈式數據存儲之上,支持水平擴展,能夠在不中止服務的前提下對系統容量進行調整。編程

Geras 也提供了一套可視化界面,方便的對設備、傳感器等進行管理,對 metric 進行圖表的可視化等。後端

Geras 支持多種技術來進行數據存儲、查詢和展現,好比 HTTPS、JSON、RESTful、SenML、MQTT、HyperCat,設備數據能夠經過 HTTP POST 或者輕量 MQTT 發佈。安全

11.Akumuli

Akumuli 名稱來自 accumulate,是一個數值型時間序列數據庫,能夠存儲、處理時序列數據。網絡

它的特色以下:數據結構

  • 基於日誌結構的存儲
  • 支持無序數據
  • 實時壓縮
  • 基於HTTP的JSON查詢支持
  • 支持面向行和麪向列的存儲
  • 將最新數據放入內存存儲
  • 經過metric和tag組織時序列數據,而且能夠經過tag進行join操做。
  • Resampling (PAA transform),滑動窗口
  • 經過基於TCP或UDP的協議接收數據(支持百萬數據點每秒)
  • Continuous queries (streaming)

Akumuli 由兩部分組成:存儲引擎和服務程序。目前只有存儲引擎被實現了,並且存儲引擎能夠在沒有服務程序的狀況下做爲嵌入式數據庫單獨使用(相似sqlite),也就是說,你得經過本身編寫程序使用它的 API 來實現數據讀寫。架構

Akumuli 的數據協議基於 Redis,它的數據格式也和前面看到的不太同樣,好比:

每條數據由三部分組成,第一部分稱爲 ID,能夠是數值型(以「:」開始),或者是字符串(以「+」開始),好比這個例子中,cpu host=machine1 region= europe就是 ID,它由兩部分組成,cpu 是metric,hostregion則被稱爲 key。

數據的第二部分能夠是時間戳(:1418224205),這裏的格式爲ISO 8601(+20141210T074343.999999)

第三部分爲值部分。

相似上面的數據結構,它的query也比較容易理解:


Akumuli 目前還處於開發狀態,不適合在生產環境下使用。

12.Atlas

這個和波士頓動力的機器人 Atlas,以及其餘不少知名軟件(HashiCorp、O'reilly)都重名了。

Atlas 用於存儲帶維度信息的時序列數據,由 Netflix 開發,用於實時分析。Atlas 使用了基於內存的存儲,速度很是快。在 2011 年的時候,Netflix 使用本身開發的 Epic 工具來管理時序列數據,這是一個採用 perl、RRDTool 和 MySQL 構建的系統,可是隨着數據量的增大(2M->1.2B),他們建立了這個新項目。

若是說商業智能(business intelligence)是從數據基於時間分析出趨勢的話,那麼 Atlas 能夠說是一種運維智能(operational intelligence),能給用戶描述出當前系統所發生的全部狀況。

Atlas 的設計目標主要有3點:

  • 通用API
  • 可擴展
  • 維度支持

Atlas 具有和 OpenTSDB 以及 InfluxDB 相似的metric/datapoint/tag的概念,同時它也有本身獨自的特性,好比增長了步長(step-size)的概念。

Atlas 採用了相似 RRDtool 的查詢語法,它們都經過一種對 URL 友好的語法來支持複雜的數據查詢。

一句話點評:背靠大樹好乘涼,能夠試試。

13.Blueflood

Blueflood 由 Rackspace 的 Cloud Monitoring 團隊建立,用於管理 Cloud Monitoring 系統產生的 metric 數據。若是你還不熟悉 Rackspace 這個公司的話,能夠去網上了解一下,它也是比較大的雲計算公司。

除了本身使用,Rackspace 還提供了免費的 Blueflood-as-a-Service,此外還有一些大公司也在準備使用 Blueflood。

Blueflood 特色以下:

  • built on top of Cassandra
  • 基於HTTP API/JSON的數據採集(ingest)和讀取
  • 支持數值、布爾和字符串metric data
  • 多租戶
  • 水平擴展

Blueflood 主要由如下模塊構成:

  • Ingest - 採集/寫入數據
  • Rollup - 聚合計算
  • Query - 處理用戶查詢

不過遺憾的是 Blueflood 如今沒有一個相似 tag 的多維度方案。

一句話點評:背靠大樹好乘涼,能夠試試。

14.Gnocchi

Gnocchi 是 OpenStack 項目的一部分,但它也能獨立工做。

Gnocchi 是一個多租戶的時間序列、metric 和資源(resource)數據庫。它提供了一組 HTTP REST API 來建立和管理數據。

Gnocchi 以在雲就算環境中存儲大量 metric 信息爲設計出發點,爲用戶提供 metric 和資源展現功能,同時它也很容易擴展。

Gnocchi 特色以下:

  • HTTP RES 接口
  • 水平擴展
  • Metric 聚合
  • 支持批處理
  • 支持歸檔功能
  • 按 Metric 值查找(這個在 TSDB 不多見)
  • 多租戶支持
  • 對 Grafan 的支持
  • 支持 Statsd 協議

Gnocchi 後端存儲支持一下4種方式:

  • File
  • Swift
  • Ceph (推薦方式)
  • InfluxDB (實驗功能)

前三種方式基於一個名爲 Carbonara 的庫,這個庫負責對時間序列數據的管理,由於這三種存儲方案自己並不關心數據的特色。InfluxDB 前面已經說過,自己就是一個 TSDB。

15.Newts

Newts 是基於 Cassandra 的時序列數據庫。正如其名所示,它是一個 「New-fangled Timeseries Data Store」。它的開發者是 OpenNMS,這也是一個知名的開源網絡監控和管理平臺。

Newts 基於 Cassandra,對寫優化、徹底分佈式,吞吐量很是高;經過將相似的 metric 分組存儲,讓寫和讀更高效。

16.SiteWhere

SiteWhere 是一個開源的 IoT 開放平臺,幫助用戶快速將 IoT 應用推向市場。SiteWhere 提供了一套完整的設備管理解決方案,經過 MQTT、AMQP、Stomp 和其餘協議鏈接設備,支持自注冊、REST 和批處理方式註冊設備。

SiteWhere 也提供了可擴展的大數據解決方案,底層採用經優化的 MongoDB 和 HBase,爲存儲設備事件提供了時序列數據庫,且通過 Hortonworks 和 Cloudera 的測試。

SiteWhere 還內嵌了 Siddhi 用於 Complex Event Processing (CEP),提供了 Azure EventHub、Apache Solr 以及 Twilio 的集成,以及 Android 和 Arduino 平臺開發用的 SDK。

SiteWhere 的部署方式也很靈活,支持公有云、私有機房,Ubuntu Juju 和 Docker 的部署方式。

SiteWhere 也支持多租戶,不一樣的租戶數據分開存儲,還能爲不一樣的租戶提供不一樣的處理引擎,租戶的啓動、中止互不影響。

SiteWhere 的 service provider interfaces(SPIs) 提供了平臺的核心對象模型,第三方能夠對平臺進行擴展。

一句話點評:開源、功能強大、一體化方案。做爲 IoT 平臺,SiteWhere 算是這幾個中不錯的。

建議你接着看一下它的 System Overview 和 System Architecture 以對這個系統有更深刻的瞭解。

17.TempoIQ

TempoIQ 也是一個 IoT 平臺服務,它能幫助用戶快速、靈活的的建立 IoT 應用,提供了實時的數據分析、報警、儀表盤、報告功能。2014 年 7 月從 TempoDB 更名爲 TempoIQ,它的不少組件都有 IQ 結尾,表明智商很高?

TempoIQ 主要由如下幾個部分組成:

  • CloudIQ

TempoIQ 採用第四代 CoDA(Context Delivery Architecture)架構,用戶能夠沒必要心繫複雜的基礎設施就能夠部署 IoT 應用。

  • ConnectIQ

基於數據事件的 API,用於鏈接任何設備,支持靈活的事件數據模型:REST API、HTTPs 和 MQTT。它不關心設備來源,能夠及時進行數據流處理,不須要提早安裝和配置。

  • DataIQ

對全部 IoT 數據和分析報告進行安全、持久的存儲,並提供報告下載功能。

  • AnalyzeIQ

用戶能夠建立分析流(custom analytics streams)來洞悉 IoT 數據實時狀態,自動將數據存儲到 DataIQ。並能夠建立報警來持續監控分析流,當有超預期的變更或者達到致命條件時進行實時報警。

  • ViewIQ
    用戶使用 ViewIQ 能夠建立實時的 IoT 儀表盤、應用和可視化組件,並且不須要任何編碼工做。

18.Riak TS

Riak 做爲 NoSQL 和 K/V 存儲可能更有名,而 Riak TS 是一個爲時序列和爲存儲 IoT 數據進行了優化的 NoSQL 數據庫軟件。

在官方主頁上寫道:「Riak TS is engineered to be faster than Cassandra」。

因爲其非開源性,網上(包括官網)詳細資料都不是特別多。

19.Cyanite

Cyanite 是一個用於接收和存儲時序列數據的守護進程,它的設計目標是兼容 Graphite 生態系統。

Cyanite 默認使用 Apache Cassandra 來存儲時序列數據,它的特色以下:

  • 可擴展性

基於 Cassandra,Cyanite 能夠實現高可用、具備彈性,以及低延遲的存儲。

  • 兼容性
    因爲 Graphite 已經成爲事實上管理時序列數據的標準,不論是使用 graphite-web 仍是 Grafana。Cyanite 將會盡量的保持與這些生態系統的兼容以提供簡單地交互模式。

Cyanite 是一個典型的流式處理模型,它接收數據,對數據進行標準化,而後進行輸出。它的交互圖以下所示:

它的工做流程以下:

  • 每條輸入都會產生規範化的 metrics,並添加到消息隊列
  • 核心引擎從隊列取出數據並處理。
  • 經過存儲和索引組件進行時序列數據的存儲和 metric 名的索引
  • API 組件用於處理引擎和其餘查詢、存儲模塊的交互
  • Cyanite 的輸入模塊支持 Carbon(Graphite組件),而 Kafka 和 Pickle 則還在計劃中。

索引(Index)模塊則用於對 metric 名進行索引和查詢。這一模塊有兩種實現方式:

  • memory 用於在內存中存儲反向索引
  • elasticsearch 用於在 elasticsearch 中存儲 metric 名(path-names)

一句話總結:新生事物、值得關注。

20.總結

這裏只是簡單的羅列了一些項目,及其簡單說明。
在後續的文章中,咱們還會選擇一些常見的 TSDB 進行實例講解。

本系列其餘文章:

相關文章
相關標籤/搜索