時(shí)序數(shù)據(jù)庫(kù)

什么是時(shí)序數(shù)據(jù)庫(kù)

簡(jiǎn)單來(lái)說(shuō)時(shí)序數(shù)據(jù)庫(kù)就是用來(lái)存儲(chǔ)時(shí)序數(shù)據(jù)的數(shù)據(jù)庫(kù),而時(shí)序數(shù)據(jù)是基于時(shí)間一系列數(shù)據(jù),一般來(lái)說(shuō)時(shí)序數(shù)據(jù)是按照時(shí)間順序記錄的一序列數(shù)據(jù),例如:對(duì)某個(gè)服務(wù)器的性能采集數(shù)據(jù),就是一系列時(shí)序數(shù)據(jù),某個(gè)時(shí)間點(diǎn)收集服務(wù)器的cpu、內(nèi)存、io等,時(shí)間點(diǎn)+性能數(shù)據(jù)形成一個(gè)數(shù)據(jù)點(diǎn),一序列的數(shù)據(jù)點(diǎn)就是時(shí)序數(shù)據(jù)。時(shí)序數(shù)據(jù)庫(kù)就是專門用來(lái)存儲(chǔ)這種時(shí)序數(shù)據(jù)的數(shù)據(jù)庫(kù),因?yàn)闀r(shí)序數(shù)據(jù)的特殊性,需要時(shí)序數(shù)據(jù)庫(kù)能夠支持快速的大批量寫入、高性能搜索、聚合等

時(shí)序數(shù)據(jù)庫(kù)的基本概念

metric: 度量,可以類比為關(guān)系數(shù)據(jù)庫(kù)的table,或是ES中的索引
data point: 數(shù)據(jù)點(diǎn),可以類比關(guān)系數(shù)據(jù)庫(kù)的一行數(shù)據(jù)
time: 一個(gè)數(shù)據(jù)點(diǎn)產(chǎn)生的時(shí)間,在時(shí)序數(shù)據(jù)中是必須字段
fields: (指標(biāo)列)度量里的數(shù)據(jù)字段,可以由多個(gè)字段組成,存儲(chǔ)一個(gè)數(shù)據(jù)點(diǎn)里的數(shù)據(jù),隨時(shí)間變化的數(shù)據(jù)字段,就放在這里面;比如上述例子:cpu/memory等存在這里
tags: (維度列)度量的附加信息,存放不隨時(shí)間變化的字段,一般用于存儲(chǔ)描述這個(gè)數(shù)據(jù)點(diǎn)的字段,比如上述例子: 服務(wù)器ip mac等標(biāo)識(shí)這個(gè)數(shù)據(jù)點(diǎn)的信息字段
一個(gè)數(shù)據(jù)點(diǎn)可以理解為由:time+fields+tags組成,好比關(guān)系型數(shù)據(jù)庫(kù)一行數(shù)據(jù)有多個(gè)列值組成

時(shí)序數(shù)據(jù)庫(kù)排名

2021年1月時(shí)序數(shù)據(jù)庫(kù)排名—前15名

DB-Engines上2021年1月前15名排名如上圖,InfluxDB依然位居榜首

1.InfluxDB

InfluxDB 由 Golang 語(yǔ)言編寫,也是由 Golang 編寫的軟件中比較著名的一個(gè),在很多 Golang 的沙龍或者文章中可能都會(huì)把 InfluxDB 當(dāng)標(biāo)桿來(lái)介紹,這也間接幫助 InfluxDB 提高了知名度。

InfluxDB的主要特點(diǎn)包括下面這些:
1、schemaless(無(wú)結(jié)構(gòu)),可以是任意數(shù)量的列
2、可擴(kuò)展(集群)
3、方便、強(qiáng)大的查詢語(yǔ)言
4、Native HTTP API
5、集成了數(shù)據(jù)采集、存儲(chǔ)、可視化功能
6、實(shí)時(shí)數(shù)據(jù) Downsampling
7、高效存儲(chǔ),使用高壓縮比算法,支持retention polices
8、InfluxDB 是 TSDB 中為數(shù)不多的進(jìn)行了用戶和角色方面實(shí)現(xiàn)的,提供了 Cluster Admin、Database Admin 和 Database User 三種角色。

InfluxDB 的數(shù)據(jù)采集系統(tǒng)也支持多種協(xié)議和插件: - 行文本 - UDP - Graphite - CollectD - OpenTSDB
不過(guò) InfluxDB 每次變動(dòng)都較大,尤其是在存儲(chǔ)和集群方面,追求平平安過(guò)日子,不想瞎折騰的可以考慮下。
注意:由于InfluxDB開(kāi)發(fā)太活躍了,很可能你在網(wǎng)上搜到的資料都是老的,會(huì)害到你,所以你需要以官方文檔為主。

2.Kbd+

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

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

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

3.Prometheus

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

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

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

多維數(shù)據(jù)模型(時(shí)序列數(shù)據(jù)由metric名和一組key/value組成)
靈活的查詢語(yǔ)言
不依賴分布式存儲(chǔ),單臺(tái)服務(wù)器即可工作
通過(guò)基于HTTP的pull方式采集是序列數(shù)據(jù)
可以通過(guò)中間網(wǎng)關(guān)進(jìn)行時(shí)序列數(shù)據(jù)推送
多種可視化和儀表盤支持
由于 Prometheus 采用了類似 OpenTSDB 和 InfluxDB 的 key/value 維度機(jī)制,所以如果你對(duì)任一種 TSDB 有了解的話,學(xué)習(xí)起來(lái)會(huì)簡(jiǎn)單些。

4.Graphite

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

存儲(chǔ)數(shù)值型時(shí)序列數(shù)據(jù)
根據(jù)請(qǐng)求對(duì)數(shù)據(jù)進(jìn)行可視化(畫圖)
相應(yīng)的,它的特點(diǎn)為:

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

whisper:創(chuàng)建、更新RRD文件
carbon:以守護(hù)進(jìn)程的形式運(yùn)行,接收數(shù)據(jù)寫入請(qǐng)求
carbon-cache:數(shù)據(jù)存儲(chǔ)
carbon-relay:分區(qū)和復(fù)制,位于carbon-cache之前,類似carbon-cache的負(fù)載均衡
carbon-aggregator:數(shù)據(jù)集計(jì),用于減輕carbon-cache的負(fù)載
graphite-web:用于讀取、展示數(shù)據(jù)的Web應(yīng)用
whisper 使用了類似 RRDtool 的 RRD 文件格式,它也不像 C/S 結(jié)構(gòu)的軟件一樣,沒(méi)有服務(wù)進(jìn)程,只是作為 Python library 使用,提供對(duì)數(shù)據(jù)的 create/update/fetch 操作。

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

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

5.RPDtool

RRDtool是用于時(shí)序數(shù)據(jù)的OpenSource行業(yè)標(biāo)準(zhǔn),高性能數(shù)據(jù)記錄和圖形系統(tǒng)。RRDtool可以輕松集成到shell scripts, perl, python, ruby, lua ,tcl 應(yīng)用程序中。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容