91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從Elasticsearch到Apache Doris,10倍性?xún)r(jià)比的新一代日志存儲(chǔ)分析平臺(tái)

OSC開(kāi)源社區(qū) ? 來(lái)源:OSC開(kāi)源社區(qū) ? 2023-05-11 10:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文導(dǎo)讀

日志數(shù)據(jù)的處理與分析是最典型的大數(shù)據(jù)分析場(chǎng)景之一,過(guò)去業(yè)內(nèi)以 Elasticsearch 和 Grafana Loki 為代表的兩類(lèi)架構(gòu)難以同時(shí)兼顧高吞吐實(shí)時(shí)寫(xiě)入、低成本海量存儲(chǔ)、實(shí)時(shí)文本檢索的需求。Apache Doris 借鑒了信息檢索的核心技術(shù),在存儲(chǔ)引擎上實(shí)現(xiàn)了面向 AP 場(chǎng)景優(yōu)化的高性能倒排索引,對(duì)于字符串類(lèi)型的全文檢索和普通數(shù)值、日期等類(lèi)型的等值、范圍檢索具有更高效的支持,相較于 Elasticsearch 實(shí)現(xiàn)性?xún)r(jià)比 10 余倍的提升,以此為日志存儲(chǔ)與分析場(chǎng)景提供了更優(yōu)的選擇。

b952d11a-ef56-11ed-90ce-dac502259ad0.png

日志數(shù)據(jù)在企業(yè)大數(shù)據(jù)中非常普遍,其體量往往在企業(yè)大數(shù)據(jù)體系中占據(jù)非常高的比重,包括服務(wù)器、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)設(shè)備、IoT 物聯(lián)網(wǎng)設(shè)備產(chǎn)生的系統(tǒng)運(yùn)維日志,與此同時(shí)還包含了用戶行為埋點(diǎn)等業(yè)務(wù)日志。

日志數(shù)據(jù)對(duì)于保障系統(tǒng)穩(wěn)定運(yùn)行和業(yè)務(wù)發(fā)展至關(guān)重要:基于日志的監(jiān)控告警可以發(fā)現(xiàn)系統(tǒng)運(yùn)行風(fēng)險(xiǎn),及時(shí)預(yù)警;在故障排查過(guò)程中,實(shí)時(shí)日志檢索能幫助工程師快速定位到問(wèn)題,盡快恢復(fù)服務(wù);日志報(bào)表能通過(guò)長(zhǎng)歷史統(tǒng)計(jì)發(fā)現(xiàn)潛在趨勢(shì)。而用戶埋點(diǎn)日志數(shù)據(jù)則是用戶行為分析以及智能推薦業(yè)務(wù)所依賴(lài)的決策基礎(chǔ),有助于用戶需求洞察與體驗(yàn)優(yōu)化以及后續(xù)的業(yè)務(wù)流程改進(jìn)。由于其在業(yè)務(wù)中能發(fā)揮的重要意義,因此構(gòu)建統(tǒng)一的日志分析平臺(tái),提供對(duì)日志數(shù)據(jù)的存儲(chǔ)、高效檢索以及快速分析能力,成為企業(yè)挖掘日志數(shù)據(jù)價(jià)值的關(guān)鍵一環(huán)。而日志數(shù)據(jù)和應(yīng)用場(chǎng)景往往呈現(xiàn)如下的特點(diǎn):
  • 數(shù)據(jù)增長(zhǎng)快:每一次用戶操作、系統(tǒng)事件都會(huì)觸發(fā)新的日志產(chǎn)生,很多企業(yè)每天新增日志達(dá)到幾十甚至幾百億條,對(duì)日志平臺(tái)的寫(xiě)入吞吐要求很高;
  • 數(shù)據(jù)總量大:由于自身業(yè)務(wù)和監(jiān)管等需要,日志數(shù)據(jù)經(jīng)常要存儲(chǔ)較長(zhǎng)的周期,因此累積的數(shù)據(jù)量經(jīng)常達(dá)到幾百 TB 甚至 PB 級(jí),而較老的歷史數(shù)據(jù)訪問(wèn)頻率又比較低,面臨沉重的存儲(chǔ)成本壓力;
  • 時(shí)效性要求高:在故障排查等場(chǎng)景需要能快速查詢(xún)到最新的日志,分鐘級(jí)的數(shù)據(jù)延遲往往無(wú)法滿足業(yè)務(wù)極高的時(shí)效性要求,因此需要實(shí)現(xiàn)日志數(shù)據(jù)的實(shí)時(shí)寫(xiě)入與實(shí)時(shí)查詢(xún)。
這些日志數(shù)據(jù)天然存在的特點(diǎn)也給承載存儲(chǔ)和分析需求的系統(tǒng)帶來(lái)了一定程度的挑戰(zhàn):
  • 高吞吐實(shí)時(shí)寫(xiě)入:即需要保證日志流量的大規(guī)模寫(xiě)入,又要支持低延遲可見(jiàn);
  • 低成本大規(guī)模存儲(chǔ):系統(tǒng)自身可以存儲(chǔ)海量數(shù)據(jù),且通過(guò)數(shù)據(jù)壓縮、冷熱分離等多種機(jī)制降低存儲(chǔ)成本;
  • 高性能交互式分析且支持文本檢索:日志檢索的隨機(jī)性很強(qiáng)、很難提前預(yù)測(cè)模式,因此要求支持靈活的文本檢索,通過(guò)實(shí)時(shí)交互式查詢(xún)滿足分析需求。

b96b4574-ef56-11ed-90ce-dac502259ad0.png

當(dāng)前業(yè)界有兩種比較典型的日志存儲(chǔ)與分析架構(gòu),分別是以 Elasticsearch 為代表的倒排索引檢索架構(gòu)以及以 Loki 為代表的輕量索引/無(wú)索引架構(gòu),如果我們從實(shí)時(shí)寫(xiě)入吞吐、存儲(chǔ)規(guī)模和成本、實(shí)時(shí)交互式查詢(xún)性能等幾方面進(jìn)行對(duì)比,不難發(fā)現(xiàn)以下結(jié)論:
  • 以 ES 為代表的倒排索引檢索架構(gòu),支持全文檢索、查詢(xún)性能好,因此在日志場(chǎng)景中被業(yè)內(nèi)大規(guī)模應(yīng)用,但其仍存在一些不足,包括實(shí)時(shí)寫(xiě)入吞吐低、消耗大量資源構(gòu)建索引,且需要消耗巨大存儲(chǔ)成本;
  • 以 Loki 為代表的輕量索引或無(wú)索引架構(gòu),實(shí)時(shí)寫(xiě)入吞吐高、存儲(chǔ)成本較低,但是檢索性能慢、關(guān)鍵時(shí)候查詢(xún)響應(yīng)跟不上,性能成為制約業(yè)務(wù)分析的最大掣肘。
b980ad7e-ef56-11ed-90ce-dac502259ad0.pngES 在日志場(chǎng)景的優(yōu)勢(shì)在于全文檢索能力,能快速?gòu)暮A咳罩局袡z索出匹配關(guān)鍵字的日志,其底層核心技術(shù)是倒排索引(Inverted Index)。倒排索引是一種用于快速查找文檔中包含特定單詞或短語(yǔ)的數(shù)據(jù)結(jié)構(gòu),最早應(yīng)用于信息檢索領(lǐng)域。如下圖所示,在數(shù)據(jù)寫(xiě)入時(shí),倒排索引可以將每一行文本進(jìn)行分詞,變成一個(gè)個(gè)詞(Term),然后構(gòu)建詞(Term) -> 行號(hào)列表(Posting List) 的映射關(guān)系,將映射關(guān)系按照詞進(jìn)行排序存儲(chǔ)。當(dāng)需要查詢(xún)某個(gè)詞在哪些行出現(xiàn)的時(shí)候,先在 詞 -> 行號(hào)列表 的有序映射關(guān)系中查找詞對(duì)應(yīng)的行號(hào)列表,然后用行號(hào)列表中的行號(hào)去取出對(duì)應(yīng)行的內(nèi)容。這樣的查詢(xún)方式,可以避免遍歷對(duì)每一行數(shù)據(jù)進(jìn)行掃描和匹配,只需要訪問(wèn)包含查找詞的行,在海量數(shù)據(jù)下性能有數(shù)量級(jí)的提升。

b98d574a-ef56-11ed-90ce-dac502259ad0.png

倒排索引原理示意倒排索引為 ES 帶來(lái)快速檢索能力的同時(shí),也付出了寫(xiě)入速度吞吐低和存儲(chǔ)空間占用高的代價(jià)——由于數(shù)據(jù)寫(xiě)入時(shí)倒排索引需要進(jìn)行分詞、詞典排序、構(gòu)建倒排表等 CPU 和內(nèi)存密集型操作,導(dǎo)致寫(xiě)入吞吐大幅下降。而從存儲(chǔ)成本角度考慮,ES 會(huì)存儲(chǔ)原始數(shù)據(jù)和倒排索引,為了加速分析可能還需要額外存儲(chǔ)一份列存數(shù)據(jù),因此 3 份冗余也會(huì)導(dǎo)致更高的存儲(chǔ)空間占用。Loki 則放棄了倒排索引,雖然帶來(lái)來(lái)寫(xiě)入吞吐和存儲(chǔ)空間的優(yōu)勢(shì),但是損失了日志檢索的用戶體驗(yàn),在關(guān)鍵時(shí)刻不能發(fā)揮快速查日志的作用。成本雖然有所降低,但是沒(méi)有真正解決用戶的問(wèn)題。

b9e544d2-ef56-11ed-90ce-dac502259ad0.png

從以上方案對(duì)比可知,以 Elasticsearch 為代表的倒排索引檢索架構(gòu)以及以 Loki 為代表的輕量索引/無(wú)索引架構(gòu)無(wú)法同時(shí)兼顧 高吞吐、低存儲(chǔ)成本和實(shí)時(shí)高性能的要求,只能在某一方面或某幾方面做權(quán)衡取舍。如果在保持倒排索引的文本檢索性能優(yōu)勢(shì)的同時(shí),大幅提升系統(tǒng)的寫(xiě)入速度與吞吐量并降低存儲(chǔ)資源成本,是否日志場(chǎng)景所面臨的困境就迎刃而解呢?答案是肯定的。如果我們希望使用 Apache Doris 來(lái)更好解決日志存儲(chǔ)與分析場(chǎng)景的痛點(diǎn),其實(shí)現(xiàn)路徑也非常清晰——在數(shù)據(jù)庫(kù)內(nèi)部增加倒排索引、以滿足字符串類(lèi)型的全文檢索和普通數(shù)值/日期等類(lèi)型的等值、范圍檢索,同時(shí)進(jìn)一步優(yōu)化倒排索引的查詢(xún)性能、使其更加契合日志數(shù)據(jù)分析的場(chǎng)景需求。在同樣實(shí)現(xiàn)倒排索引的情況下,相較于 ES, Apache Doris 怎么做到更高的性能表現(xiàn)呢?或者說(shuō)現(xiàn)有倒排索引的優(yōu)化空間有哪些呢?
  • ES 基于 Apache Lucene 構(gòu)建倒排索引,Apache Lucene 自 2000 年開(kāi)源至今已有超過(guò) 20 年的歷史,設(shè)計(jì)之初主要面向信息檢索領(lǐng)域、功能豐富且復(fù)雜,而日志和大多數(shù) OLAP 場(chǎng)景只需要其核心功能,包括分詞、倒排表等,而相關(guān)度排序等并非強(qiáng)需求,因此存在進(jìn)一步功能簡(jiǎn)化和性能提升的空間;
  • ES 和 Apache Lucene 均采用 Java 實(shí)現(xiàn),而 Apache Doris 存儲(chǔ)引擎和執(zhí)行引擎采用 C++ 開(kāi)發(fā)并且實(shí)現(xiàn)了全面向量化,相對(duì)于 Java 實(shí)現(xiàn)具有更好的性能;
  • 倒排索引并不能決定性能表現(xiàn)的全部,作為一個(gè)高性能、實(shí)時(shí)的 OLAP 數(shù)據(jù)庫(kù),Apache Doris 的列式存儲(chǔ)引擎、MPP 分布式查詢(xún)框架、向量化執(zhí)行引擎以及智能 CBO 查詢(xún)優(yōu)化器,相較于 ES 更為高效。
通過(guò)在 Apache Doris 2.0.0 最新版本的探索與持續(xù)優(yōu)化,在相同硬件配置和數(shù)據(jù)集的測(cè)試表現(xiàn)上,Apache Doris 在數(shù)據(jù)庫(kù)內(nèi)核實(shí)現(xiàn)高性能倒排索引后,相對(duì)于 ES 實(shí)現(xiàn)了日志數(shù)據(jù)寫(xiě)入速度提升 4 倍、存儲(chǔ)空間降低 80%、查詢(xún)性能提升 2 倍,再結(jié)合 Apache Doris 2.0.0 版本引入的冷熱數(shù)據(jù)分離特性,整體性?xún)r(jià)比提升 10 倍以上!接下來(lái)我們進(jìn)一步介紹設(shè)計(jì)與實(shí)現(xiàn)細(xì)節(jié)。b9fad31a-ef56-11ed-90ce-dac502259ad0.png業(yè)界各類(lèi)系統(tǒng)為了支持全文檢索和任意列索引,往往有兩種實(shí)現(xiàn)方式:一是通過(guò)外接索引系統(tǒng)來(lái)實(shí)現(xiàn),原始數(shù)據(jù)存儲(chǔ)在原系統(tǒng)中、索引存儲(chǔ)在獨(dú)立的索引系統(tǒng)中,兩個(gè)系統(tǒng)通過(guò)數(shù)據(jù)的 ID 進(jìn)行關(guān)聯(lián)。數(shù)據(jù)寫(xiě)入時(shí)會(huì)同步寫(xiě)入到原系統(tǒng)和索引系統(tǒng),索引系統(tǒng)構(gòu)建索引后不存儲(chǔ)完整數(shù)據(jù)只保留索引。查詢(xún)時(shí)先從索引系統(tǒng)查出滿足過(guò)濾條件的數(shù)據(jù) ID 集合,然后用 ID 集合去原系統(tǒng)查原始數(shù)據(jù)。這種架構(gòu)的優(yōu)勢(shì)是實(shí)現(xiàn)簡(jiǎn)單,借力外部索引系統(tǒng),對(duì)原有系統(tǒng)改動(dòng)小。但是問(wèn)題也很明顯:
  • 數(shù)據(jù)寫(xiě)入兩個(gè)系統(tǒng),異常有數(shù)據(jù)不一致的問(wèn)題,也存在一定冗余存儲(chǔ);
  • 查詢(xún)需在兩個(gè)系統(tǒng)進(jìn)行網(wǎng)絡(luò)交互有額外開(kāi)銷(xiāo),數(shù)據(jù)量大時(shí)用 ID 集合去原系統(tǒng)查性能比較低;
  • 維護(hù)兩套系統(tǒng)的復(fù)雜度高,將系統(tǒng)的復(fù)雜性從開(kāi)發(fā)測(cè)轉(zhuǎn)移到運(yùn)維測(cè);
而另一種方式則是直接在系統(tǒng)中內(nèi)置倒排索引,盡管技術(shù)實(shí)現(xiàn)會(huì)更為復(fù)雜,但性能更好、且無(wú)需花費(fèi)額外的系統(tǒng)維護(hù)成本,這也是 Apache Doris 所選擇的方式。

數(shù)據(jù)庫(kù)內(nèi)置倒排索引

在選擇了在數(shù)據(jù)庫(kù)內(nèi)核中內(nèi)置倒排索引后,我們需要進(jìn)一步對(duì) Apache Doris 索引結(jié)構(gòu)進(jìn)行分析,判斷能否通過(guò)在已有索引基礎(chǔ)上進(jìn)行拓展來(lái)實(shí)現(xiàn)。Apache Doris 現(xiàn)有的索引存儲(chǔ)在 Segment 文件的 Index Region 中,按照適用場(chǎng)景可以分為跳數(shù)索引和點(diǎn)查索引兩類(lèi):

1. 跳數(shù)索引:包括 ZoneMap 索引和 Bloom Filter 索引。

  • ZoneMap 索引對(duì)每一個(gè)數(shù)據(jù)塊和文件保存 Min/Max/isnull 等匯總信息,可以用于等值、范圍查詢(xún)的粗粒度過(guò)濾,只能排除不滿足查詢(xún)條件的數(shù)據(jù)塊和文件,不能定位到行,也不支持文本分詞。
  • BloomFilter 索引也是數(shù)據(jù)塊和文件級(jí)別的索引,通過(guò) Bloom Filter 判斷某個(gè)值是否在數(shù)據(jù)塊和文件中,同樣不能定位到行、不支持文本分詞;
2. 點(diǎn)查索引:包括 ShortKey 前綴排序索引和 Bitmap 索引。
  • ShortKey 在排序的基礎(chǔ)上,根據(jù)給定的前綴列實(shí)現(xiàn)快速查詢(xún)數(shù)據(jù)的索引方式,能夠?qū)η熬Y索引的列進(jìn)行等值、范圍查詢(xún),但不支持文本分詞,另外由于數(shù)據(jù)要按前綴索引排序、因此一個(gè)表只允許一組前綴索引。
  • Bitmap 索引記錄數(shù)據(jù)值 -> 行號(hào) Bitmap 的有序映射,是一種很基礎(chǔ)的倒排索引,但是索引結(jié)構(gòu)比較簡(jiǎn)單、查詢(xún)效率不高、不支持文本分詞。
原有索引結(jié)構(gòu)很難滿足日志場(chǎng)景實(shí)時(shí)文本檢索的需求,因此設(shè)計(jì)了全新的倒排索引。倒排索引在設(shè)計(jì)和實(shí)現(xiàn)上我們采取了無(wú)侵入的方式、不改變 Segment 數(shù)據(jù)文件格式,而是增加了新的 Inverted Index File,邏輯上在 Table 的 Column 級(jí)別。具體流程如下:
  • 數(shù)據(jù)寫(xiě)入和 Compaction 階段:在寫(xiě) Segment 文件的同時(shí),同步寫(xiě)入一個(gè) Inverted Index 文件,文件路徑由 Segment ID + Index ID 決定。寫(xiě)入 Segment 的 Row 和 Index 中的 Doc 一一對(duì)應(yīng),由于同步順序?qū)懭耄琒egment 中的 Rowid 和 Index 中的 Docid 完全對(duì)應(yīng)。
  • 查詢(xún)階段:如果查詢(xún) Where 條件中有建了倒排索引的列,會(huì)自動(dòng)去 Index 文件中查詢(xún),返回滿足條件的 Docid List,將 Docid List 一一對(duì)應(yīng)的轉(zhuǎn)成 Rowid Bitmap,然后走 Doris 通用的 Rowid 過(guò)濾機(jī)制只讀取滿足條件的行,達(dá)到查詢(xún)加速的效果。

ba1122f0-ef56-11ed-90ce-dac502259ad0.png

Doris倒排索引架構(gòu)圖

這個(gè)設(shè)計(jì)的好處是已有的數(shù)據(jù)文件無(wú)需修改,可以做到兼容升級(jí),而且增減索引不影響數(shù)據(jù)文件和其他索引,用戶增建索引沒(méi)有負(fù)擔(dān)。

通用倒排索引優(yōu)化

C++和向量化實(shí)現(xiàn)Apache Doris 使用 CLucene(https://clucene.sourceforge.net/) 作為底層的倒排索引庫(kù),CLucene 是一個(gè)用 C++ 實(shí)現(xiàn)的高性能、穩(wěn)定的 Lucene 倒排索引庫(kù),它的功能比較完整,支持分詞和自定義分詞算法,支持全文檢索查詢(xún)和等值、范圍查詢(xún)。Apache Doris 的存儲(chǔ)模塊和 CLucene 都用 C++ 實(shí)現(xiàn),避免了Java Lucene 的 JVM GC 等開(kāi)銷(xiāo),同樣的計(jì)算 C++ 實(shí)現(xiàn)相對(duì)于 Java 性能優(yōu)勢(shì)明顯,而且更利于做向量化加速。Doris 倒排索引進(jìn)行了向量化優(yōu)化,包括分詞、倒排表構(gòu)建、查詢(xún)等,性能得到進(jìn)一步提升。整體來(lái)看 Doris 的倒排索引寫(xiě)入速度可以超過(guò)單核 20MB/s,而 ES 的單核寫(xiě)入速度不到 5MB/s,有 4 倍的性能優(yōu)勢(shì)。列式存儲(chǔ)和壓縮Lucene 本身是文檔存儲(chǔ)模型,主數(shù)據(jù)采用行存,而 Doris 中不同列的倒排索引是相互獨(dú)立的,因此倒排索引文件也采用列式存儲(chǔ),有利于向量化構(gòu)建索引和提高壓縮率。采用壓縮比高且速度快的 ZSTD,通常可以達(dá)到 5 ~10倍的壓縮比,與常用的GZIP壓縮相比有50%以上的空間節(jié)省且速度更快。BKD 索引與數(shù)值、日期類(lèi)型列優(yōu)化針對(duì)數(shù)值、日期類(lèi)型的列,我們還實(shí)現(xiàn)了 BKD 索引,可以對(duì)范圍查詢(xún)提高性能,存儲(chǔ)空間也相對(duì)于轉(zhuǎn)成定長(zhǎng)字符串更加高效,具有以下主要特性和優(yōu)勢(shì):
  • 高效范圍查詢(xún):BKD 索引采用多維數(shù)據(jù)結(jié)構(gòu),為范圍查詢(xún)帶來(lái)高效率。它能迅速定位數(shù)值或日期類(lèi)型列中所需的數(shù)據(jù)范圍,降低查詢(xún)時(shí)間復(fù)雜度。
  • 存儲(chǔ)空間優(yōu)化:與其他索引方法相比,BKD 索引在存儲(chǔ)空間使用上更高效。通過(guò)聚合并壓縮相鄰數(shù)據(jù)塊,減少索引所需存儲(chǔ)空間,降低存儲(chǔ)成本。
  • 多維數(shù)據(jù)支持:BKD 索引具備良好擴(kuò)展性,支持多維數(shù)據(jù)類(lèi)型,如地理坐標(biāo)(GEO point)和范圍(Range),使其在處理復(fù)雜數(shù)據(jù)類(lèi)型時(shí)具有高適應(yīng)性。
此外,我們?cè)谠?BKD 索引能力基礎(chǔ)上進(jìn)行了進(jìn)一步拓展:
  • 優(yōu)化低基數(shù)場(chǎng)景:針對(duì)數(shù)值分布集中、單個(gè)數(shù)值倒排列表較多的低基數(shù)場(chǎng)景,我們調(diào)整了針對(duì)性的壓縮算法,降低大量倒排表解壓縮和反序列化所帶來(lái)的CPU性能消耗。
  • 預(yù)查詢(xún)技術(shù):針對(duì)查詢(xún)結(jié)果命中數(shù)較高的場(chǎng)景,我們采用預(yù)查詢(xún)技術(shù)進(jìn)行命中數(shù)預(yù)估。若命中數(shù)顯著超過(guò)閾值,可跳過(guò)索引查詢(xún),直接利用Doris在大數(shù)據(jù)量查詢(xún)下的技術(shù)優(yōu)勢(shì)進(jìn)行數(shù)據(jù)過(guò)濾。

面向 OLAP 的倒排索引優(yōu)化

日志存儲(chǔ)和分析場(chǎng)景對(duì)檢索的需求很簡(jiǎn)單,不需要特別復(fù)雜的功能(比如相關(guān)性排序),更需要降低存儲(chǔ)成本和快速按照條件查出數(shù)據(jù)。因此,在面對(duì)海量數(shù)據(jù)的寫(xiě)入和查詢(xún)時(shí),Apache Doris 還針對(duì) OLAP 數(shù)據(jù)庫(kù)的特點(diǎn)優(yōu)化了倒排索引的結(jié)構(gòu),使其更加簡(jiǎn)潔高效。例如:
  • 在寫(xiě)入流程保證不會(huì)多個(gè)線程寫(xiě)入一個(gè)索引,從而避免寫(xiě)入時(shí)多線程鎖競(jìng)爭(zhēng)的開(kāi)銷(xiāo);
  • 在存儲(chǔ)結(jié)構(gòu)上去掉了不必要的正排、norm 等文件,減少寫(xiě)入 IO 開(kāi)銷(xiāo)和存儲(chǔ)空間占用;
  • 查詢(xún)過(guò)程中簡(jiǎn)化相關(guān)性打分和排序邏輯,降低不必要的開(kāi)銷(xiāo),提升查詢(xún)性能。
針對(duì)日志等數(shù)據(jù)有按時(shí)間分區(qū)、歷史數(shù)據(jù)訪問(wèn)頻度低的特點(diǎn),基于獨(dú)立的索引文件設(shè)計(jì),Apache Doris 還將在后續(xù)的版本中提供更細(xì)粒度、更靈活的索引管理功能:
  • 指定分區(qū)構(gòu)建倒排索引,比如新增一個(gè)索引的時(shí)候指定最近7天的日志構(gòu)建索引,歷史數(shù)據(jù)不建索引
  • 指定分區(qū)刪除倒排索引,比如刪除超過(guò)1個(gè)月的日志的索引,釋放訪問(wèn)頻度低的索引存儲(chǔ)空間
ba21724a-ef56-11ed-90ce-dac502259ad0.png高性能是 Apache Doris 倒排索引設(shè)計(jì)和實(shí)現(xiàn)的首要出發(fā)點(diǎn),我們通過(guò)公開(kāi)的測(cè)試數(shù)據(jù)集分別與 ES 以及 Clickhouse 進(jìn)行性能測(cè)試,測(cè)試效果如下:

vs Elasticsearch

我們采用了 ES 官方的性能測(cè)試 Benchmark esrally 并使用其中的 HTTP Logs 日志,在同樣的硬件資源、數(shù)據(jù)、測(cè)試Case 以及測(cè)試工具下,記錄并對(duì)比各自的數(shù)據(jù)寫(xiě)入時(shí)間、吞吐以及查詢(xún)延遲。
  • 測(cè)試數(shù)據(jù):esrally HTTP Logs track 中自帶測(cè)試數(shù)據(jù)集,1998 年 World Cup HTTP Server Logs,未壓縮前 32G、共 2.47 億行、單行平均長(zhǎng)度 134 字節(jié);
  • 測(cè)試查詢(xún):esrally HTTP Logs 測(cè)試關(guān)鍵詞檢索、范圍查詢(xún)、聚合、排序等 11 個(gè) Query,所有查詢(xún)跑 100 次串行執(zhí)行;
  • 測(cè)試環(huán)境:3 臺(tái) 16C 64G 云主機(jī)組成的集群。
在最終的測(cè)試結(jié)果中,Doris 寫(xiě)入速度是 ES 的 4.2 倍、達(dá)到 550 MB/s,寫(xiě)入后的數(shù)據(jù)壓縮比接近 1:10、存儲(chǔ)空間節(jié)省超 80% ,查詢(xún)耗時(shí)下降 57%、查詢(xún)性能是 ES 的 2.3 倍。加上冷熱數(shù)據(jù)分離降低冷數(shù)據(jù)存儲(chǔ)成本,整體相較 ES 實(shí)現(xiàn) 10倍以上的性?xún)r(jià)比提升。

ba37ad08-ef56-11ed-90ce-dac502259ad0.png

vs Clickhouse

Clickhouse 近期的 v23.1 版本也引入了類(lèi)似 Feature,將倒排索引作為實(shí)驗(yàn)性功能發(fā)布,因此我們同樣進(jìn)行了跟 Clickhouse 倒排索引的性能對(duì)比。在本次測(cè)試中,我們采用了 Clickhouse 官方 Inverted Index 介紹博客中使用的 Hacker News 樣例數(shù)據(jù)以及查詢(xún) SQL ,同樣保持相同的物理資源、數(shù)據(jù)、測(cè)試 Case 以及測(cè)試工具。(參考文章:https://clickhouse.com/blog/clickhouse-search-with-inverted-indices
  • 測(cè)試數(shù)據(jù):Hacker News 2873 萬(wàn)條數(shù)據(jù),6.7G,Parquet 格式;
  • 測(cè)試查詢(xún):3 個(gè)查詢(xún),分別查詢(xún) 'clickhouse'、'olap' OR 'oltp'、'avx' AND 'sve' 等關(guān)鍵字出現(xiàn)的次數(shù);
  • 測(cè)試機(jī)器:1 臺(tái) 16C 64G 云主機(jī)
在最終的測(cè)試結(jié)果中,3 個(gè) SQL Apache Doris 的查詢(xún)性能分別是 Clickhouse 的 4.7 倍、12.0 倍以及 18.5 倍,有明顯的性能優(yōu)勢(shì)。

ba506f96-ef56-11ed-90ce-dac502259ad0.png

ba6c1a2a-ef56-11ed-90ce-dac502259ad0.png

下面以一個(gè) Hacker News 100 萬(wàn)條測(cè)試數(shù)據(jù)的示例展示 Doris 如何利用倒排索引實(shí)現(xiàn)高效的日志分析:1. 建表時(shí)指定索引
  • INDEX idx_comment (`comment`)指定對(duì) comment 列建一個(gè)名為idx_comment的索引
  • USING INVERTED指定索引類(lèi)型為倒排索引
  • PROPERTIES("parser" = "english")指定分詞類(lèi)型為英文分詞

		CREATETABLEhackernews_1m ( `id`BIGINT, `deleted`TINYINT, `type`String, `author`String, `timestamp`DateTimeV2, `comment`String, `dead`TINYINT, `parent`BIGINT, `poll`BIGINT, `children`Array<BIGINT>, `url`String, `score`INT, `title`String, `parts`Array<INT>, `descendants`INT, INDEXidx_comment(`comment`)USINGINVERTEDPROPERTIES("parser"="english")COMMENT'invertedindexforcomment' ) DUPLICATEKEY(`id`) DISTRIBUTEDBYHASH(`id`)BUCKETS10 PROPERTIES("replication_num"="1");注:對(duì)于已經(jīng)存在的表,也可以通過(guò)ADD INDEX idx_comment ON hackernews_1m(`comment`) USING INVERTED PROPERTIES("parser" = "english")來(lái)增加索引。值得一提的是,和 Doris 原先存儲(chǔ)在 Segment 數(shù)據(jù)文件中的智能索引和二級(jí)索引相比,增加倒排索引的過(guò)程只會(huì)讀 comment 列構(gòu)建新的倒排索引文件,不會(huì)讀寫(xiě)原有的其他數(shù)據(jù),效率有明顯提升。2. 導(dǎo)入數(shù)據(jù)后查詢(xún),使用MATCH_ALLcomment這一列上匹配 OLAP 和 OLTP 兩個(gè)詞,和LIKE掃描硬匹配相比,查詢(xún)性能有十余倍的提升。(這僅是 100 萬(wàn)條數(shù)據(jù)下的測(cè)試效果,而隨著數(shù)據(jù)量增大、性能提升越明顯)

		mysql>SELECTcount()FROMhackernews_1mWHEREcommentLIKE'%OLAP%'ANDcommentLIKE'%OLTP%'; +---------+ |count()| +---------+ |15| +---------+ 1rowinset(0.13sec) mysql>SELECTcount()FROMhackernews_1mWHEREcommentMATCH_ALL'OLAPOLTP'; +---------+ |count()| +---------+ |15| +---------+ 1rowinset(0.01sec)更多詳細(xì)功能介紹和測(cè)試步驟可以參考Apache Doris 倒排索引官方文檔:https://doris.apache.org/zh-CN/docs/dev/data-table/index/inverted-index/

ba781bcc-ef56-11ed-90ce-dac502259ad0.png

通過(guò)內(nèi)置高性能倒排索引,Apache Doris 對(duì)于字符串類(lèi)型的全文檢索和普通數(shù)值、日期等類(lèi)型的等值、范圍檢索具有更高效的支持,進(jìn)一步提升了數(shù)據(jù)查詢(xún)的效率和準(zhǔn)確性,對(duì)于大規(guī)模日志數(shù)據(jù)查詢(xún)分析有了更好的性能表現(xiàn),為需要檢索能力的用戶提供了更高性?xún)r(jià)比的選擇。目前倒排索引已經(jīng)支持了 String、Int、Decimal、Datetime 等常用 Scalar 數(shù)據(jù)類(lèi)型和 Array 數(shù)組類(lèi)型,后續(xù)還會(huì)增加對(duì) JSONB、Map 等復(fù)雜數(shù)據(jù)類(lèi)型的支持。而 BKD 索引可以支持多維度類(lèi)型的索引,為未來(lái) Doris 增加 GEO 地理位置數(shù)據(jù)類(lèi)型和索引打下了基礎(chǔ)。與此同時(shí) Apache Doris 在半結(jié)構(gòu)化數(shù)據(jù)分析方面還有更多能力擴(kuò)展,比如自動(dòng)根據(jù)導(dǎo)入數(shù)據(jù)擴(kuò)展表結(jié)構(gòu)的 Dynamic Table、豐富的復(fù)雜數(shù)據(jù)類(lèi)型(Array、Map、Struct、JSONB)以及高性能字符串匹配算法等。除倒排索引以外,Apache Doris 在 2.0.0 Alpha 版本(https://github.com/apache/doris/releases/tag/2.0.0-alpha1)中還實(shí)現(xiàn)了單節(jié)點(diǎn)數(shù)萬(wàn) QPS 的高并發(fā)點(diǎn)查詢(xún)能力、基于對(duì)象存儲(chǔ)的冷熱數(shù)據(jù)分離、基于代價(jià)模型的全新查詢(xún)優(yōu)化器以及 Pipeline 執(zhí)行引擎等,歡迎大家下載體驗(yàn)。


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 日志
    +關(guān)注

    關(guān)注

    0

    文章

    144

    瀏覽量

    10863
  • 數(shù)據(jù)類(lèi)型

    關(guān)注

    0

    文章

    237

    瀏覽量

    13893
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

    26534

原文標(biāo)題:從 Elasticsearch 到 Apache Doris,10 倍性?xún)r(jià)比的新一代日志存儲(chǔ)分析平臺(tái)|新版本揭秘

文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    存儲(chǔ)示波器的存儲(chǔ)深度對(duì)信號(hào)分析有什么影響?

    。以下技術(shù)原理、實(shí)際影響及優(yōu)化策略三方面展開(kāi)分析存儲(chǔ)深度對(duì)信號(hào)分析的核心影響1. 時(shí)域信號(hào)完整性 邊沿細(xì)節(jié)捕捉能力 高頻信號(hào)邊沿:
    發(fā)表于 05-27 14:39

    nRF54系列新一代無(wú)線 SoC

    nRF54L 系列將廣受歡迎的 nRF52 系列提升到新的水平,專(zhuān)為下一代藍(lán)牙 LE 產(chǎn)品而設(shè)計(jì)。它集成了新型超低功耗 2.4 GHz 無(wú)線電和多用途 MCU 功能,采用 128 MHz Arm
    發(fā)表于 05-26 14:48

    如何在CentOS系統(tǒng)中部署ELK日志分析系統(tǒng)

    日志分析已成為企業(yè)監(jiān)控、故障排查和性能優(yōu)化的重要組成部分。ELK(Elasticsearch、Logstash 和 Kibana)堆棧作為種強(qiáng)大的開(kāi)源解決方案,提供了高效的
    的頭像 發(fā)表于 05-08 11:47 ?303次閱讀
    如何在CentOS系統(tǒng)中部署ELK<b class='flag-5'>日志</b><b class='flag-5'>分析</b>系統(tǒng)

    新一代光纖涂覆機(jī)

    新一代光纖涂覆機(jī)系列:國(guó)產(chǎn)! 2025年,濰坊華纖光電科技將推出五大類(lèi)全光纖涂覆機(jī),標(biāo)志著國(guó)產(chǎn)光纖涂覆機(jī)技術(shù)邁入水平。以下是該系列產(chǎn)品的詳細(xì)介紹: 五大類(lèi)光纖涂覆機(jī) 單套模組光纖涂覆機(jī) 特點(diǎn):可替代
    發(fā)表于 04-03 09:13

    隆基新一代分布式組件Hi-MO X10登陸南歐市場(chǎng)

    2月末,隆基新一代分布式組件Hi-MO X10強(qiáng)勢(shì)登陸法國(guó)、西班牙、意大利等南歐市場(chǎng),以“技術(shù)+場(chǎng)景”雙核驅(qū)動(dòng),掀起場(chǎng)跨越國(guó)界的光伏風(fēng)暴。古堡盛典
    的頭像 發(fā)表于 03-26 15:47 ?451次閱讀

    Simcenter Testlab Neo多學(xué)科性能工程的新一代軟件平臺(tái)

    SimcenterTestlabNeo多學(xué)科性能工程的新一代軟件平臺(tái)通過(guò)在任何流程中集成分析和仿真模型,提高基于測(cè)試的多學(xué)科性能工程的工作效率和洞察力。為何選擇SimcenterTestlabNeo
    的頭像 發(fā)表于 01-21 17:02 ?470次閱讀
    Simcenter Testlab Neo多學(xué)科性能工程的<b class='flag-5'>新一代</b>軟件<b class='flag-5'>平臺(tái)</b>

    在華為云上通過(guò) Docker 容器部署 Elasticsearch 并進(jìn)行性能評(píng)測(cè)

    Elasticsearch容器 ? 3.3 驗(yàn)證Elasticsearch ? 4. 安裝Apache Benchmark (ab) 工具 ? 5. 使用 ab 工具對(duì) Elasticsear
    的頭像 發(fā)表于 01-13 13:36 ?481次閱讀
    在華為云上通過(guò) Docker 容器部署 <b class='flag-5'>Elasticsearch</b> 并進(jìn)行性能評(píng)測(cè)

    Linux實(shí)時(shí)查看日志的四種命令詳解

    tail命令 - 實(shí)時(shí)監(jiān)控日志 如上所述,tail命令是實(shí)時(shí)顯示日志文件的最常用解決方案。但是,顯示該文件的命令有兩個(gè)版本,如下面的示例所示。 在第個(gè)示例中,命令tail需要-f參數(shù)來(lái)跟蹤文件的內(nèi)容
    的頭像 發(fā)表于 01-13 10:45 ?3032次閱讀
    Linux實(shí)時(shí)查看<b class='flag-5'>日志</b>的四種命令詳解

    亞馬遜云科技發(fā)布新一代Amazon SageMaker

    近期,亞馬遜云科技正式宣布推出新一代Amazon SageMaker平臺(tái)。這創(chuàng)新舉措旨在將客戶在數(shù)據(jù)處理、分析、建模及生成式人工智能應(yīng)用方面的多樣化需求,統(tǒng)
    的頭像 發(fā)表于 12-24 16:57 ?622次閱讀

    VoIP?網(wǎng)絡(luò)排障新思路:日志 IOTA?分析

    VoIP 網(wǎng)絡(luò)需要高可用性與低延遲,但復(fù)雜的問(wèn)題如 SIP 403 錯(cuò)誤常導(dǎo)致服務(wù)中斷。傳統(tǒng)的日志和基本流量分析方法往往耗時(shí)低效,而 IOTA 工具通過(guò)實(shí)時(shí)流量捕獲與深入分析,大幅提高排障效率。本文
    的頭像 發(fā)表于 12-24 14:35 ?537次閱讀
    VoIP?網(wǎng)絡(luò)排障新思路:<b class='flag-5'>從</b><b class='flag-5'>日志</b><b class='flag-5'>到</b> IOTA?<b class='flag-5'>分析</b>

    東風(fēng)輕型車(chē)全新一代V平臺(tái)正式發(fā)布

    東風(fēng)輕型車(chē)在新能源領(lǐng)域達(dá)成又里程碑,東風(fēng)輕型車(chē)全新一代V平臺(tái)暨睿立達(dá)品牌發(fā)布會(huì)在襄陽(yáng)舉行。
    的頭像 發(fā)表于 12-23 14:45 ?576次閱讀

    亞馬遜云科技推出新一代Amazon SageMaker

    為數(shù)據(jù)、分析和AI提供統(tǒng)平臺(tái) 北京2024年12月10日?/美通社/ -- 亞馬遜云科技在2024 re:Invent全球大會(huì)上,宣布推出新一代
    的頭像 發(fā)表于 12-10 15:53 ?398次閱讀

    啟明信息完成國(guó)產(chǎn)化Doris數(shù)據(jù)庫(kù)升級(jí)替代任務(wù)

    近日,隨著集團(tuán)公司監(jiān)控平臺(tái)Elasticsearch集群)的下線,標(biāo)志著啟明信息正式完成國(guó)產(chǎn)化Doris數(shù)據(jù)庫(kù)升級(jí)替代任務(wù)。該項(xiàng)目既標(biāo)志著啟明信息信創(chuàng)升級(jí)替代邁入新臺(tái)階,同時(shí)也標(biāo)志著在Dor
    的頭像 發(fā)表于 09-20 09:33 ?2074次閱讀

    統(tǒng)一日志數(shù)據(jù)流圖

    統(tǒng)一日志數(shù)據(jù)流圖 日志系統(tǒng)數(shù)據(jù)流圖 系統(tǒng)進(jìn)行日志收集的過(guò)程可以分為三個(gè)環(huán)節(jié): (1)日志收集和導(dǎo)入ElasticSearch (2)
    的頭像 發(fā)表于 08-21 15:00 ?569次閱讀
    統(tǒng)<b class='flag-5'>一日志</b>數(shù)據(jù)流圖

    th4521在0輸入時(shí),251放大倍數(shù),25℃130℃時(shí)輸出10mv0.35v是什么原因引起的?

    th4521在0輸入時(shí),251放大倍數(shù),25℃130℃時(shí)輸出10mv0.35v,是什么原因引起的,怎么解決?
    發(fā)表于 08-14 06:49
    主站蜘蛛池模板: 黄色三级三级三级免费看 | 亚洲三级网 | 黄视频免费网站 | 在线免费观看一区二区三区 | 日本不卡在线视频高清免费 | 女性一级全黄生活片在线播放 | 性中国videosex国产孕妇 | 天堂网www天堂在线资源链接 | 激情婷婷六月 | 欲妇放荡叫床很浪的小说 | 男女做性无遮挡免费视频 | 高h办公室 | 一级黄色片在线看 | 高清视频一区 | 亚洲欧美视频网站 | 国产午夜视频在线观看网站 | 青草精品视频 | 拍拍拍成人免费高清视频 | 性生交酡| 免费公开视频人人人人人人人 | 国产91小视频在线观看 | 全免费a级毛片免费看不卡 全日本爽视频在线 | 欧美成人天天综合在线视色 | 中文一区 | xxx亚洲日本 | 永久免费看片 | 夜夜夜夜夜操 | 国产黄色的视频 | 狠狠色噜噜狠狠狠97影音先锋 | 欧美又粗又长又湿又黄的视频 | 欧美伊人| 精品视频在线观看视频免费视频 | 中文字幕一区二区三区四区 | 久久思re热9一区二区三区 | 在线网站 看片 网站 | 五月月色开心婷婷久久合 | 亚洲高清不卡视频 | xxxx性xxxx| 97国产精品人人爽人人做 | 一区二区三区中文字幕 | 国产精品免费看久久久香蕉 |