為什么使用定制的時(shí)間序列數(shù)據(jù)庫(kù)?
譯文?譯者 | 布加迪
審校 | 孫淑娟
開(kāi)發(fā)人員和公司在數(shù)據(jù)庫(kù)方面面臨比以往更多的選擇。為項(xiàng)目選擇合適的數(shù)據(jù)庫(kù)可以節(jié)省寫入和查詢數(shù)據(jù)的時(shí)間。由于許多公司處理更大的數(shù)據(jù)集來(lái)構(gòu)建越來(lái)越智能化和自動(dòng)化的系統(tǒng),效率是關(guān)鍵。對(duì)于許多工作負(fù)載而言,使用時(shí)間序列數(shù)據(jù)庫(kù)是明智的選擇:可以節(jié)省時(shí)間和存儲(chǔ)空間。
1.時(shí)間序列數(shù)據(jù)有何不同?
時(shí)間序列數(shù)據(jù)是任何帶有時(shí)間戳的度量指標(biāo)。它包括多種變量,從天氣模式到CPU使用率,不一而足。它常常來(lái)自需要做出實(shí)時(shí)決策的傳感器、系統(tǒng)或應(yīng)用程序。這些數(shù)據(jù)對(duì)于了解過(guò)去的表現(xiàn)和創(chuàng)建模型以預(yù)測(cè)未來(lái)的結(jié)果都至關(guān)重要。這些計(jì)算中涉及的數(shù)據(jù)量會(huì)迅速增加,避免將資源耗費(fèi)在低效數(shù)據(jù)架構(gòu)上很重要。
時(shí)間序列數(shù)據(jù)庫(kù)旨在處理典型的時(shí)間序列工作負(fù)載。它們經(jīng)過(guò)優(yōu)化,可衡量一段時(shí)間后的變化,而不是數(shù)據(jù)點(diǎn)之間的關(guān)系。兩種主要的時(shí)間序列數(shù)據(jù)是度量指標(biāo)和事件,度量指標(biāo)是定期獲取的,事件則是因外部事件或用戶測(cè)量而不定期獲取的。時(shí)間序列數(shù)據(jù)庫(kù)能夠同時(shí)處理度量指標(biāo)和事件,能夠取得事件數(shù)據(jù)平均值,并將事件轉(zhuǎn)換為度量指標(biāo),這點(diǎn)很重要。
2.存儲(chǔ)數(shù)據(jù)
一種好的數(shù)據(jù)庫(kù)需要安全高效地存儲(chǔ)數(shù)據(jù)。用戶需能夠快速向數(shù)據(jù)庫(kù)寫入數(shù)據(jù),并確信它可以處理計(jì)劃存儲(chǔ)在其中的數(shù)據(jù)量。時(shí)間序列數(shù)據(jù)可能有巨大的容量,需要構(gòu)建存儲(chǔ)它的數(shù)據(jù)庫(kù)以適應(yīng)這種情況。時(shí)間是線性的,時(shí)間序列數(shù)據(jù)庫(kù)可以通過(guò)將新數(shù)據(jù)附加到現(xiàn)有數(shù)據(jù)來(lái)利用這一點(diǎn)。它們經(jīng)過(guò)優(yōu)化,可以以最常用的方式快速寫入時(shí)間戳數(shù)據(jù),從用戶開(kāi)始寫入數(shù)據(jù)的那一刻起就節(jié)省時(shí)間。
時(shí)間序列數(shù)據(jù)庫(kù)還可能內(nèi)置了生命周期管理功能。開(kāi)發(fā)人員或公司起初收集和分析非常詳細(xì)的數(shù)據(jù)很常見(jiàn);隨著時(shí)間的推移,他們希望在不占用太多存儲(chǔ)空間的情況下,存儲(chǔ)描述趨勢(shì)的更小、下采樣的數(shù)據(jù)集。時(shí)間序列數(shù)據(jù)庫(kù)考慮到這一點(diǎn),可以根據(jù)每個(gè)應(yīng)用的需要自動(dòng)聚合和刪除數(shù)據(jù)。如果開(kāi)發(fā)人員使用更基礎(chǔ)的數(shù)據(jù)庫(kù),常常需要?jiǎng)?chuàng)建新的系統(tǒng),以這種方式管理數(shù)據(jù)。有了時(shí)間序列數(shù)據(jù)庫(kù),這一點(diǎn)得到了滿足,開(kāi)發(fā)人員可以專注于應(yīng)用程序。
時(shí)間序列數(shù)據(jù)庫(kù)還需要易于擴(kuò)展。比如在物聯(lián)網(wǎng)使用場(chǎng)景中,隨著更多的傳感器添加進(jìn)來(lái)、項(xiàng)目不斷擴(kuò)大,數(shù)據(jù)急劇增多。這在時(shí)間序列工作負(fù)載中很常見(jiàn),用于這些項(xiàng)目的數(shù)據(jù)庫(kù)就需要能夠適應(yīng)這一點(diǎn)。
3.查詢數(shù)據(jù)
使用時(shí)間序列數(shù)據(jù)庫(kù)還可以縮短時(shí)間序列工作負(fù)載的查詢時(shí)間。處理時(shí)間序列數(shù)據(jù)的最常見(jiàn)的事情之一是,在很長(zhǎng)一段時(shí)間內(nèi)對(duì)數(shù)據(jù)進(jìn)行總結(jié)。在使用行和列來(lái)描述不同數(shù)據(jù)點(diǎn)的關(guān)系的典型關(guān)系數(shù)據(jù)庫(kù)中存儲(chǔ)數(shù)據(jù)時(shí),這種查詢非常慢。而旨在處理時(shí)間序列數(shù)據(jù)的數(shù)據(jù)庫(kù)可以大大提高處理查詢的速度。時(shí)間序列數(shù)據(jù)庫(kù)還可能擁有內(nèi)置的可視化工具或高級(jí)功能,以簡(jiǎn)化常見(jiàn)類型的時(shí)間序列分析。
4.選擇一種時(shí)間序列數(shù)據(jù)庫(kù)
外面有幾種時(shí)間序列數(shù)據(jù)庫(kù)值得探究。就本文而言,我們關(guān)注領(lǐng)先的時(shí)間序列數(shù)據(jù)庫(kù)InfluxDB。InfluxDB為數(shù)據(jù)分配度量指標(biāo)名稱和時(shí)間戳,并為數(shù)據(jù)值和元數(shù)據(jù)使用鍵/值對(duì)。它將度量指標(biāo)名稱和標(biāo)簽集保存在倒排索引中,這加快了查詢速度。用戶可以在一個(gè)時(shí)間范圍內(nèi)基于度量指標(biāo)、標(biāo)簽及/或字段編寫查詢,并以毫秒為單位接收結(jié)果。單單一臺(tái)InfluxDB服務(wù)器每秒可以處理200余萬(wàn)次寫入。與Cassandra等NoSQL數(shù)據(jù)庫(kù)相比,InfluxDB寫入數(shù)據(jù)的速度提高了4.5倍,使用的存儲(chǔ)空間少2.1倍,返回查詢的速度提高了45倍。
數(shù)據(jù)庫(kù)可謂是許多應(yīng)用系統(tǒng)的支柱,處理時(shí)間序列數(shù)據(jù)庫(kù)中的時(shí)間戳數(shù)據(jù)為開(kāi)發(fā)人員節(jié)省了時(shí)間和存儲(chǔ)空間。為某種應(yīng)用選擇合適的數(shù)據(jù)庫(kù)可以讓開(kāi)發(fā)人員專注于構(gòu)建很酷的項(xiàng)目,而不是在開(kāi)始著手之前花時(shí)間來(lái)管理架構(gòu)。
原文鏈接:
https://thenewstack.io/why-use-a-purpose-built-time-series-database/