小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

大數(shù)據(jù)存取的選擇:行存儲(chǔ)還是列存儲(chǔ)?

 月影曉風(fēng) 2014-09-11

編者按:由InfoQ主辦的全球架構(gòu)師峰會(huì)將于2012年8月10日-12日在深圳舉行,為了更好地詮釋架構(gòu)的意義、方法和實(shí)踐,InfoQ中文站近期會(huì)集中發(fā)布一批與架構(gòu)相關(guān)的文章,本篇即為其中之一。InfoQ也歡迎讀者親身參與到本次全球架構(gòu)師峰會(huì)中,與來自國(guó)內(nèi)外的頂尖架構(gòu)師進(jìn)行面對(duì)面的交流。報(bào)名參會(huì)請(qǐng)點(diǎn)擊這里

上個(gè)月參加了一個(gè)云存儲(chǔ)的技術(shù)討論會(huì)。這一個(gè)月里,陸續(xù)收到幾位同學(xué)討論大數(shù)據(jù)保存和處理的郵件。今天是周末,索性把這個(gè)月的交流內(nèi)容整理寫下來,供各位參考。

目前大數(shù)據(jù)存儲(chǔ)有兩種方案可供選擇:行存儲(chǔ)和列存儲(chǔ)。業(yè)界對(duì)兩種存儲(chǔ)方案有很多爭(zhēng)持,集中焦點(diǎn)是:誰能夠更有效地處理海量數(shù)據(jù),且兼顧安全、可靠、完整性。從目前發(fā)展情況看,關(guān)系數(shù)據(jù)庫已經(jīng)不適應(yīng)這種巨大的存儲(chǔ)量和計(jì)算要求,基本是淘汰出局。在已知的幾種大數(shù)據(jù)處理軟件中,Hadoop的HBase采用列存儲(chǔ),MongoDB是文檔型的行存儲(chǔ),Lexst是二進(jìn)制型的行存儲(chǔ)。在這里,我不討論這些軟件的技術(shù)和優(yōu)缺點(diǎn),只圍繞機(jī)械磁盤的物理特質(zhì),分析行存儲(chǔ)和列存儲(chǔ)的存儲(chǔ)特點(diǎn),以及由此產(chǎn)生的一些問題和解決辦法。

一.結(jié)構(gòu)布局

行存儲(chǔ)數(shù)據(jù)排列

列存儲(chǔ)數(shù)據(jù)排列
 

表格的灰色背景部分表示行列結(jié)構(gòu),白色背景部分表示數(shù)據(jù)的物理分布,兩種存儲(chǔ)的數(shù)據(jù)都是從上至下,從左向右的排列。行是列的組合,行存儲(chǔ)以一行記錄為單位,列存儲(chǔ)以列數(shù)據(jù)集合單位,或稱列族(column family)。行存儲(chǔ)的讀寫過程是一致的,都是從第一列開始,到最后一列結(jié)束。列存儲(chǔ)的讀取是列數(shù)據(jù)集中的一段或者全部數(shù)據(jù),寫入時(shí),一行記錄被拆分為多列,每一列數(shù)據(jù)追加到對(duì)應(yīng)列的末尾處。

二. 對(duì)比

從上面表格可以看出,行存儲(chǔ)的寫入是一次完成。如果這種寫入建立在操作系統(tǒng)的文件系統(tǒng)上,可以保證寫入過程的成功或者失敗,數(shù)據(jù)的完整性因此可以確定。列存儲(chǔ)由于需要把一行記錄拆分成單列保存,寫入次數(shù)明顯比行存儲(chǔ)多,再加上磁頭需要在盤片上移動(dòng)和定位花費(fèi)的時(shí)間,實(shí)際時(shí)間消耗會(huì)更大。所以,行存儲(chǔ)在寫入上占有很大的優(yōu)勢(shì)。

還有數(shù)據(jù)修改,這實(shí)際也是一次寫入過程。不同的是,數(shù)據(jù)修改是對(duì)磁盤上的記錄做刪除標(biāo)記。行存儲(chǔ)是在指定位置寫入一次,列存儲(chǔ)是將磁盤定位到多個(gè)列上分別寫入,這個(gè)過程仍是行存儲(chǔ)的列數(shù)倍。所以,數(shù)據(jù)修改也是以行存儲(chǔ)占優(yōu)。 數(shù)據(jù)讀取時(shí),行存儲(chǔ)通常將一行數(shù)據(jù)完全讀出,如果只需要其中幾列數(shù)據(jù)的情況,就會(huì)存在冗余列,出于縮短處理時(shí)間的考量,消除冗余列的過程通常是在內(nèi)存中進(jìn)行的。列存儲(chǔ)每次讀取的數(shù)據(jù)是集合的一段或者全部,如果讀取多列時(shí),就需要移動(dòng)磁頭,再次定位到下一列的位置繼續(xù)讀取。 再談兩種存儲(chǔ)的數(shù)據(jù)分布。由于列存儲(chǔ)的每一列數(shù)據(jù)類型是同質(zhì)的,不存在二義性問題。比如說某列數(shù)據(jù)類型為整型(int),那么它的數(shù)據(jù)集合一定是整型數(shù)據(jù)。這種情況使數(shù)據(jù)解析變得十分容易。相比之下,行存儲(chǔ)則要復(fù)雜得多,因?yàn)樵谝恍杏涗浿斜4媪硕喾N類型的數(shù)據(jù),數(shù)據(jù)解析需要在多種數(shù)據(jù)類型之間頻繁轉(zhuǎn)換,這個(gè)操作很消耗CPU,增加了解析的時(shí)間。所以,列存儲(chǔ)的解析過程更有利于分析大數(shù)據(jù)。

三. 優(yōu)化

顯而易見,兩種存儲(chǔ)格式都有各自的優(yōu)缺點(diǎn):行存儲(chǔ)的寫入是一次性完成,消耗的時(shí)間比列存儲(chǔ)少,并且能夠保證數(shù)據(jù)的完整性,缺點(diǎn)是數(shù)據(jù)讀取過程中會(huì)產(chǎn)生冗余數(shù)據(jù),如果只有少量數(shù)據(jù),此影響可以忽略;數(shù)量大可能會(huì)影響到數(shù)據(jù)的處理效率。列存儲(chǔ)在寫入效率、保證數(shù)據(jù)完整性上都不如行存儲(chǔ),它的優(yōu)勢(shì)是在讀取過程,不會(huì)產(chǎn)生冗余數(shù)據(jù),這對(duì)數(shù)據(jù)完整性要求不高的大數(shù)據(jù)處理領(lǐng)域,比如互聯(lián)網(wǎng),猶為重要。

改進(jìn)集中在兩方面:行存儲(chǔ)讀取過程中避免產(chǎn)生冗余數(shù)據(jù),列存儲(chǔ)提高讀寫效率。

如何改進(jìn)它們的缺點(diǎn),并保證優(yōu)點(diǎn)呢?

行存儲(chǔ)的改進(jìn):減少冗余數(shù)據(jù)首先是用戶在定義數(shù)據(jù)時(shí)避免冗余列的產(chǎn)生;其次是優(yōu)化數(shù)據(jù)存儲(chǔ)記錄結(jié)構(gòu),保證從磁盤讀出的數(shù)據(jù)進(jìn)入內(nèi)存后,能夠被快速分解,消除冗余列。要知道,目前市場(chǎng)上即使最低端CPU和內(nèi)存的速度也比機(jī)械磁盤快上100-1000倍。如果用上高端的硬件配置,這個(gè)處理過程還要更快。

列存儲(chǔ)的兩點(diǎn)改進(jìn):1.在計(jì)算機(jī)上安裝多塊硬盤,以多線程并行的方式讀寫它們。多塊硬盤并行工作可以減少磁盤讀寫競(jìng)用,這種方式對(duì)提高處理效率優(yōu)勢(shì)十分明顯。缺點(diǎn)是需要更多的硬盤,這會(huì)增加投入成本,在大規(guī)模數(shù)據(jù)處理應(yīng)用中是不小的數(shù)目,運(yùn)營(yíng)商需要認(rèn)真考慮這個(gè)問題。2.對(duì)寫過程中的數(shù)據(jù)完整性問題,可考慮在寫入過程中加入類似關(guān)系數(shù)據(jù)庫的“回滾”機(jī)制,當(dāng)某一列發(fā)生寫入失敗時(shí),此前寫入的數(shù)據(jù)全部失效,同時(shí)加入散列碼校驗(yàn),進(jìn)一步保證數(shù)據(jù)完整性。

這兩種存儲(chǔ)方案還有一個(gè)共同改進(jìn)的地方:頻繁的小量的數(shù)據(jù)寫入對(duì)磁盤影響很大,更好的解決辦法是將數(shù)據(jù)在內(nèi)存中暫時(shí)保存并整理,達(dá)到一定數(shù)量后,一次性寫入磁盤,這樣消耗時(shí)間更少一些。目前機(jī)械磁盤的寫入速度在20M-50M/秒之間,能夠以批量的方式寫入磁盤,效果也是不錯(cuò)的。

四. 總結(jié)

兩種存儲(chǔ)格式各自的特性都決定了它們不可能是完美的解決方案。 如果首要考慮是數(shù)據(jù)的完整性和可靠性,那么行存儲(chǔ)是不二選擇,列存儲(chǔ)只有在增加磁盤并改進(jìn)軟件設(shè)計(jì)后才能接近這樣的目標(biāo)。如果以保存數(shù)據(jù)為主,行存儲(chǔ)的寫入性能比列存儲(chǔ)高很多。在需要頻繁讀取單列集合數(shù)據(jù)的應(yīng)用中,列存儲(chǔ)是最合適的。如果每次讀取多列,兩個(gè)方案可酌情選擇:采用行存儲(chǔ)時(shí),設(shè)計(jì)中應(yīng)考慮減少或避免冗余列;若采用列存儲(chǔ)方案,為保證讀寫入效率,每列數(shù)據(jù)盡可能分別保存到不同的磁盤上,多個(gè)線程并行讀寫各自的數(shù)據(jù),這樣避免了磁盤競(jìng)用的同時(shí)也提高了處理效率。 無論選擇哪種方案,將同內(nèi)容數(shù)據(jù)聚湊在一起都是必須的,這是減少磁頭在磁盤上的移動(dòng),提高數(shù)據(jù)讀取時(shí)間的有效辦法。

  

關(guān)于作者:

袁萌,現(xiàn)就職于國(guó)際商用機(jī)器(IBM)中國(guó)有限公司,主要從事大規(guī)模數(shù)據(jù)產(chǎn)品的設(shè)計(jì)/開發(fā)工作,存儲(chǔ)數(shù)據(jù)高可用性以及數(shù)據(jù)生命周期管理,積攢了大量的設(shè)計(jì)及工作經(jīng)驗(yàn)。專注于金融、電信、制造等大型數(shù)據(jù)中心存儲(chǔ)架構(gòu)設(shè)計(jì)。對(duì)業(yè)界主流的云儲(chǔ)存產(chǎn)品以及技術(shù)有著深刻的認(rèn)識(shí)。


給InfoQ中文站投稿或者參與內(nèi)容翻譯工作,請(qǐng)郵件至editors@cn.。也歡迎大家通過新浪微博(@InfoQ)或者騰訊微博(@InfoQ)關(guān)注我們,并與我們的編輯和其他讀者朋友交流。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多