丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能 正文
發(fā)私信給高婓
發(fā)送

0

Facebook是怎么做到每秒索引數(shù)百萬(wàn)條記錄的?

本文作者: 高婓 2016-09-07 17:34
導(dǎo)語(yǔ):Cubrick是由Facebook開(kāi)發(fā)的新型分布式多維內(nèi)存數(shù)據(jù)庫(kù)管理系統(tǒng),其目的在于解決大量數(shù)據(jù)資源并行運(yùn)行所存在的問(wèn)題。

Facebook是怎么做到每秒索引數(shù)百萬(wàn)條記錄的?

編者按:作者Pedro Eugênio Rocha 現(xiàn)任Facebook系統(tǒng)工程師,2016年畢業(yè)于巴西巴拉那州聯(lián)邦大學(xué)信息學(xué)專(zhuān)業(yè),研究興趣包括數(shù)據(jù)庫(kù)與存儲(chǔ)系統(tǒng),尤其是與分布式系統(tǒng)和大數(shù)據(jù)相關(guān)的數(shù)據(jù)庫(kù)與存儲(chǔ)系統(tǒng)。作者在文章中介紹了Cubrick:一種多維內(nèi)存數(shù)據(jù)管理系統(tǒng)。Cubrick是由Facebook開(kāi)發(fā)的新型分布式多維內(nèi)存數(shù)據(jù)庫(kù)管理系統(tǒng),其目的在于解決大量數(shù)據(jù)資源并行運(yùn)行所存在的問(wèn)題。為達(dá)到交互式分析高度動(dòng)態(tài)數(shù)據(jù)集這一目的,Cubrick運(yùn)用一種用于管理柱形內(nèi)存數(shù)據(jù)的新策略,這種策略允許在數(shù)據(jù)集的每一個(gè)維度中進(jìn)行索引過(guò)濾,并有效地實(shí)時(shí)更新。

大數(shù)據(jù)集實(shí)時(shí)分析已經(jīng)成為眾多互聯(lián)網(wǎng)公司的廣泛需求。最大限度縮小數(shù)據(jù)生成與數(shù)據(jù)分析之間的時(shí)間差使得數(shù)據(jù)驅(qū)動(dòng)的互聯(lián)網(wǎng)公司能夠及時(shí)形成見(jiàn)解,做出決策,最終能夠促進(jìn)自身快速發(fā)展。為了實(shí)現(xiàn)實(shí)時(shí)分析,需要構(gòu)建一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),保證該系統(tǒng)能夠連續(xù)不斷地獲取由網(wǎng)絡(luò)日志生成的數(shù)據(jù)流,在數(shù)據(jù)生成幾秒后應(yīng)答查詢(xún)需求。鑒于有一些實(shí)時(shí)數(shù)據(jù)流每秒鐘能夠釋放出幾百萬(wàn)條記錄,大規(guī)模獲取這些高動(dòng)態(tài)化數(shù)據(jù)集將面臨越來(lái)越多的挑戰(zhàn)。

此外,所有的數(shù)據(jù)庫(kù)查詢(xún)需要在數(shù)百毫秒內(nèi)完成,為用戶(hù)提供一種真實(shí)的交互式體驗(yàn),以便充分挖掘數(shù)據(jù)的利用價(jià)值,但是,事實(shí)上,在如此短的時(shí)間內(nèi)瀏覽大型數(shù)據(jù)集要求大量并行運(yùn)行,因而龐大的數(shù)據(jù)資源成為必須的硬件條件。但是,在Facebook過(guò)去幾年的工作中,我們觀察過(guò)一些實(shí)用案例,在這些案例中所有的查詢(xún)都經(jīng)過(guò)過(guò)度過(guò)濾,此外,我們只關(guān)注一種超大型數(shù)據(jù)集中的小部分特定子集。例如,一項(xiàng)查詢(xún)可能只對(duì)某一特定人口統(tǒng)計(jì)學(xué)中的一種度量方法感興趣,例如,限定于住在美國(guó)的人群,或來(lái)自某一特定性別的人群,測(cè)定會(huì)話(huà)量,查詢(xún)某一特定群體,或提及某一特定標(biāo)簽??紤]到應(yīng)用哪些過(guò)濾條件取決于數(shù)據(jù)分析師對(duì)數(shù)據(jù)集中哪些部分感興趣,這類(lèi)過(guò)濾條件多為點(diǎn)對(duì)點(diǎn)模式,使得傳統(tǒng)的一維預(yù)定義的索引變得不那么有效。

Cubrick是由Facebook開(kāi)發(fā)的新型分布式多維內(nèi)存數(shù)據(jù)庫(kù)管理系統(tǒng),其目的在于解決大量數(shù)據(jù)資源并行運(yùn)行所存在的問(wèn)題。為了交互式分析高度動(dòng)態(tài)數(shù)據(jù)集,Cubrick運(yùn)用一種用于管理柱形內(nèi)存數(shù)據(jù)的新策略,這種策略允許在數(shù)據(jù)集的每一個(gè)維度中進(jìn)行索引過(guò)濾,并有效地實(shí)時(shí)更新。這種數(shù)據(jù)管理策略與一種特殊式且經(jīng)過(guò)優(yōu)化的查詢(xún)引擎相結(jié)合使得Cubrick成為唯一一種適合交互式實(shí)時(shí)分析的數(shù)據(jù)管理系統(tǒng),并且使得Cubrick達(dá)到目前數(shù)據(jù)庫(kù)解決方案尚未實(shí)現(xiàn)的數(shù)據(jù)管理規(guī)模。

本周印度新德里國(guó)際頂級(jí)數(shù)據(jù)庫(kù)會(huì)議(VLDB)上我們即將呈現(xiàn)的論文Cubrick: Indexing Millions of Records per second for Interactive Analytics一文中,我們描述了被命名為Granular Partitioning 的Cubrick新型數(shù)據(jù)管理技術(shù),詳細(xì)介紹了Cubrick的內(nèi)部數(shù)據(jù)結(jié)構(gòu),分布式模型與查詢(xún)執(zhí)行引擎,并將宣布目前Facebook對(duì)這種新型數(shù)據(jù)管理系統(tǒng)的應(yīng)用情況。

Cubrick的應(yīng)用現(xiàn)狀

通過(guò)跳過(guò)非必要數(shù)據(jù)來(lái)提高過(guò)濾性能的傳統(tǒng)數(shù)據(jù)庫(kù)技術(shù)要么是基于維護(hù)索引(輔助數(shù)據(jù)結(jié)構(gòu)),要么是基于對(duì)數(shù)據(jù)集進(jìn)行預(yù)整理。通過(guò)維護(hù)輔助索引(如B+Trees)來(lái)提高獲取特定記錄的效率是一種為大多數(shù)數(shù)據(jù)管理系統(tǒng)運(yùn)用的眾所周知的技術(shù),且?guī)缀趺恳环NOLTP數(shù)據(jù)管理系統(tǒng)均運(yùn)用這種數(shù)據(jù)庫(kù)技術(shù)。但是,在OLAP負(fù)載中,維護(hù)更新索引的對(duì)數(shù)開(kāi)銷(xiāo)由于被視為表的大小和獲取數(shù)據(jù)速率的度量而被禁止。在存儲(chǔ)痕跡中,大多數(shù)類(lèi)型的索引(著名的是二級(jí)索引)通過(guò)增大所占據(jù)的存儲(chǔ)空間來(lái)存儲(chǔ)中等結(jié)點(diǎn)和數(shù)據(jù)指示值,以便于在每一欄建立索引可能會(huì)致使存儲(chǔ)使用率成倍增長(zhǎng)。此外,如何準(zhǔn)確地確定索引欄是點(diǎn)對(duì)點(diǎn)查詢(xún)面臨的一項(xiàng)挑戰(zhàn)。

在查詢(xún)時(shí)間內(nèi)有效跳過(guò)數(shù)據(jù)的另一途徑是預(yù)整理數(shù)據(jù)集?;贑-STROE架構(gòu)建立的以欄為導(dǎo)向的數(shù)據(jù)庫(kù)能夠維護(hù)按照關(guān)鍵字排序的數(shù)據(jù)集的多種復(fù)制版本——也被稱(chēng)為映射——也能夠被用于有效評(píng)估按照關(guān)鍵字排序的每一欄中的過(guò)濾器性能。盡管一種與LSM-Tree(日志結(jié)構(gòu)的合并樹(shù))相似的結(jié)構(gòu)被用于攤還插入所帶來(lái)的計(jì)算成本,隨著所獲取數(shù)據(jù)的規(guī)模不斷擴(kuò)大,仍然需要大量的數(shù)據(jù)重組來(lái)保證映射結(jié)果的實(shí)時(shí)更新。此外, 我們得預(yù)先決定要?jiǎng)?chuàng)建哪些映射機(jī)器相對(duì)應(yīng)的排序關(guān)鍵字,這些在由點(diǎn)對(duì)點(diǎn)查詢(xún)構(gòu)成的數(shù)據(jù)集中難以定義。最后,由于每一次新的映射都是對(duì)整個(gè)數(shù)據(jù)集的復(fù)制,這種方式不適用于數(shù)據(jù)管理系統(tǒng)的內(nèi)存設(shè)置,這種數(shù)據(jù)管理系統(tǒng)試圖在其內(nèi)存中擬合盡可能多的數(shù)據(jù)集,以避免對(duì)硬盤(pán)進(jìn)行繁重訪問(wèn)。

一種新方法

我們已經(jīng)采用一種新方法而非通過(guò)預(yù)整理數(shù)據(jù)集或維護(hù)二級(jí)索引數(shù)據(jù)結(jié)構(gòu)這兩種方法,來(lái)解決如何跳過(guò)非必要數(shù)據(jù)以提高過(guò)濾器性能這一問(wèn)題。假定系統(tǒng)中所有的表格都是被每一維度列進(jìn)行分區(qū)排列的,我們對(duì)傳統(tǒng)的數(shù)據(jù)庫(kù)分區(qū)概念進(jìn)行擴(kuò)展。同時(shí),能夠預(yù)先獲取每一維度列的基數(shù),這允許我們將數(shù)據(jù)集理解為一個(gè)有更小的超立方體構(gòu)成的大立方體,在一定程度上更像一個(gè)n維魔方。每一個(gè)較小的超立方體(或brick,Cubrick的一種術(shù)語(yǔ)表達(dá)法)代表基數(shù)函數(shù)分配的一個(gè)標(biāo)識(shí)符,以一種無(wú)序且附注的形式在每一列中零散地存儲(chǔ)數(shù)據(jù)。最后,我們假定,所有的字符串值都是經(jīng)過(guò)代碼編碼的,內(nèi)部是由單調(diào)遞增的整數(shù)表示的。該假設(shè)便于我們開(kāi)發(fā)一種僅在原始數(shù)據(jù)層面運(yùn)行的經(jīng)過(guò)優(yōu)化的,精細(xì)的數(shù)據(jù)庫(kù)引擎。

與其他多維數(shù)據(jù)庫(kù)系統(tǒng)相似,Cubrick的每一列均以一種度量或一種維度進(jìn)行定義,這些維度通常被用于過(guò)濾和分組,每一種度量被用于聚合函數(shù)中。圖1闡釋了:在一個(gè)由兩個(gè)維度——區(qū)間和性別,基數(shù)為4,變化尺寸為2和1,與兩種度量——喜好和評(píng)論,構(gòu)成的一個(gè)數(shù)據(jù)集例子中,如何為每一模塊分配數(shù)據(jù)記錄。

Facebook是怎么做到每秒索引數(shù)百萬(wàn)條記錄的?

鑒于有一種連續(xù)性的時(shí)間函數(shù)將每一條記錄映射到與之相匹配的目標(biāo)模塊中,而且每一模塊中的數(shù)據(jù)都是無(wú)序排列的,這種簡(jiǎn)單卻有效的數(shù)據(jù)管理方法考慮到非常有效的記錄插入。此外,如果在搜索空間內(nèi)沒(méi)有插入記錄,在查詢(xún)時(shí)間段內(nèi),每一模塊都能夠輕松地與查詢(xún)過(guò)濾器相匹配,并得到梳理。

實(shí)驗(yàn)結(jié)果

為了評(píng)估Cubrick獲取記錄的速率與獲取記錄通道所占用的CPU,圖8所示為:與CPU占用量相比,每個(gè)單一結(jié)點(diǎn)簇每秒獲取的記錄數(shù)量。本實(shí)驗(yàn)得出以下結(jié)論:即使每秒獲取的記錄數(shù)量達(dá)到100萬(wàn),每個(gè)單一結(jié)點(diǎn)簇所占用的CPU依然處于低水平(20%以下)。

Facebook是怎么做到每秒索引數(shù)百萬(wàn)條記錄的?

注:當(dāng)獲取不同容量大小的記錄時(shí),每個(gè)單一結(jié)點(diǎn)簇的CPU占用情況

圖7所示為在一個(gè)72個(gè)結(jié)點(diǎn)簇處運(yùn)行的10TB數(shù)據(jù)集存在的多種潛在查詢(xún),旨在評(píng)估我們的索引策略是否有效。X軸代表應(yīng)用過(guò)濾器的列,顏色標(biāo)尺為這種過(guò)濾器的局限性,或該數(shù)據(jù)集與過(guò)濾器之間的匹配百分比。實(shí)驗(yàn)結(jié)果顯示,Y軸上的顏色與位置存在明顯關(guān)聯(lián)性,與X軸上的位置不相關(guān)。換句話(huà)來(lái)講,不論處于哪一列,當(dāng)運(yùn)用過(guò)濾器時(shí),查詢(xún)速率將得到很大程度的提升。

Facebook是怎么做到每秒索引數(shù)百萬(wàn)條記錄的?

注:在一個(gè)72個(gè)結(jié)點(diǎn)簇處運(yùn)行的10TB數(shù)據(jù)集經(jīng)不同維度過(guò)濾后存在的多種潛在查詢(xún)

請(qǐng)參考我們?cè)?016年國(guó)際頂級(jí)數(shù)據(jù)庫(kù)會(huì)議上發(fā)表的論文,獲得完整的實(shí)驗(yàn)方法與結(jié)果。

瞻望未來(lái)

在過(guò)去幾年內(nèi),F(xiàn)acebbook曾在多個(gè)實(shí)時(shí)(批量)交互式分析應(yīng)用實(shí)例中采用Cubrick,Cubrick正在迅速成長(zhǎng)為一個(gè)更為成熟的全功能數(shù)據(jù)管理系統(tǒng)。關(guān)于如何更加有效地處理具有不同數(shù)據(jù)分布特征的數(shù)據(jù)集與使這種立方體圖式更具動(dòng)態(tài)化,我們還要進(jìn)行大量的研究求證。我們相信,Cubrick的研發(fā)是我們朝向這一目標(biāo)邁進(jìn)的第一步,不過(guò),目前該研究領(lǐng)域還存在幾個(gè)尚未探索且有趣的主題等待我們開(kāi)展研究。

與本文內(nèi)容相關(guān)的VLDB’16 論文鏈接論文1,論文2

本文由雷鋒網(wǎng)獨(dú)家編譯,未經(jīng)允許拒絕轉(zhuǎn)載!


雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。

Facebook是怎么做到每秒索引數(shù)百萬(wàn)條記錄的?

分享:
當(dāng)月熱門(mén)文章
最新文章
請(qǐng)?zhí)顚?xiě)申請(qǐng)人資料
姓名
電話(huà)
郵箱
微信號(hào)
作品鏈接
個(gè)人簡(jiǎn)介
為了您的賬戶(hù)安全,請(qǐng)驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請(qǐng)驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號(hào)信息
您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說(shuō)