淺析下開源時(shí)序數(shù)據(jù)庫VictoriaMetrics的存儲(chǔ)機(jī)制

VictoriaMetrics是一個(gè)快速高效且可擴(kuò)展的監(jiān)控解決方案和時(shí)序數(shù)據(jù)庫,可以作為Prometheus的長期遠(yuǎn)端存儲(chǔ)坞琴,具備的特性有:

- 支持prometheus查詢api逾冬,同時(shí)實(shí)現(xiàn)了一個(gè)metricsql 查詢語言

- 支持全局查詢視圖,支持多prometheus 實(shí)例寫數(shù)據(jù)到VictoriaMetrics结窘,然后提供一個(gè)統(tǒng)一的查詢

- 支持集群

- 高性能

- 支持多種協(xié)議蚤氏,包括influxdb line協(xié)議,prometheus metrics,graphite 簿废,prometheus遠(yuǎn)端寫api,opentsdb http協(xié)議等

- 高壓縮比

本文主要分析下VictoriaMetrics的存儲(chǔ)機(jī)制络它,包括整體架構(gòu)族檬、數(shù)據(jù)模型、磁盤目錄化戳、文件格式等部分单料,對(duì)應(yīng)的源碼版本號(hào)為v1.45.0。

整體架構(gòu)

VictoriaMetrics的集群主要由vmstorage点楼、vminsert扫尖、vmselect等三部分組成,其中掠廓,vmstorage 負(fù)責(zé)提供數(shù)據(jù)存儲(chǔ)服務(wù); vminsert 是數(shù)據(jù)存儲(chǔ) vmstorage 的代理换怖,使用一致性hash算法進(jìn)行寫入分片; vmselect 負(fù)責(zé)數(shù)據(jù)查詢蟀瞧,根據(jù)輸入的查詢條件從 vmstorage 中查詢數(shù)據(jù)沉颂。

VictoriaMetrics的這個(gè)三個(gè)組件每個(gè)組件都可以單獨(dú)進(jìn)行擴(kuò)展条摸,并運(yùn)行在大多數(shù)合適軟件上。vmstorage采用shared-nothing架構(gòu)铸屉,優(yōu)點(diǎn)是 vmstorage的節(jié)點(diǎn)相互之間無感知钉蒲,相互之間無需通信,不共享任何數(shù)據(jù)彻坛,增加了集群的可用性顷啼、簡化了集群的運(yùn)維和集群的擴(kuò)展。

另外昌屉,VictoriaMetrics集群支持多個(gè)隔離的租戶特性钙蒙,又名命名空間。租戶通過accountID (或者accountID:projectID) 來標(biāo)識(shí)怠益,這些ID放在請求URL中仪搔。有關(guān)VictoriaMetrics租戶的一些事實(shí):

- 每個(gè)accountID和projectID由[0 .. 2 ^ 32)范圍內(nèi)的任意32位整數(shù)標(biāo)識(shí)。如果缺少projectID蜻牢,則會(huì)將其自動(dòng)分配為0。預(yù)計(jì)有關(guān)租戶的其他信息(例如身份驗(yàn)證令牌偏陪,租戶名稱抢呆,限制,計(jì)費(fèi)等)將存儲(chǔ)在單獨(dú)的關(guān)系數(shù)據(jù)庫中笛谦。此數(shù)據(jù)庫必須由位于VictoriaMetrics群集前面的單獨(dú)服務(wù)(例如vmauth)管理抱虐。

- 將第一個(gè)數(shù)據(jù)點(diǎn)寫入給定租戶時(shí),將自動(dòng)創(chuàng)建租戶饥脑。

- 所有租戶的數(shù)據(jù)平均分布在可用的vmstorage節(jié)點(diǎn)之間恳邀。當(dāng)不同的租戶具有不同的數(shù)據(jù)量和不同的查詢負(fù)載時(shí),這可以保證在vmstorage節(jié)點(diǎn)之間平均負(fù)載灶轰。

整體上來說谣沸,VictoriaMetrics支持多租戶,但租戶的信息需要使用額外的關(guān)系型數(shù)據(jù)庫來存儲(chǔ)笋颤,且VictoriaMetrics不支持在單個(gè)請求中查詢多個(gè)租戶乳附。

數(shù)據(jù)模型

開門見山,VictoriaMetrics采用的數(shù)據(jù)模型是單值模型伴澄,且只支持浮點(diǎn)數(shù)指標(biāo)赋除。那么到底什么是單值模型呢?目前非凌,常見的時(shí)序數(shù)據(jù)庫的數(shù)據(jù)模型举农,主要分成單值模型和多值模型。這里簡單說明下單值模型和多值模型敞嗡,整體上颁糟,可以認(rèn)為單值模型是多值模型的一個(gè)特例祭犯。

單值模型是根據(jù)業(yè)務(wù)指標(biāo)數(shù)據(jù)建模,按照單個(gè)指標(biāo)的細(xì)粒度進(jìn)行數(shù)據(jù)使用和邏輯存儲(chǔ)滚停,如下圖所示沃粗,一行數(shù)據(jù)只有一個(gè)指標(biāo)值,即value列键畴。目前采用單值模型的時(shí)序數(shù)據(jù)庫最盅,有OpenTSDB、KairosDB起惕、Prometheus等涡贱。

多值的模型則是針對(duì)數(shù)據(jù)源建模,我們每一行數(shù)據(jù)針對(duì)的是一個(gè)數(shù)據(jù)源惹想,它的被測量的多個(gè)指標(biāo)在同一列上问词,如下圖所示,一行數(shù)據(jù)有多個(gè)指標(biāo)值嘀粱,即有cpu和io兩列激挪。目前采用多值模型的時(shí)序數(shù)據(jù)庫,有InfluxDB锋叨、TimescaleDB等垄分。

磁盤目錄

VictoriaMetrics的根目錄下主要包括4個(gè)目錄或文件,如下圖所示娃磺。其中薄湿,最主要的是數(shù)據(jù)目錄data和索引目錄indexdb,flock.lock文件為文件鎖文件偷卧,用于VictoriaMetrics進(jìn)程鎖住文件豺瘤,不允許別的進(jìn)程進(jìn)行修改目錄或文件。

數(shù)據(jù)目錄

數(shù)據(jù)目錄data的具體結(jié)構(gòu)听诸,如下圖所示坐求,在圖中使用紅色文字,對(duì)主要目錄或文件做了簡單說明蛇更,其中最主要的是big目錄和small目錄瞻赶,這兩個(gè)目錄的結(jié)構(gòu)是一樣的。其中派任,在VictoriaMetrics中砸逊,使用table來表示的數(shù)據(jù)或者索引的根目錄,而實(shí)際上VictoriaMetrics中沒有實(shí)際的表table級(jí)別目錄掌逛。

在small目錄下师逸,以月為單位不斷生成partition目錄,比如上圖中的2020_11目錄豆混,對(duì)應(yīng)的實(shí)現(xiàn)在源碼lib/storage/partition.go中篓像。partition目錄包括part目錄动知、臨時(shí)目錄tmp、 事務(wù)目錄txn等三個(gè)目錄员辩。

內(nèi)存中的數(shù)據(jù)每刷盤一次就會(huì)生成一個(gè)part目錄盒粮,如上圖中的"708_354_20201103102134.255_20201103102149.255_1643F83394CA24A7",目錄名中的708表示這個(gè)目錄下包含的數(shù)據(jù)行數(shù)rowsCount, 目錄名中的354表示這個(gè)目錄中包含的數(shù)據(jù)塊數(shù)blocksCount, 20201103102134.255表示目錄中包含的數(shù)據(jù)的最小時(shí)間戳奠滑,20201103102149.255表示目錄中包含的數(shù)據(jù)的最大時(shí)間戳丹皱,1643F83394CA24A7是生成這個(gè)目錄時(shí)的系統(tǒng)納秒時(shí)間戳的16進(jìn)制表示,對(duì)應(yīng)的實(shí)現(xiàn)邏輯在源碼lib/storage/part.go中宋税;

看到這里摊崭,可能會(huì)有一些疑問?比如為何要分成big和small目錄, 或者說big目錄和small中的數(shù)據(jù)關(guān)系是什么杰赛? 這個(gè)需要從VictoriaMetrics的compaction機(jī)制講起呢簸。

在VictoriaMetrics中,small目錄和big目錄都會(huì)周期性檢查乏屯,是否需要做part的合并根时。VictoriaMetrics默認(rèn)每個(gè)10ms檢查一次partition目錄下的part是否需要做merge。如果檢查出有滿足merge條件的parts瓶珊,則這些parts合并為一個(gè)part啸箫。如果沒有滿足條件的part進(jìn)行merge,則以10ms為基進(jìn)行指數(shù)休眠伞芹,最大休眠時(shí)間為10s。

VictoriaMetrics在寫數(shù)據(jù)時(shí)蝉娜,先寫入在small目錄下的相應(yīng)partition目錄下面的唱较,small目錄下的每個(gè)partition最多256個(gè)part。VictoriaMetrics在Compaction時(shí)召川,默認(rèn)一次最多合并15個(gè)part南缓,且small目錄下的part最多包含1000W行數(shù)據(jù),即1000W個(gè)數(shù)據(jù)點(diǎn)荧呐。因此汉形,當(dāng)一次待合并的parts中包含的行數(shù)超過1000W行時(shí),其合并的輸出路徑為big目錄下的同名partition目錄下倍阐。

因此概疆,big目錄下的數(shù)據(jù)由small目錄下的數(shù)據(jù)在后臺(tái)compaction時(shí)合并生成的。 那么為什么要分成big目錄和small目錄呢峰搪?

這個(gè)主要是從磁盤空間占用上來考慮的岔冀。時(shí)序數(shù)據(jù)經(jīng)常讀取最近寫入的數(shù)據(jù),較少讀歷史數(shù)據(jù)概耻。而且使套,時(shí)序數(shù)據(jù)的數(shù)據(jù)量比較大罐呼,通常會(huì)使用壓縮算法進(jìn)行壓縮。

數(shù)據(jù)進(jìn)行壓縮后侦高,讀取時(shí)需要解壓嫉柴,采用不同級(jí)別的壓縮壓縮算法其解壓速度不一樣,通常壓縮級(jí)別越高奉呛,其解壓速度越慢计螺。在VictoriaMetrics在時(shí)序壓縮的基礎(chǔ)上,又采用了ZSTD這個(gè)通用壓縮算法進(jìn)一步壓縮了數(shù)據(jù)侧馅,以提高壓縮率危尿。在small目錄中的part數(shù)據(jù),采用的是低級(jí)別的ZSTD馁痴,而big目錄下的數(shù)據(jù)谊娇,采用的是高級(jí)別的ZSTD。

因此罗晕,VictoriaMetrics分成small目錄和big目錄济欢,主要是兼顧近期數(shù)據(jù)的讀取和歷史數(shù)據(jù)的壓縮率。

索引目錄

索引目錄indexdb的具體結(jié)構(gòu)小渊,如下圖所示法褥,在圖中使用紅色文字,對(duì)主要目錄或文件做了簡單說明酬屉。與數(shù)據(jù)目錄不同的是半等,indexdb目錄下由多個(gè)table目錄,每個(gè)table目錄代表一個(gè)完整的自治的索引呐萨,每個(gè)table目錄下杀饵,又有多個(gè)不同的part目錄,part命名方式比較簡單谬擦,有文件包含的item數(shù)itemsCount和block數(shù)blocksCount, 以及根據(jù)系統(tǒng)納秒時(shí)間戳自增生成的mergeIdx的16進(jìn)制表示切距。

indexdb下面的形如"1643F4F397B53DEE"是怎么生成的,或者什么時(shí)候切換新的目錄寫索引的呢惨远?VictoriaMetrics會(huì)根據(jù)用戶設(shè)置的數(shù)據(jù)保留周期retention來定期滾動(dòng)索引目錄谜悟,當(dāng)前一個(gè)索引目錄的保留時(shí)間到了,就會(huì)切換一個(gè)新的目錄北秽,重新生成索引葡幸。

文件格式

在介紹具體的文件格式之前,不得不提下VictoriaMetrics對(duì)于寫入數(shù)據(jù)的處理過程羡儿。下圖是VictoriaMetrics支持的Prometheus協(xié)議的一個(gè)寫入示例礼患。

VictoriaMetrics在接受到寫入請求時(shí),會(huì)對(duì)請求中包含的時(shí)序數(shù)據(jù)做轉(zhuǎn)換處理,如下圖所示缅叠。首先先根據(jù)包含metric和labels的MetricName生成一個(gè)唯一標(biāo)識(shí)TSID悄泥,然后metric + labels + TSID作為索引index, TSID + timestamp + value作為數(shù)據(jù)data肤粱,最后索引index和數(shù)據(jù)data分別進(jìn)行存儲(chǔ)和檢索弹囚。


因此,VictoriaMetrics的數(shù)據(jù)整體上分成索引和數(shù)據(jù)兩個(gè)部分领曼,因此文件格式整體上會(huì)有兩個(gè)部分鸥鹉。其中,索引部分主要是用于支持按照label或者tag進(jìn)行多維檢索庶骄。與大多數(shù)時(shí)序數(shù)據(jù)庫的數(shù)據(jù)組織方式一樣毁渗,比如InfluxDB、Prometheus单刁、OpenTSDB等灸异,VictoriaMetrics也是按時(shí)間線來組織數(shù)據(jù)的,即數(shù)據(jù)存儲(chǔ)時(shí)羔飞,先將數(shù)據(jù)按TSID進(jìn)行分組肺樟,然后每個(gè)TSID的包含的數(shù)據(jù)點(diǎn)各自使用列式壓縮存儲(chǔ)。

索引文件

VictoriaMetrics每次內(nèi)存Flush或者后臺(tái)Merge時(shí)生成的索引part逻淌,主要包含metaindex.bin么伯、index.bin、lens.bin卡儒、items.bin等4個(gè)文件田柔。這四個(gè)文件的關(guān)系如下圖所示, metaindex.bin文件通過metaindex_row索引index.bin文件,index.bin文件通過indexBlock中的blockHeader同時(shí)索引lens.bin文件和items.bin文件骨望。

metaindex.bin文件中凯楔,包含一系列的metaindex_row, 每個(gè)metaindex_row中包含最小項(xiàng)firstItem锦募、索引塊包含的塊頭部數(shù)blockHeadersCount、索引塊偏移indexBlockOffset邻遏、索引塊大小indexBlockSize糠亩。

- metaindex_row在文件中的位置按照firstItem的大小的字典序排序存儲(chǔ),以支持二分檢索准验;

- metaindex.bin文件使用ZSTD進(jìn)行壓縮赎线;

- metaindex.bin文件中的內(nèi)容在part打開時(shí),會(huì)全部讀出加載至內(nèi)存中糊饱,以加速查詢過濾垂寥;

- metaindex_row包含的firstItem為其索引的IndexBlock中所有blockHeader中的字典序最小的firstItem;

- 查找時(shí)根據(jù)firstItem進(jìn)行二分檢索;

index.bin文件中滞项,包含一系列的indexBlock, 每個(gè)indexBlock又包含一系列blockHeader狭归,每個(gè)blockHeader的包含item的公共前綴commonPrefix、最小項(xiàng)firstItem文判、itemsData的序列化類型marshalType过椎、itemsData包含的item數(shù)、item塊的偏移itemsBlockOffset等內(nèi)容戏仓。

- 每個(gè)indexBlock使用ZSTD壓縮算法進(jìn)行壓縮疚宇;

- 在indexBlock中查找時(shí),根據(jù)firstItem進(jìn)行二分檢索blockHeader赏殃;

items.bin文件中敷待,包含一系列的itemsData, 每個(gè)itemsData又包含一系列的item。

- itemsData會(huì)根據(jù)情況是否使用ZTSD壓縮仁热,當(dāng)item個(gè)數(shù)小于2時(shí)榜揖,或者itemsData的長度小于64字節(jié)時(shí),不壓縮股耽;當(dāng)itemsData使用ZSTD壓縮后的大小根盒,大于原始itemsData的0.9倍時(shí),則不壓縮物蝙,否則使用ZSTD算法進(jìn)行壓縮炎滞。

- 每個(gè)item在存儲(chǔ)時(shí),去掉了blockHeader中的公共前綴commonPrefix以提高壓縮率诬乞。

lens.bin文件中册赛,包含一系列的lensData, 每個(gè)lensData又包含一系列8字節(jié)的長度len, 長度len標(biāo)識(shí)items.bin文件中對(duì)應(yīng)item的長度震嫉。在讀取或者需要解析itemsData中的item時(shí)森瘪,先要讀取對(duì)應(yīng)的lensData中對(duì)應(yīng)的長度len。 當(dāng)itemsData進(jìn)行壓縮時(shí)票堵,lensData會(huì)先使用異或算法進(jìn)行壓縮扼睬,然后再使用ZSTD算法進(jìn)一步壓縮。

VictoriaMetrics索引文件都是圍繞著item來組織的悴势,那么item的結(jié)構(gòu)是什么樣子的窗宇?或者item的種類有哪些? 在VictoriaMetrics中item的整體上是一個(gè)KeyValue結(jié)構(gòu)的字節(jié)數(shù)組特纤,共計(jì)有7種類型军俊,每種類型的item通過固定前綴來區(qū)分,前綴類型如下圖所示捧存。

VictoriaMetrics是怎么基于item支持tag多維檢索的呢粪躬? 這里就不得不提下VictoriaMetrics的TSID的生成過程担败。

VictoriaMetrics的MetricName的結(jié)構(gòu)如下所示,包含MetricGroup字節(jié)數(shù)組和Tag數(shù)組镰官,其中提前,MetricGroup是可選的,每個(gè)Tag由Key和Value等字節(jié)數(shù)組構(gòu)成朋魔。

VictoriaMetrics的TSID的結(jié)構(gòu)如下所示岖研,包含MetricGroupID,JobID警检,InstanceID孙援,MetricID等四個(gè)字段,其中除了MetricID外扇雕,其他三個(gè)字段都是可選的拓售。這個(gè)幾個(gè)ID的生成方法如下:

- metricGroupID根據(jù)MetricName中的MetricGroup使用xxhash的sum64算法生成。

- JobID和InstanceID分別由MetricName中的tag的第一個(gè)tag和第二個(gè)tag使用xxhash的sum64算法生成镶奉。為什么使用第一個(gè)tag和第二個(gè)tag础淤?這是因?yàn)閂ictoriaMetrics在寫入時(shí),將寫入請求中的JobID和InstanceID放在了Tag數(shù)組的第一個(gè)和第二個(gè)位置哨苛。

- MetricID鸽凶,使用VictoriaMetrics進(jìn)程啟動(dòng)時(shí)的系統(tǒng)納秒時(shí)間戳自增生成。

因?yàn)門SID中除了MetricID外建峭,其他字段都是可選的玻侥,因此TSID中可以始終作為有效信息的只有metricID,因此VictoriaMetrics的在構(gòu)建tag到TSID的字典過程中亿蒸,是直接存儲(chǔ)的tag到metricID的字典凑兰。

以寫入http_requests_total{status="200", method="GET"}為例,則MetricName為http_requests_total{status="200", method="GET"}边锁, 假設(shè)生成的TSID為{metricGroupID=0, jobID=0, instanceID=0, metricID=51106185174286}姑食,則VictoriaMetrics在寫入時(shí)就構(gòu)建了如下幾種類型的索引item,其他類型的索引item是在后臺(tái)或者查詢時(shí)構(gòu)建的茅坛。

- metricName -> TSID, 即http_requests_total{status="200", method="GET"} -> {metricGroupID=0, jobID=0, instanceID=0, metricID=51106185174286}

- metricID -> metricName音半,即51106185174286 -> http_requests_total{status="200", method="GET"}

- metricID -> TSID,即51106185174286 -> {metricGroupID=0, jobID=0, instanceID=0, metricID=51106185174286}

- tag -> metricID贡蓖,即 status="200" -> 51106185174286,? method="GET"? -> 51106185174286, "" = http_requests_total -> 51106185174286

有了這些索引的item后祟剔,就可以支持基于tag的多維檢索了,在當(dāng)給定查詢條件http_requests_total{status="200"}時(shí)摩梧,VictoriaMetrics先根據(jù)給定的tag條件,找出每個(gè)tag的metricID列表宣旱,然后求所有tag的metricID列表的交集仅父,然后根據(jù)交集中的metricID,再到索引文件中檢索出TSID,根據(jù)TSID就可以到數(shù)據(jù)文件中查詢數(shù)據(jù)了笙纤,在返回結(jié)果之前耗溜,再根據(jù)TSID中的metricID,到索引文件中檢索出對(duì)應(yīng)的寫入時(shí)的原始MetircName省容。

但是由于VictoriaMetrics的tag到metricID的字典抖拴,沒有將相同tag的所有metricID放在一起存儲(chǔ),在檢索時(shí)腥椒,一個(gè)tag可能需要查詢多次才能得到完整的metricID列表阿宅。另外查詢出metricID后,還要再到索引文件中去檢索TSID才能去數(shù)據(jù)文件查詢數(shù)據(jù)笼蛛,又增加了一次IO開銷洒放。這樣來看的話,VictoriaMetrics的索引文件在檢索時(shí)滨砍,如果命中的時(shí)間線比較多的情況下往湿,其IO開銷會(huì)比較大,查詢延遲也會(huì)比較高惋戏。

數(shù)據(jù)文件

VictoriaMetrics每次內(nèi)存Flush或者后臺(tái)Merge時(shí)生成的數(shù)據(jù)part领追,包含metaindex.bin、index.bin响逢、timestamps.bin绒窑、values.bin等4個(gè)文件。這四個(gè)文件的關(guān)系如下所示龄句。metaindex.bin文件索引index.bin文件回论,index.bin文件同時(shí)索引timestamps.bin和values.bin文件。

metaindex.bin文件中分歇,包含一系列的metaindex_row傀蓉, 每個(gè)metaindex_row中包含時(shí)間線標(biāo)識(shí)TSID、最小時(shí)間戳minTimestamp职抡、最大時(shí)間戳maxTimestamp葬燎、索引塊偏移indexBlockOffset、索引塊大小indexBlockSize缚甩、索引塊包含的塊頭部數(shù)blockHeadersCount谱净。

- metaindex_row在文件中的位置按照TSID的大小的字典序排序存儲(chǔ);

- metaindex.bin文件使用ZSTD進(jìn)行壓縮擅威;

- metaindex.bin文件中的內(nèi)容在part打開時(shí)壕探,會(huì)全部讀出加載至內(nèi)存中,以加速查詢過濾郊丛;

- metaindex_row包含時(shí)間線標(biāo)識(shí)TSID為其索引的IndexBlock中所有blockHeader中的最小時(shí)間標(biāo)識(shí)TSID李请;

- metaindex_row包含最小時(shí)間戳minTimestamp為其索引的IndexBlock中所有blockHeader中的最小時(shí)間戳minTimestamp瞧筛;

- metaindex_row包含最大時(shí)間戳maxTimestamp為其索引的IndexBlock中所有blockHeader中的最大時(shí)間戳maxTimestamp;

- 查找時(shí)根據(jù)TSID進(jìn)行二分檢索导盅;

index.bin文件中较幌,包含一系列的indexBlock, 每個(gè)indexBlock又包含一系列blockHeader,每個(gè)blockHeader的包含時(shí)間線標(biāo)識(shí)TSID白翻、最小時(shí)間戳minTimestamp乍炉、最大時(shí)間戳maxTimestamp、第一個(gè)指標(biāo)值firstValue滤馍、時(shí)間戳數(shù)據(jù)塊偏移timestampsBlockOffset岛琼、指標(biāo)值數(shù)據(jù)塊偏移valuesBlockOffset等內(nèi)容。

- 每個(gè)indexBlock使用ZSTD壓縮算法進(jìn)行壓縮纪蜒;

- 查找時(shí)衷恭,線性遍歷blockHeader查找TSID;

timestamps.bin文件中纯续,包含一系列時(shí)間線的時(shí)間戳壓縮塊timestampsData;? values.bin文件中随珠,包含的一系列時(shí)間線的指標(biāo)值壓縮塊valuesData。 其中猬错,timestampsData和values.data會(huì)根據(jù)時(shí)序數(shù)據(jù)特征進(jìn)行壓縮窗看,整體上的壓縮思路是:先做時(shí)序壓縮,然后在做通用壓縮倦炒。比如显沈,先做delta-of-delta計(jì)算或者異或計(jì)算,然后根據(jù)情況做zig-zag逢唤,最后再根據(jù)情況做一次ZSTD壓縮拉讯,VictoriaMetrics支持的壓縮算法或者類型主要有6種,如下圖所示鳖藕,壓縮編碼源碼在lib/encoding/encoding.go文件中魔慷。

VictoriaMetrics文檔中提到在生產(chǎn)環(huán)境中,每個(gè)數(shù)據(jù)點(diǎn)(8字節(jié)時(shí)間戳 + 8字節(jié)value共計(jì)16字節(jié))壓縮后小于1個(gè)字節(jié)著恩,最高可達(dá) 0.4字節(jié)院尔,如下所示。

VictoriaMetrics總結(jié)

VictoriaMetrics的整體的存儲(chǔ)設(shè)計(jì)還是不錯(cuò)的喉誊,比如數(shù)據(jù)時(shí)間分區(qū)邀摆、數(shù)據(jù)壓縮率高、豐富的生態(tài)協(xié)議等伍茄。但VictoriaMetrics的標(biāo)簽索引栋盹、數(shù)據(jù)可靠性、支持的數(shù)據(jù)類型等方面還存在一些不足敷矫。比如贞盯,標(biāo)簽索引查詢多次IO音念,可能在時(shí)間線數(shù)量非常多的場景下,其檢索效率會(huì)比較低躏敢,且沒有WAL,在寫入時(shí)可能會(huì)存在數(shù)據(jù)丟失的風(fēng)險(xiǎn)整葡。目前只支持浮點(diǎn)數(shù)類型件余,不支持布爾、字符串遭居、字節(jié)數(shù)組等類型啼器。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市俱萍,隨后出現(xiàn)的幾起案子端壳,更是在濱河造成了極大的恐慌,老刑警劉巖枪蘑,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件损谦,死亡現(xiàn)場離奇詭異,居然都是意外死亡岳颇,警方通過查閱死者的電腦和手機(jī)照捡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來话侧,“玉大人栗精,你說我怎么就攤上這事≌芭簦” “怎么了悲立?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長新博。 經(jīng)常有香客問我薪夕,道長,這世上最難降的妖魔是什么叭披? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任寥殖,我火速辦了婚禮,結(jié)果婚禮上涩蜘,老公的妹妹穿的比我還像新娘嚼贡。我一直安慰自己,他們只是感情好同诫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布粤策。 她就那樣靜靜地躺著,像睡著了一般误窖。 火紅的嫁衣襯著肌膚如雪叮盘。 梳的紋絲不亂的頭發(fā)上秩贰,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音柔吼,去河邊找鬼毒费。 笑死,一個(gè)胖子當(dāng)著我的面吹牛愈魏,可吹牛的內(nèi)容都是我干的觅玻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼培漏,長吁一口氣:“原來是場噩夢啊……” “哼溪厘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起牌柄,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤畸悬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后珊佣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹋宦,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年彩扔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妆档。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虫碉,死狀恐怖贾惦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情敦捧,我是刑警寧澤须板,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站兢卵,受9級(jí)特大地震影響习瑰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秽荤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一甜奄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸晋修。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春蜒茄,著一層夾襖步出監(jiān)牢的瞬間唉擂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國打工檀葛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玩祟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓屿聋,卻偏偏與公主長得像卵凑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胜臊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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