成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

大數據存取的選擇:行存儲還是列存儲?

大數據
目前大數據存儲有兩種方案可供選擇:行存儲和列存儲。業界對兩種存儲方案有很多爭持,集中焦點是:誰能夠更有效地處理海量數據,且兼顧安全、可靠、完整性。

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

一.結構布局

  行存儲數據排列

  列存儲數據排列

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

二. 對比

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

  還有數據修改,這實際也是一次寫入過程。不同的是,數據修改是對磁盤上的記錄做刪除標記。行存儲是在指定位置寫入一次,列存儲是將磁盤定位到多個列上分別寫入,這個過程仍是行存儲的列數倍。所以,數據修改也是以行存儲占優。 數據讀取時,行存儲通常將一行數據完全讀出,如果只需要其中幾列數據的情況,就會存在冗余列,出于縮短處理時間的考量,消除冗余列的過程通常是在內存中進行的。列存儲每次讀取的數據是集合的一段或者全部,如果讀取多列時,就需要移動磁頭,再次定位到下一列的位置繼續讀取。 再談兩種存儲的數據分布。由于列存儲的每一列數據類型是同質的,不存在二義性問題。比如說某列數據類型為整型(int),那么它的數據集合一定是整型數據。這種情況使數據解析變得十分容易。相比之下,行存儲則要復雜得多,因為在一行記錄中保存了多種類型的數據,數據解析需要在多種數據類型之間頻繁轉換,這個操作很消耗CPU,增加了解析的時間。所以,列存儲的解析過程更有利于分析大數據。

 

三. 優化

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

  改進集中在兩方面:行存儲讀取過程中避免產生冗余數據,列存儲提高讀寫效率。

  如何改進它們的缺點,并保證優點呢?

  行存儲的改進:減少冗余數據首先是用戶在定義數據時避免冗余列的產生;其次是優化數據存儲記錄結構,保證從磁盤讀出的數據進入內存后,能夠被快速分解,消除冗余列。要知道,目前市場上即使***端CPU和內存的速度也比機械磁盤快上100-1000倍。如果用上高端的硬件配置,這個處理過程還要更快。

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

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

  四. 總結

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

【編輯推薦】

 

責任編輯:彭凡 來源: 比特網
相關推薦

2019-07-29 15:08:34

RedisHashString

2018-03-20 10:37:33

存儲大數據管理

2013-08-08 10:07:43

大數據存儲結構化數據

2013-09-10 09:04:41

云計算大數據存儲

2019-12-02 09:41:05

存儲數據IT

2014-03-24 10:54:10

大數據分析

2022-09-01 23:34:18

大數據數據分析工具

2017-07-13 11:13:18

大數據數據存儲

2021-06-15 05:52:59

SQLNoSQL數據庫

2020-06-15 08:51:58

數據庫存儲系統

2018-12-26 15:00:56

數據庫行式存儲列式存儲

2009-05-19 09:58:41

MyISAMInnoDB存儲引擎

2013-07-24 10:26:40

華為數據存儲華為存儲華為

2009-05-05 10:19:37

存儲引擎InnoDBMyISAM

2016-01-05 16:23:22

存儲設備外置存儲空間

2018-07-04 09:30:55

列式存儲格式

2018-08-24 09:42:05

云存儲存儲大數據

2024-04-29 08:53:10

大數據存儲數據

2018-02-08 10:47:19

存儲技術列存儲

2018-06-07 16:33:31

大數據冷熱數據存儲平臺
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产综合久久久久 | 成人在线中文字幕 | 久久久性色精品国产免费观看 | 国产精品日日摸夜夜添夜夜av | 久久草在线视频 | 成人精品一区二区三区中文字幕 | 日日操视频 | 91九色视频 | 久久久久国产一级毛片 | 天天干天天色 | 操久久久| 中文字幕在线观看www | 日韩欧美一级精品久久 | 国产精品久久久久久久久久三级 | 久久久久久久久国产成人免费 | 欧美成人性生活 | 蜜桃视频在线观看免费视频网站www | 日韩α片| 久久99视频 | 狼色网| av网站在线播放 | 国产精品99久久久久久www | 一区二区三区精品视频 | 久久精品91久久久久久再现 | 午夜免费视频观看 | 亚洲狠狠爱 | 色在线视频网站 | 成人黄色在线视频 | 在线 丝袜 欧美 日韩 制服 | 中文字幕一区二区三区四区五区 | 亚洲精品久久久久久久久久久久久 | 日本三级全黄三级三级三级口周 | 人人干人人爽 | 四虎最新视频 | 成人精品视频免费 | 国产久视频 | 欧美一区视频 | 亚洲不卡视频 | 精品国产一区二区三区久久久蜜月 | www.操com | 亚洲精品视频导航 |