<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          為持久內存優(yōu)化的存儲引擎什么樣?火山引擎有話說

          共 6646字,需瀏覽 14分鐘

           ·

          2021-10-02 13:10



          引言


          字節(jié)跳動旗下的火山引擎,深諳存儲引擎在企業(yè)合作與解決方案市場,以及AI領域中的戰(zhàn)略核心作用。為應對每秒數千萬次且時延在毫秒級的客戶查詢需求,火山引擎導入性能接近DRAM,并能以更優(yōu)成本提供更高容量,且具備數據持久性優(yōu)勢的英特爾? 傲騰? 持久內存,打造了全新的數據庫存儲引擎TerarkKV, 更好地兼顧了成本控制及數據訪問低時延的要求。


          執(zhí)行概要


          隨著大數據技術和應用的迅猛發(fā)展,數據背后的價值日益凸顯,企業(yè)也紛紛制訂或優(yōu)化 其數字化轉型戰(zhàn)略,以期充分利用數據挖掘來獲取深刻洞察并據此搶占市場先機。然而,呈爆發(fā)式增長和來源日趨多樣的數據,也讓企業(yè)從數據采集、存儲到處理和業(yè)務 決策等各個層面均面臨更多也更為艱巨的挑戰(zhàn)。

          作為字節(jié)跳動旗下的數字服務與智能科技品牌,火山引擎也早已認識到“數據”對于每個組織的無限價值,從品牌創(chuàng)建伊始,火山引擎就將“幫助每一個組織釋放‘增長潛能’”列為自身的重要使命之一。作為企業(yè)級智能技術服務平臺的火山引擎,正依托自身在大數據、人工智能等領域的深厚技術能力,以增長理念及方法論,為客戶提供產品與技術解決方案。



          郭寬寬 火山引擎單機存儲引擎組


          英特爾? 傲騰? 持久內存可以說是二十年來對數據庫而言最具革命性的硬件創(chuàng)新之一,我們并不想把它作為DRAM內存的簡單替代, 而是根據它字節(jié)尋址、超低延遲和持久化的能力構建專用數據結構,重新設計了數據庫的I/O模型,從業(yè)務架構層面縮減了工程成本和設備成本。


          通過對行業(yè)及市場的充分調研與分析,火山引擎的洞察是:要幫助組織充分利用數據驅動業(yè)務發(fā)展與增長,要打造優(yōu)秀的產品與平臺,“數據平臺”這個技術與產品基座將起到至關重要的底層支撐作用,這其中,存儲引擎的角色又尤為重要。


          例如,在DataLeap(大數據開發(fā)與數據治理套件)、DataRangers(一站式分析與增長平臺)和DataWind(一站式數據洞察平臺,智能推薦等組件及平臺)中,高效穩(wěn)定的數據索引以及追求更優(yōu)性能表現的元數據查詢能力是必不可少的,要針對如此大規(guī)模及高復雜度的系統(tǒng)提供高效穩(wěn)定的支撐,數據庫存儲引擎的性能和成本控制能力就必須要經受住更加嚴苛的考驗。


          作為企業(yè)合作與解決方案市場的新秀和數據產品及人工智能領域的創(chuàng)新引領者,火山引擎深諳存儲引擎的戰(zhàn)略重心作用,并擁有專注存儲引擎開發(fā)與推廣的團隊。為應對每秒 數千萬次且延遲在毫秒級的客戶查詢需求,火山引擎與正在全力推進內存-存儲架構 革新的英特爾公司展開了深入交流與合作,利用其性能接近 DRAM 內存、并能以更優(yōu) 成本提供更高容量且具備數據持久性的英特爾? 傲騰? 持久內存(以下或簡稱為“傲騰? 持久內存”或“持久內存”),打造了全新的數據庫存儲引擎——TerarkKV。持久內存的導入,讓TerarkKV能夠更好的控制成本并滿足業(yè)務場景對數據訪問低延遲的需求。


          現狀分析與挑戰(zhàn)


          在構建TerarkKV之前,RocksDB及其各種優(yōu)化版本是火山引擎采用的主要數據庫存儲引擎。


          作為著名的LSM類存儲引擎之一,RocksDB在火山引擎產品中占據了非常重要的地位,其大量的數據庫、存儲系統(tǒng)都是基于 RocksDB進行構建或改進。LSM在設計之初是為順序寫性能大幅度優(yōu)于隨機寫性能的設備而設計的。近年來RocksDB雖然有了很多改進,但客觀上并不適用于所有場景,尤其是其讀寫放大問題讓那些對延遲比較敏感的業(yè)務,如Redis、機器學習參數服務、通用緩存、圖計算等場景比較難以接受。


          以圖數據庫為例,它的應用正變得越來越普及,也越來越重要。據Gartner預測:“到2022年,圖分析處理和圖數據庫 (Graph Database) 的應用將以每年100%的速度增長【1】?!比欢鴮D的單次遍歷或者關聯查詢,往往需要進行很多次底層KV請求來獲取邊和點信息,且這些KV請求只能串行化,再考慮到KV內部的讀放大,單次I/O延遲的重要性就凸顯出來了。因此,進一步優(yōu)化存儲引擎性能來為這類場景提供更好的支持已是勢在必行。


          RocksDB本身的流行度很高,社區(qū)處于較活躍的狀態(tài)。RocksDB社區(qū)內也針對持久內存與RocksDB的搭配進行了一些優(yōu)化,如 優(yōu)化傲騰? 持久內存中存儲Value的所在位置、大幅優(yōu)化壓縮效率、WAL(Write-Ahead Logging) 從寫固態(tài)盤(SSD)改為寫傲騰? 持久內存。這些優(yōu)化確實取得了一定程度的收益,但火山引擎的單機引擎團隊認為它們依然遠未發(fā)揮出傲騰? 持久內存的巨大價值潛能。為了更加充分地釋放這一全新硬件的能力和降低產品成本,火山引擎準備嘗試更具突破意義的創(chuàng)新研究。


          傲騰?持久內存

          助力火山引擎突破延遲瓶頸


          選擇英特爾? 傲騰? 持久內存的理由


          基于英特爾? 3D XPoint? 存儲技術打造的英特爾? 傲騰? 持久內存, 為上述問題的破解提供了全新思路,原因在于其具備以下優(yōu)勢:



          ?  高性能、大容量、低成本: 在圖1所示的存儲層級架構的 “金字塔”中,越靠近塔頂的層級速度越快、容量越小、單位存儲容量成本也越高。英特爾? 傲騰? 持久內存在該“金字塔”中位于DRAM內存和固態(tài)盤之間。與DRAM內存相比,持久內存具有更經濟的價格和更大的容量,和固態(tài)盤相比則擁有更優(yōu)的數據響應速度和傳輸速度(接近 DRAM 內存),其高性能、大容量和高性價比的特性,有助于用戶在幾乎不影響系統(tǒng)性能的同時降低總體擁有成本(以下簡稱“TCO”)。


          字節(jié)尋址能力簡化底層I/O:傳統(tǒng)的數據庫主要依靠磁盤存儲數據,但磁盤不能按字節(jié)尋址,所以數據庫讀取數據一般是按塊,過程就是把整塊數據讀到內存,然后再根據偏移量、按 字節(jié)尋址的方式讀取具體的數據。持久內存具備字節(jié)尋址能力,因此能夠大大簡化底層I/O,加快查詢速度。此外,如果將數據保存在DRAM內存中,雖然也能實現字節(jié)尋址,但鑒于DRAM內存的數據易失性,為保證安全必須定期備份數據到磁盤,從而帶來了數據同步等一系列復雜操作。


          ? 數據非易失性提高可靠性:持久內存具備數據持久性,因此在實例重啟或斷電等計劃內或計劃外的停機情況下都不會造成數據丟失,從而可以快速恢復服務。


          基于持久內存探索更優(yōu)方案


          在啟動針對RocksDB的創(chuàng)新研究之前,火山引擎基于英特爾? 傲騰? 持久內存的上述優(yōu)勢,廣泛調研了業(yè)界已有的各類相關方案,并總結了一些明顯的問題。


          其一,火山引擎發(fā)現部分社區(qū)工作主要集中在對RocksDB和WiredTiger等存儲引擎的改造上面,并沒有從本質上改變它們原有的數據結構和讀寫模式,僅是把傲騰?持久內存當作一種更加快速的存儲介質來使用,甚至部分設計還保留了4K/16K的頁尺寸,  無法發(fā)揮持久內存字節(jié)尋址的優(yōu)勢。


          其二,部分設計僅僅把傲騰? 持久內存當作更便宜的DRAM內存替代品,用來擴展本機的內存容量,并把緩存數據存放在傲騰? 持久內存中。這種方案雖然利用了持久內存字節(jié)尋址的特性,但其查詢仍不可避免地要進行從DRAM內存到持久內存,再到固態(tài)盤的三級跳,造成了不必要的浪費。


          鑒于這些既有方案均不能充分利用持久內存的應用優(yōu)勢,火山引擎決定根據英特爾? 傲騰? 持久內存的上述特性,并結合自身的 業(yè)務需求來打造全新的數據庫存儲引擎。


          App Direct模式開辟提速新途徑


          為了在新存儲引擎中充分釋放英特爾? 傲騰? 持久內存的潛能,火山引擎團隊對其兩種主要工作模式——內存模式和App Direct 模式(以下或簡稱“AD 模式”)進行了評估。


          在內存模式下,CPU內存控制器會把持久內存視作易失性的系統(tǒng)內存,而將DRAM內存用作持久內存的高速緩存。雖然該模式能夠提供更大的內存容量,但在這種模式下數據訪問請求會首先先在DRAM內存上檢查是否命中,如果命中,數據直接從內存中獲?。蝗绻麤]有命中,會再到持久內存上進行訪問,這會帶來 更多的I/O開銷并增加延遲。


          切換到AD模式后,火山引擎發(fā)現,支持行業(yè)標準NVM持久化內存編程模式的軟件和應用,都能直接與傲騰? 持久內存通信,且能充分利用其字節(jié)尋址能力,從而顯著降低延遲,滿足高速 業(yè)務場景的需求。如果預設DRAM內存和持久內存在容量比例上存在一定的懸殊,比如DRAM內存設為512GB、持久內存設為3TB或6TB的容量配比,那么大部分數據就將存儲在持久內存中,而索引全部保存在DRAM內存中,這樣就可以保證所有關鍵字的查詢都在速度更高的DRAM內存中進行,也就能更好地讓DRAM內存和持久內存實現互補,充分發(fā)揮各自的優(yōu)勢。


          經過評估,火山引擎最終確定:要在新存儲引擎中采用英特爾? 傲騰? 持久內存的App Direct模式。


          持久內存+ 數據結構優(yōu)化,助新引擎攻克讀放大難題


          經過一系列的研究、探索和對比評估工作,火山引擎基于英特爾? 傲騰?持久內存,針對偏緩存或內存的業(yè)務場景打造了全新的存儲引擎——TerarkKV。如圖2所示,該引擎分為兩部分,一部分是數據索引層,由DRAM內存承載,用于存放索引數據結構;另一 部分是數據存儲層,由持久內存和固態(tài)盤承載,用于存放大量數據,對內與持久內存進行交互,對外暴露offset到數據映射。



          火山引擎團隊還同步為該存儲引擎自主開發(fā)了一種新的索引數據結構——CSGT(Concurrent SiGnature Tree)。這是一種有序索引數據結構,主要特性是增加了DRAM內存中的索引數量。


          索引一條KV記錄,悲觀估計消耗16字節(jié),一般消耗13.5字節(jié),在這種情況下,1GB DRAM內存可索引的KV記錄可高達8千萬條【2】。對于大部分應用場景來說,CSGT幾乎都可確保其索引存放在高速DRAM內存中。


          這種做法有別于將持久內存作為緩存使用的常規(guī)做法,常規(guī)做法就是索引通常需要先到DRAM內存中查詢數據是否存在,沒有找到時再到持久內存中查詢。在TerarkKV使用的全新索引數據結構的幫助下,查詢可做到單次I/O即可定位到數據位置,因此不存在讀放大的弊端。此外,其索引是記錄級別而非傳統(tǒng)的頁級別,因此大大提升了Value訪問速度。經測試,持久內存單次I/O延遲只有150ns左右,這使得TerarkKV能夠適用于大多數內存密集型客戶應用場景【3】


          性能驗證及成果體現


          高并發(fā)、高吞吐、低延遲全面兼顧


          為驗證基于英特爾? 傲騰? 持久內存(App Direct模式)打造的全新TerarkKV存儲引擎的性能表現,火山引擎與英特爾一同對TerarkKV的吞吐量、每秒查詢數(QPS)和延遲進行了測試。



          由圖3所示的測試結果可知,TerarkKV在吞吐性能上的表現非常出色,且最佳適用場景為Value長度在512B以內的簡單查詢。同時,其單機上千萬的QPS(Query Per Second,每秒查詢數)表現,也幾乎可以覆蓋到所有的應用場景。


          從表1可以看出,采用傲騰? 持久內存的TerarkKV的P99和P999延遲都是微秒級的【5】。據火山引擎介紹,這與采用純DRAM內存配置的測試結果相比,差距僅為1-2微秒【6】。


          更重要的是,相對于DRAM內存昂貴的成本和難以突破的容量限制,持久內存 的引入不僅能保證查詢性能達到與 DRAM 內存相近的程度,還能 更為高效和經濟實惠地擴充內存容量,降低客戶的TCO。而且,在該存儲引擎中,DRAM內存和持久內存的容量配比為1:4,就可實現全部索引存放于DRAM內存中,同時待查詢的Value 值存放于持久內存中這種較為理想的狀態(tài)。


          DRAM內存中的一次跳轉延遲僅為40-60ns【7】,因而對索引的查詢即便要經過多次跳轉,也只會消耗較低的延遲。對于持久內存中的數據,通過索引獲得地址后就可直接讀取,無需再在持久內存中繼續(xù)查找,這就可以保證一次 I/O就能完成KV查詢。


          TerarkKV——成功滿足更廣泛客戶場景需求


          目前,TerarkKV已完成了在圖數據庫、IPS(用戶特征服務)等組件中的PoC 驗證,并獲得了令人滿意的結果。這類業(yè)務的主要特征有二:一是上層的單次查詢需要下層有多次數據跳轉;二是業(yè)務的請求串行化嚴重,需要以相當快的速度獲得響應結果。


          例如在智能推薦應用場景中,用戶之間的關系、內容之間的關系以及用戶與內容之間的關系,往往都會用圖數據結構來描述。隨著移動互聯網技術的持續(xù)發(fā)展,更多元化的媒體對象,如短文本、視頻等正被補充進客戶的數據池中,從而進一步加大了圖結構的復雜性,意味著圖數據結構中的沿路徑查詢需要跳轉多次。在這種情況下,如果使用RocksDB存儲引擎來對圖數據進行查詢,一次跳轉可能存在十倍讀放大,十次跳轉就可能達到百倍讀放大。由LSM樹的形態(tài)與具體業(yè)務場景決定了性能的優(yōu)劣,讀放大達到 40倍的情況也不罕見,這種延遲上的消耗顯然是延遲敏感型 系統(tǒng)所無法承擔的。而且,圖數據庫天然需要持久化,在這種情況下,基于英特爾? 傲騰? 持久內存構建的TerarkKV存儲引擎無疑將成為承載圖計算場景的更優(yōu)選擇,并能很好地解決讀放大的 問題。


          除圖數據庫外,TerarkKV還適用于對延遲要求嚴苛的Flink流處理場景,以及機器學習中向量查詢等典型業(yè)務,這些模塊在火山 引擎的產品矩陣中也有非常廣泛的使用,由此不難預見:該存儲引擎未來將有很多用武之地。


          總結與展望


          火山引擎與英特爾基于英特爾? 傲騰? 持久內存(AD模式)打造的全新數據庫存儲引擎TerarkKV,在IOPS、QPS及延遲方面都能更好地滿足偏緩存的應用場景的需求,同時還能實現明顯的成本節(jié)約。它的問世不但見證了雙方在持久內存應用探索方面的又一次成功協作,也進一步驗證了英特爾? 傲騰? 持久內存在數據處理和存儲加速方面的出色潛能。


          以此為基礎,火山引擎還將與英特爾一道,計劃圍繞持久內存及相關產品與技術,開展更多、更廣泛、也更為深入的技術交流與協作,讓持久內存能在更多的業(yè)務場景中發(fā)揮作用,進而向用戶提供更優(yōu)質的產品與服務體驗。



          ▼ ▼ ▼


          【1】 數據引自:

          https://www.gartner.com/en/newsroom/press-releases/2019-02-18-gartner-identifies-top-10-data-and-analytics-technolo。


          【2】, 【3】, 【4】, 【5】, 【6】, 【7】, 【8數據援引自火山引擎內部測試與評估,更多詳情請咨詢火山引擎。測試平臺配置:處理器:雙路英特爾? 至強? 鉑金 8260處理器(24 內核,48 線程);內存:256 GB DRAM (DDR4-2933, 32 GB x 8) + 1024 GB 英特爾? 傲騰? 持久內存 (128 GB x 8);內核版本:Linux 4.19;TerarkKV hash tag: a52d4783580a9c0cdce8330dcc7f916e6bb613a6;GCC 版本:9.2.1 20190909 (Debian 9.2.1-8)。

          英特爾并不控制或審計第三方數據。請您審查該內容,咨詢其他來源,并確認提及數據是否準確。


          英特爾技術特性和優(yōu)勢取決于系統(tǒng)配置,并可能需要支持的硬件、軟件或服務得以激活。產品性能會基于系統(tǒng)配置有所變化。沒有任何產品或組件是絕對安全的。更多信息請從原始設備制造商或 零售商處獲得,或請見intel.cn。


          性能測試中使用的軟件和工作負荷可能僅在英特爾微處理器上進行了性能優(yōu)化。諸如 SYSmark 和 MobileMark 等測試均系基于特定計算機系統(tǒng)、硬件、軟件、操作系統(tǒng)及功能。上述任何要素的變動 都有可能導致測試結果的變化。請參考其他信息及性能測試(包括結合其他產品使用時的運行性能)以對目標產品進行全面評估。更多信息,詳見www.intel.cn/benchmarks。


          描述的成本降低情景均旨在特定情況和配置中舉例說明特定英特爾產品如何影響未來成本并提供成本節(jié)約。情況均不同。英特爾不保證任何成本或成本降低。


          英特爾、英特爾標識以及其他英特爾商標是英特爾公司或其子公司在美國和/或其他國家的商標。


          ?英特爾公司版權所有


          瀏覽 53
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费的鸡巴网站 | 亚洲精品成人a v久久久 | 99久久精品国产毛片 | 欧洲精品无码一区二区在线 | A一级黄色 |