列族存儲的特點
A. 列族資料庫對於淘寶有哪些優點
方便查詢了。
列族資料庫將數據存儲在列族中,而列族裡的行則把許多列數據與本行的「行鍵」(row key)關聯起來。列族用來把通常需要一並訪問的相關數據分成組。例如,可能要同時訪問多個客戶的配置信息,但是很少需要同時訪問他們的訂單。 Cassandra是一種能快速執行跨集群寫入操作並易於對此擴展的資料庫。集群中沒有主節點,其中每個節點均可以處理讀取與寫入請求。
B. 磁碟陣列有什麼優點
磁碟陣列簡稱RAID(Rendant Arrays of Inexpensive Disks,RAID),有「價格便宜且多餘的磁碟陣列」之意。其原理是利用數組方式來作磁碟組,配合數據分散排列的設計,提升數據的安全性。磁碟陣列主要針對硬碟,在容量及速度上,無法跟上CPU及內存的發展,提出改善方法。磁碟陣列是由很多便宜、容量較小、穩定性較高、速度較慢磁碟,組合成一個大型的磁碟組,利用個別磁碟提供數據所產生的加成效果來提升整個磁碟系統的效能。同時,在儲存數據時,利用這項技術,將數據切割成許多區段,分別存放在各個硬碟上。
磁碟陣列還能利用同位檢查(Parity Check)的觀念,在數組中任一顆硬碟故障時,仍可讀出數據,在數據重構時,將故障硬碟內的數據,經計算後重新置入新硬碟中。
磁碟陣列的由來: 由美國柏克萊大學(University of California-Berkeley)在1987年,發表的文章:「A Case for Rendant Arrays of Inexpensive Disks」。文章中,談到了RAID這個字匯,而且定義了RAID的5層級。柏克萊大學研究其研究目的為,反應當時CPU快速的性能。CPU效能每年大約成長30~50%,而硬磁機只能成長約7%。研究小組希望能找出一種新的技術,在短期內,立即提升效能來平衡計算機的運算能力。在當時,柏克萊研究小組的主要研究目的是效能與成本。 另外,研究小組也設計出容錯(fault-tolerance),邏輯數據備份(logical data rendancy),而產生了RAID理論。研究初期,便宜(Inexpensive)的磁碟也是主要的重點,但後來發現,大量便宜磁碟組合並不能適用於現實的生產環境,後來Inexpensive被改為independence,許多獨立的磁碟組。 磁碟陣列,時勢所趨: 自有PC以來,硬碟是最常使用的儲存裝置。但在整個計算機系統架構中,跟CPU與RAM來比,硬碟的速度是PC中最弱的設備之一。所以,為了加速計算機整體的數據流量,增加儲存的吞吐量,進階改進硬碟數據的安全,磁碟陣列的設計因應而生。 硬碟隨著科技的日新月異,現在其容量已達1500GB以上,轉速到了1萬轉,甚至15000轉,而且價格實在是很便宜,再加現在企業流行建造網路,企業資源計劃(Enterprise Resource Planning:ERP)是每個公司建構網路的主要目標。所以,利用區域網絡來傳遞數據,伺服器所使用的硬碟顯得非常重要,除了容量大、速度快之外,穩定更是基本要求。基於此因,磁碟陣列開始被廣泛的應用在個人計算機上。 磁碟陣列其樣式有三種,一是外接式磁碟陣列櫃、二是內接式磁碟陣列卡,三是利用軟體來模擬。外接式磁碟陣列櫃最常被使用大型伺服器上,具可熱抽換(Hot Swap)的特性,不過這類產品的價格都很貴。內接式磁碟陣列卡,因為價格便宜,但需要較高的安裝技術,適合技術人員使用操作。另外利用軟體模擬的方式,由於會拖累機器的速度,不適合大數據流量的伺服器。 由上述可知,現在IDE磁碟陣列大行其道的道理;IDE介面硬碟的穩定度與效能表現已有很大的提升,加上成本考量,所以採用IDE介面硬碟來作為磁碟陣列的解決方案,可說是最佳的方式 在網路存儲中,磁碟陣列是一種把若干硬磁碟驅動器按照一定要求組成一個整體,整個磁碟陣列由陣列控制器管理的系統。磁帶庫是像自動載入磁帶機一樣的基於磁帶的備份系統,磁帶庫由多個驅動器、多個槽、機械手臂組成,並可由機械手臂自動實現磁帶的拆卸和裝填。它能夠提供同樣的基本自動備份和數據恢復功能,同時具有更先進的技術特點。掌握網路存儲設備的安裝、操作使用也是網管員必須要學會的。在架構無線區域網時,對無線路由器、無線網路橋接器AP、無線網卡、天線等無線區域網產品進行安裝、調試和應用操作。 磁碟陣列的主流結構: 磁碟陣列作為獨立系統在主機外直連或通過網路與主機相連。磁碟陣列有多個埠可以被不同主機或不同埠連接。一個主機連接陣列的不同埠可提升傳輸速度。 和目前PC用單磁碟內部集成緩存一樣,在磁碟陣列內部為加快與主機交互速度,都帶有一定量的緩沖存儲器。主機與磁碟陣列的緩存交互,緩存與具體的磁碟交互數據。 在應用中,有部分常用的數據是需要經常讀取的,磁碟陣列根據內部的演算法,查找出這些經常讀取的數據,存儲在緩存中,加快主機讀取這些數據的速度,而對於其他緩存中沒有的數據,主機要讀取,則由陣列從磁碟上直接讀取傳輸給主機。對於主機寫入的數據,只寫在緩存中,主機可以立即完成寫操作。然後由緩存再慢慢寫入磁碟。
編輯本段磁碟陣列的優點
RAID的採用為存儲系統(或者伺服器的內置存儲)帶來巨大利益,其中提高傳輸速率和提供容錯功能是最大的優點。 RAID通過同時使用多個磁碟,提高了傳輸速率。RAID通過在多個磁碟上同時存儲和讀取數據來大幅提高存儲系統的數據吞吐量(Throughput)。在RAID中,可以讓很多磁碟驅動器同時傳輸數據,而這些磁碟驅動器在邏輯上又是一個磁碟驅動器,所以使用RAID可以達到單個磁碟驅動器幾倍、幾十倍甚至上百倍的速率。這也是RAID最初想要解決的問題。因為當時CPU的速度增長很快,而磁碟驅動器的數據傳輸速率無法大幅提高,所以需要有一種方案解決二者之間的矛盾。RAID最後成功了。 通過數據校驗,RAID可以提供容錯功能。這是使用RAID的第二個原因,因為普通磁碟驅動器無法提供容錯功能,如果不包括寫在磁碟上的CRC(循環冗餘校驗)碼的話。RAID容錯是建立在每個磁碟驅動器的硬體容錯功能之上的,所以它提供更高的安全性。在很多RAID模式中都有較為完備的相互校驗/恢復的措施,甚至是直接相互的鏡像備份,從而大大提高了RAID系統的容錯度,提高了系統的穩定冗餘性。
編輯本段磁碟陣列問答
1. 什麼是磁碟陣列(Disk Array)? 磁碟陣列(Disk Array)是由一個硬碟控制器來控制多個硬碟的相互連接,使多個硬碟的讀寫同步,減少錯誤,增加效率和可靠度的技術。 2.什麼是RAID? RAID是Rendant Array of Inexpensive Disk的縮寫,意為廉價冗餘磁碟陣列,是磁碟陣列在技術上實現的理論標准,其目的在於減少錯誤、提高存儲系統的性能與可靠度。常用的等級有1、3、5級等。 3.什麼是RAID Level 0? RAID Level 0是Data Striping(數據分割)技術的實現,它將所有硬碟構成一個磁碟陣列,可以同時對多個硬碟做讀寫動作,但是不具備備份及容錯能力,它價格便宜,硬碟使用效率最佳,但是可靠度是最差的。 以一個由兩個硬碟組成的RAID Level 0磁碟陣列為例,它把數據的第1和2位寫入第一個硬碟,第三和第四位寫入第二個硬碟……以此類推,所以叫「數據分割",因為各盤數據的寫入動作是同時做的,所以它的存儲速度可以比單個硬碟快幾倍。 但是,這樣一來,萬一磁碟陣列上有一個硬碟壞了,由於它把數據拆開分別存到了不同的硬碟上,壞了一顆等於中斷了數據的完整性,如果沒有整個磁碟陣列的備份磁帶的話,所有的數據是無法挽回的。因此,盡管它的效率很高,但是很少有人冒著數據丟失的危險採用這項技術。 4.什麼是RAID Level 1? RAID Level 1使用的是Disk Mirror(磁碟映射)技術,就是把一個硬碟的內容同步備份復制到另一個硬碟里,所以具備了備份和容錯能力,這樣做的使用效率不高,但是可靠性高。 5.什麼是RAID Level 3? RAID Level 3採用Byte-interleaving(數據交錯存儲)技術,硬碟在SCSI控制卡下同時動作,並將用於奇偶校驗的數據儲存到特定硬碟機中,它具備了容錯能力,硬碟的使用效率是安裝幾個就減掉一個,它的可靠度較佳。 6.什麼是RAID Level 5? RAID Level 5使用的是Disk Striping(硬碟分割)技術,與Level 3的不同之處在於它把奇偶校驗數據存放到各個硬碟里,各個硬碟在SCSI控制卡的控制下平行動作,有容錯能力,跟Level 3一樣,它的使用效率也是安裝幾個再減掉一個。 7.什麼是熱插拔硬碟? 熱插拔硬碟英文名為Hot-Swappable Disk,在磁碟陣列中,如果使用支持熱插拔技術的硬碟,在有一個硬碟壞掉的情況下,伺服器可以不用關機,直接抽出壞掉的硬碟,換上新的硬碟。一般的商用磁碟陣列在硬碟壞掉的時候,會自動鳴叫提示管理員更換硬碟。
編輯本段RAID技術規范簡介
在計算機發展的初期,「大容量」硬碟的價格還相當高,解決數據存儲安全性問題的主要方法是使用磁帶機等設備進行備份,這種方法雖然可以保證數據的安全,但查閱和備份工作都相當繁瑣。1987年, Patterson、Gibson和Katz這三位工程師在加州大學伯克利分校發表了題為《A Case of Rendant Array of Inexpensive Disks(廉價磁碟冗餘陣列方案)》的論文,其基本思想就是將多隻容量較小的、相對廉價的硬碟驅動器進行有機組合,使其性能超過一隻昂貴的大硬碟。這一設計思想很快被接受,從此RAID技術得到了廣泛應用,數據存儲進入了更快速、更安全、更廉價的新時代。 磁碟陣列對於個人電腦用戶,還是比較陌生和神秘的。印象中的磁碟陣列似乎還停留在這樣的場景中:在寬闊的大廳里,林立的磁碟櫃,數名表情陰郁、早早謝頂的工程師徘徊在其中,不斷從中抽出一塊塊沉重的硬碟,再插入一塊塊似乎更加沉重的硬碟……終於,隨著大容量硬碟的價格不斷降低,個人電腦的性能不斷提升,IDE-RAID作為磁碟性能改善的最廉價解決方案,開始走入一般用戶的計算機系統。 RAID技術主要包含RAID 0~RAID 7等數個規范,它們的側重點各不相同,常見的規范有如下幾種: RAID 0:RAID 0連續以位或位元組為單位分割數據,並行讀/寫於多個磁碟上,因此具有很高的數據傳輸率,但它沒有數據冗餘,因此並不能算是真正的RAID結構。RAID 0隻是單純地提高性能,並沒有為數據的可靠性提供保證,而且其中的一個磁碟失效將影響到所有數據。因此,RAID 0不能應用於數據安全性要求高的場合。 RAID 1:它是通過磁碟數據鏡像實現數據冗餘,在成對的獨立磁碟上產生互 為備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1可以提高讀取性能。RAID 1是磁碟陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁碟失效時,系統可以自動切換到鏡像磁碟上讀寫,而不需要重組失效的數據。 RAID 0+1: 也被稱為RAID 10標准,實際是將RAID 0和RAID 1標准結合的產物,在連續地以位或位元組為單位分割數據並且並行讀/寫多個磁碟的同時,為每一塊磁碟作磁碟鏡像進行冗餘。它的優點是同時擁有RAID 0的超凡速度和RAID 1的數據高可靠性,但是CPU佔用率同樣也更高,而且磁碟的利用率比較低。 RAID 2:將數據條塊化地分布於不同的硬碟上,條塊單位為位或位元組,並使用稱為「加重平均糾錯碼(海明碼)」的編碼技術來提供錯誤檢查及恢復。這種編碼技術需要多個磁碟存放檢查及恢復信息,使得RAID 2技術實施更復雜,因此在商業環境中很少使用。 RAID 3:它同RAID 2非常類似,都是將數據條塊化分布於不同的硬碟上,區別在於RAID 3使用簡單的奇偶校驗,並用單塊磁碟存放奇偶校驗信息。如果一塊磁碟失效,奇偶盤及其他數據盤可以重新產生數據;如果奇偶盤失效則不影響數據使用。RAID 3對於大量的連續數據可提供很好的傳輸率,但對於隨機數據來說,奇偶盤會成為寫操作的瓶頸。 RAID 4:RAID 4同樣也將數據條塊化並分布於不同的磁碟上,但條塊單位為塊或記錄。RAID 4使用一塊磁碟作為奇偶校驗盤,每次寫操作都需要訪問奇偶盤,這時奇偶校驗盤會成為寫操作的瓶頸,因此RAID 4在商業環境中也很少使用。 RAID 5:RAID 5不單獨指定的奇偶盤,而是在所有磁碟上交叉地存取數據及奇偶校驗信息。在RAID 5上,讀/寫指針可同時對陣列設備進行操作,提供了更高的數據流量。RAID 5更適合於小數據塊和隨機讀寫的數據。RAID 3與RAID 5相比,最主要的區別在於RAID 3每進行一次數據傳輸就需涉及到所有的陣列盤;而對於RAID 5來說,大部分數據傳輸只對一塊磁碟操作,並可進行並行操作。在RAID 5中有「寫損失」,即每一次寫操作將產生四個實際的讀/寫操作,其中兩次讀舊的數據及奇偶信息,兩次寫新的數據及奇偶信息。 RAID 6:與RAID 5相比,RAID 6增加了第二個獨立的奇偶校驗信息塊。兩個獨立的奇偶系統使用不同的演算法,數據的可靠性非常高,即使兩塊磁碟同時失效也不會影響數據的使用。但RAID 6需要分配給奇偶校驗信息更大的磁碟空間,相對於RAID 5有更大的「寫損失」,因此「寫性能」非常差。較差的性能和復雜的實施方式使得RAID 6很少得到實際應用。 RAID 7:這是一種新的RAID標准,其自身帶有智能化實時操作系統和用於存儲管理的軟體工具,可完全獨立於主機運行,不佔用主機CPU資源。RAID 7可以看作是一種存儲計算機(Storage Computer),它與其他RAID標准有明顯區別。除了以上的各種標准(如表1),我們可以如RAID 0+1那樣結合多種RAID規范來構築所需的RAID陣列,例如RAID 5+3(RAID 53)就是一種應用較為廣泛的陣列形式。用戶一般可以通過靈活配置磁碟陣列來獲得更加符合其要求的磁碟存儲系統。 RAID 5E RAID 5E(RAID 5 Enhencement): RAID 5E是在 RAID 5級別基礎上的改進,與RAID 5類似,數據的校驗信息均勻分布在各硬碟上,但是,在每個硬碟上都保留了一部分未使用的空間,這部分空間沒有進行條帶化,最多允許兩塊物理硬碟出現故障。看起來,RAID 5E和RAID 5加一塊熱備盤好象差不多,其實由於RAID 5E是把數據分布在所有的硬碟上,性能會與RAID5 加一塊熱備盤要好。當一塊硬碟出現故障時,有故障硬碟上的數據會被壓縮到其它硬碟上未使用的空間,邏輯盤保持RAID 5級別。 RAID 5EE RAID 5EE: 與RAID 5E相比,RAID 5EE的數據分布更有效率,每個硬碟的一部分空間被用作分布的熱備盤,它們是陣列的一部分,當陣列中一個物理硬碟出現故障時,數據重建的速度會更快。 開始時RAID方案主要針對SCSI硬碟系統,系統成本比較昂貴。1993年,HighPoint公司推出了第一款IDE-RAID控制晶元,能夠利用相對廉價的IDE硬碟來組建RAID系統,從而大大降低了RAID的「門檻」。從此,個人用戶也開始關注這項技術,因為硬碟是現代個人計算機中發展最為「緩慢」和最缺少安全性的設備,而用戶存儲在其中的數據卻常常遠超計算機的本身價格。在花費相對較少的情況下,RAID技術可以使個人用戶也享受到成倍的磁碟速度提升和更高的數據安全性,現在個人電腦市場上的IDE-RAID控制晶元主要出自HighPoint和Promise公司,此外還有一部分來自AMI公司。 面向個人用戶的IDE-RAID晶元一般只提供了RAID 0、RAID 1和RAID 0+1(RAID 10)等RAID規范的支持,雖然它們在技術上無法與商用系統相提並論,但是對普通用戶來說其提供的速度提升和安全保證已經足夠了。隨著硬碟介面傳輸率的不斷提高,IDE-RAID晶元也不斷地更新換代,晶元市場上的主流晶元已經全部支持ATA 100標准,而HighPoint公司新推出的HPT 372晶元和Promise最新的PDC20276晶元,甚至已經可以支持ATA 133標準的IDE硬碟。在主板廠商競爭加劇、個人電腦用戶要求逐漸提高的今天,在主板上板載RAID晶元的廠商已經不在少數,用戶完全可以不用購置RAID卡,直接組建自己的磁碟陣列,感受磁碟狂飆的速度。 RAID 50 RAID 50:RAID50是RAID5與RAID0的結合。此配置在RAID5的子磁碟組的每個磁碟上進行包括奇偶信息在內的數據的剝離。每個RAID5子磁碟組要求三個硬碟。RAID50具備更高的容錯能力,因為它允許某個組內有一個磁碟出現故障,而不會造成數據丟失。而且因為奇偶位分部於RAID5子磁碟組上,故重建速度有很大提高。優勢:更高的容錯能力,具備更快數據讀取速率的潛力。需要注意的是:磁碟故障會影響吞吐量。故障後重建信息的時間比鏡像配置情況下要長。
編輯本段實現IDE RAID0/RAID1的方法
在RAID家族裡,RAID 0和RAID 1在個人電腦上應用最廣泛,畢竟願意使用4塊甚至更多的硬碟來構築RAID 0+1或其他硬碟陣列的個人用戶少之又少,因此我們在這里僅就這兩種RAID方式進行講解。我們選擇支持IDE-RAID功能的升技KT7A-R AID主板,一步一步向大家介紹IDE-RAID的安裝。升技KT7A-RAID集成的是HighPoint 370晶元,支持RAID 0、1、0+1。 做RAID自然少不了硬碟,RAID 0和RAID 1對磁碟的要求不一樣,RAID 1(Mirror)磁碟鏡像一般要求兩塊(或多塊)硬碟容量一致,而RAID 0(Striping)磁碟一般沒有這個要求,當然,選用容量相似性能相近甚至完全一樣的硬碟比較理想。為了方便測試,我們選用兩塊60GB的希捷酷魚Ⅳ硬碟(Barracuda ATA Ⅳ、編號ST360021A)。系統選用Duron 750MHz的CPU,2×128MB樵風金條SDRAM,耕升GeForce2 Pro顯卡,應該說是比較普通的配置,我們也希望藉此了解構建RAID所需的系統要求。 1.RAID 0的創建 第一步 首先要備份好硬碟中的數據。很多用戶都沒有重視備份這一工作,特別是一些比較粗心的個人用戶。創建RAID對數據而言是一項比較危險的操作,稍不留神就有可能毀掉整塊硬碟的數據,我們首先介紹的RAID 0更是這種情況,在創建RAID 0時,所有陣列中磁碟上的數據都將被抹去,包括硬碟分區表在內。因此要先准備好一張帶Fdisk與format命令的Windows 98啟動盤,這也是這一步要注意的重要事項。 第二步 將兩塊硬碟的跳線設置為Master,分別接上升技KT7A-RAID的IDE3、IDE4口(它們由主板上的HighPoint370晶元控制)。由於RAID 0會重建兩塊硬碟的分區表,我們就無需考慮硬碟連接的順序(下文中我們會看到在創建RAID 1時這個順序很重要)。 第三步 對BIOS進行設置,打開ATA RAID CONTROLLER。我們在升技KT7A-RAID主板的BIOS中進入INTEGRATED PERIPHERALS選項並開啟ATA100 RAID IDE CONTROLLER。升技建議將開機順序全部改為ATA 100 RAID,實際我們發現這在系統安裝過程中並不可行,難道沒有分區的硬碟可以啟動嗎?因此我們仍然設置軟碟機作為首選項。 第四步 接下來的設置步驟是創建RAID 0的核心內容,我們以圖解方式向大家詳細介紹: 1.系統BIOS設置完成以後重啟電腦,開機檢測時將不會再報告發現硬碟。 2.磁碟的管理將由HighPoint 370晶元接管。 3.下面是非常關鍵的HighPoint 370 BIOS設置,在HighPoint 370磁碟掃描界面同時按下「Ctrl」和「H」。 4.進入HighPoint 370 BIOS設置界面後第一個要做的工作就是選擇「Create RAID」創建RAID。 5.在「Array Mode(陣列模式)」中進行RAID模式選擇,這里能夠看到RAID 0、RAID 1、RAID 0+1和Span的選項,在此我們選擇了RAID 0項。 6.RAID模式選擇完成會自動退出到上一級菜單進行「Disk Drives(磁碟驅動器)」選擇,一般來說直接回車就行了。 7.下一項設置是條帶單位大小,預設值為64kB,沒有特殊要求可以不予理睬。8.接著是「Start Create(開始創建)」的選項,在你按下「Y」之前,請認真想想是否還有重要的數據留在硬碟上,這是你最後的機會!一旦開始創建RAID,硬碟上的所有數據都會被清除。 9.創建完成以後是指定BOOT啟動盤,任選一個吧。 按「Esc」鍵退出,當然少不了按下「Y」來確認一下。 HighPoint 370 BIOS沒有提供類似「Exit Without Save」的功能,修改設置後是不可逆轉的。 第五步 再次重啟電腦以後,我們就可以在屏幕上看到「Striping(RAID 0)for Array #0」字樣了。插入先前製作的啟動盤,啟動DOS。打開Fdisk程序,咦?怎麼就一個硬碟可見?是的,RAID陣列已經整個被看作了一塊硬碟,對於操作系統而言,RAID完全透明,我們大可不必費心RAID磁碟的管理,這些都由控制晶元完成。接下來按照普通單硬碟方法進行分區,你會發現「這個」硬碟的容量「變」大了,仔細算算,對,總容量就是兩塊硬碟相加的容量!我們可以把RAID 0的讀寫比喻成拉鏈,它把數據分開在兩個硬碟上,讀取數據會變得更快,而且不會浪費磁碟空間。在分區和格式化後千萬別忘了激活主分區。 第六步 選擇操作系統讓我們頗費周折,HighPoint370晶元提供對Windows 98/NT/2000/XP的驅動支持,考慮到使RAID功能面向的是相對高級的用戶,所以我們選擇了對新硬體支持更好的Windows XP Professional英文版(採用英文版系統主要是為了方便後面的Winbench測試,大家自己使用RAID完全可以用中文版的操作系統),Windows 2000也是一個不錯的選擇,但是硬體支持方面顯然不如Windows XP Professional。 第七步 對於採用RAID的電腦,操作系統的安裝和普通情況下不一樣,讓我們看看圖示,這是在Windows XP完成第一步「文件復制」重啟以後出現的畫面,安裝程序會以英文提示「按下F6安裝SCSI設備或RAID磁碟」,這一過程很短,而且用戶往往會忽視屏幕下方的提示。 按下F6後出現安裝選擇,選擇「S」將安裝RAID控制晶元驅動,選擇「Enter」則不安裝。 按下「S」鍵會提示插入RAID晶元驅動盤。 鍵入回車,安裝程序自動搜索驅動盤上的程序,選擇「WinXP」那一個並回車。 如果所提供的版本和Windows XP Profesional內置的驅動版本不一致,安裝程序會給出提示讓用戶進行選擇。 按下「S」會安裝軟盤所提供的而按下「Enter」則安裝Windows XP Professional自帶的驅動。按下「S」後又需要確認,這次是按「Enter」(這個……確認太多了,呵呵)。接下來是正常的系統安裝,和普通安裝沒有任何區別。 RAID 0的安裝設置我們就介紹到這里,下面我們會談談RAID 1的安裝。與RAID 0相比,RAID 1的安裝過程要簡單許多,在正確操作的情況下不具破壞性。 2.RAID 1的創建 雖然在原理上和RAID 0完全不一樣,但RAID 1的安裝設置過程卻與RAID 0相差不多,主要區別在於HighPoint 370 BIOS里的設置。為了避免重復,我們只向大家重點介紹這部分設置: 進入HighPoint 370 BIOS後選擇「Create RAID」進行創建: 1.在「Array Mode」上點擊回車,在RAID模式選擇中選擇第二項「Mirror(RAID 1)for Data Security(為數據源盤創建鏡像)」。 2.接著是源盤的選擇,我們再次提醒用戶:務必小心,不要選錯。 3.然後是目標盤的選擇,也就是我們所說的鏡像盤或備份盤。 4.然後開始創建。 5.創建完成以後BIOS會提示進行鏡像的製作,這一過程相當漫長。 6.我們用了大約45分鍾才完成60GB的鏡像製作,至此RAID 1創建完成。 RAID 1會將主盤的數據復制到鏡像盤,因此在構建RAID 1時需要特別小心,千萬不要把主盤和鏡像盤弄混,否則結果將是悲劇性的。RAID 1既可在兩塊無數據的硬碟上創建,也能夠在一塊已經安裝操作系統的硬碟上添加,比RAID 0方便多了(除了漫長的鏡像製作過程)。創建完成以後我們試著將其中一塊硬碟拔下,HighPoint370 BIOS給出了警告,按下「Esc」,另一塊硬碟承擔起了源盤的重任,所有數據完好無損。 對於在一塊已經安裝操作系統的硬碟上添加RAID 1,我們建議的步驟是:打開BIOS中的控制晶元→啟動操作系統安裝HighPoint 370驅動→關機將源盤和鏡像盤接在IDE3、4口→進入HighPoint 370 BIOS設置RAID 1(步驟見上文介紹)→重啟系統完成創建。 我們對兩種RAID進行了簡單的測試,雖然RAID 0的測試成績讓人有些不解,但是實際使用中仍然感覺比單硬碟快了很多,特別是Windows XP Professional的啟動異常迅速,進度條一閃而過。至於傳輸率曲線出現不穩定的情況,我們估計和平台選擇有一些關系,畢竟集成晶元在進行這種高數據吞吐量的工作時非常容易被干擾。不過即使是這樣,我們也看到RAID 0系統的數據傳輸率達到了非常高的水平,一度接近60MB/s。與RAID 0相比,RAID 1系統的性能雖然相對單磁碟系統沒有什麼明顯的改善,但測試中我們發現RAID 1的工作曲線顯得非常穩定,很少出現波動的情況。 再看看Winbench99 2.0中的磁碟測試成績,一目瞭然。 對用戶和操作系統而言,RAID 0和1是透明不影響任何操作的,我們就像使用一塊硬碟一樣。
編輯本段磁碟陣列實現方式
磁碟陣列有兩種方式可以實現,那就是「軟體陣列」與「硬體陣列」。 軟體陣列是指通過網路操作系統自身提供的磁碟管理功能將連接的普通SCSI卡上的多塊硬碟配置成邏輯盤,組成陣列。如微軟的Windows NT/2000 Server/Server 2003和NetVoll的NetWare兩種操作系統都可以提供軟體陣列功能,其中Windows NT/2000 Server/Server 2003可以提供RAID 0、RAID 1、RAID 5;NetWare操作系統可以實現RAID 1功能。軟體陣列可以提供數據冗餘功能,但是磁碟子系統的性能會有所降低,有的降代還比較大,達30%左右。
C. 數據結構存儲類型的特點是什麼
可以分為順序,鏈式,索引,散列這幾種物理上的存儲結構;與邏輯結構相對;你提的問題感覺不明確,不好給你一個確切的回答;
D. HBase中的數據是按照列族存儲的還是按照列存儲的
按照列族存儲
E. 為什麼說hbase是一個面向列的資料庫
在說HBase之前,我想再嘮叨幾句。做互聯網應用的哥們兒應該都清楚,互聯網應用這東西,你沒辦法預測你的系統什麼時候會被多少人訪問,你面臨的用戶到底有多少,說不定今天你的用戶還少,明天系統用戶就變多了,結果您的系統應付不過來了了,不幹了,這豈不是咱哥幾個的悲哀,說時髦點就叫「杯具啊」。
其實說白了,這些就是事先沒有認清楚互聯網應用什麼才是最重要的。從系統架構的角度來說,互聯網應用更加看重系統性能以及伸縮性,而傳統企業級應用都是比較看重數據完整性和數據安全性。那麼我們就來說說互聯網應用伸縮性這事兒.對於伸縮性這事兒,哥們兒我也寫了幾篇博文,想看的兄弟可以參考我以前的博文,對於web server,app server的伸縮性,我在這里先不說了,因為這部分的伸縮性相對來說比較容易一點,我主要來回顧一些一個慢慢變大的互聯網應用如何應對資料庫這一層的伸縮。
首先剛開始,人不多,壓力也不大,搞一台資料庫伺服器就搞定了,此時所有的東東都塞進一個Server里,包括web server,app server,db server,但是隨著人越來越多,系統壓力越來越多,這個時候可能你把web server,app server和db server分離了,好歹這樣可以應付一陣子,但是隨著用戶量的不斷增加,你會發現,資料庫這哥們不行了,速度老慢了,有時候還會宕掉,所以這個時候,你得給資料庫這哥們找幾個伴,這個時候Master-Salve就出現了,這個時候有一個Master Server專門負責接收寫操作,另外的幾個Salve Server專門進行讀取,這樣Master這哥們終於不抱怨了,總算讀寫分離了,壓力總算輕點了,這個時候其實主要是對讀取操作進行了水平擴張,通過增加多個Salve來克服查詢時CPU瓶頸。一般這樣下來,你的系統可以應付一定的壓力,但是隨著用戶數量的增多,壓力的不斷增加,你會發現Master server這哥們的寫壓力還是變的太大,沒辦法,這個時候怎麼辦呢?你就得切分啊,俗話說「只有切分了,才會有伸縮性嘛」,所以啊,這個時候只能分庫了,這也是我們常說的資料庫「垂直切分」,比如將一些不關聯的數據存放到不同的庫中,分開部署,這樣終於可以帶走一部分的讀取和寫入壓力了,Master又可以輕松一點了,但是隨著數據的不斷增多,你的資料庫表中的數據又變的非常的大,這樣查詢效率非常低,這個時候就需要進行「水平分區」了,比如通過將User表中的數據按照10W來劃分,這樣每張表不會超過10W了。
綜上所述,一般一個流行的web站點都會經歷一個從單台DB,到主從復制,到垂直分區再到水平分區的痛苦的過程。其實資料庫切分這事兒,看起來原理貌似很簡單,如果真正做起來,我想凡是sharding過資料庫的哥們兒都深受其苦啊。對於資料庫伸縮的文章,哥們兒可以看看後面的參考資料介紹。
好了,從上面的那一堆廢話中,我們也發現資料庫存儲水平擴張scale out是多麼痛苦的一件事情,不過幸好技術在進步,業界的其它弟兄也在努力,09年這一年出現了非常多的NoSQL資料庫,更准確的應該說是No relation資料庫,這些資料庫多數都會對非結構化的數據提供透明的水平擴張能力,大大減輕了哥們兒設計時候的壓力。下面我就拿Hbase這分布式列存儲系統來說說。
一 Hbase是個啥東東?
在說Hase是個啥傢伙之前,首先我們來看看兩個概念,面向行存儲和面向列存儲。面向行存儲,我相信大夥兒應該都清楚,我們熟悉的RDBMS就是此種類型的,面向行存儲的資料庫主要適合於事務性要求嚴格場合,或者說面向行存儲的存儲系統適合OLTP,但是根據CAP理論,傳統的RDBMS,為了實現強一致性,通過嚴格的ACID事務來進行同步,這就造成了系統的可用性和伸縮性方面大大折扣,而目前的很多NoSQL產品,包括Hbase,它們都是一種最終一致性的系統,它們為了高的可用性犧牲了一部分的一致性。好像,我上面說了面向列存儲,那麼到底什麼是面向列存儲呢?Hbase,Casandra,Bigtable都屬於面向列存儲的分布式存儲系統。看到這里,如果您不明白Hbase是個啥東東,不要緊,我再總結一下下:
Hbase是一個面向列存儲的分布式存儲系統,它的優點在於可以實現高性能的並發讀寫操作,同時Hbase還會對數據進行透明的切分,這樣就使得存儲本身具有了水平伸縮性。
二 Hbase數據模型
HBase,Cassandra的數據模型非常類似,他們的思想都是來源於Google的Bigtable,因此這三者的數據模型非常類似,唯一不同的就是Cassandra具有Super cloumn family的概念,而Hbase目前我沒發現。好了,廢話少說,我們來看看Hbase的數據模型到底是個啥東東。
在Hbase裡面有以下兩個主要的概念,Row key,Column Family,我們首先來看看Column family,Column family中文又名「列族」,Column family是在系統啟動之前預先定義好的,每一個Column Family都可以根據「限定符」有多個column.下面我們來舉個例子就會非常的清晰了。
假如系統中有一個User表,如果按照傳統的RDBMS的話,User表中的列是固定的,比如schema 定義了name,age,sex等屬性,User的屬性是不能動態增加的。但是如果採用列存儲系統,比如Hbase,那麼我們可以定義User表,然後定義info 列族,User的數據可以分為:info:name = zhangsan,info:age=30,info:sex=male等,如果後來你又想增加另外的屬性,這樣很方便只需要info:newProperty就可以了。
也許前面的這個例子還不夠清晰,我們再舉個例子來解釋一下,熟悉SNS的朋友,應該都知道有好友Feed,一般設計Feed,我們都是按照「某人在某時做了標題為某某的事情」,但是同時一般我們也會預留一下關鍵字,比如有時候feed也許需要url,feed需要image屬性等,這樣來說,feed本身的屬性是不確定的,因此如果採用傳統的關系資料庫將非常麻煩,況且關系資料庫會造成一些為null的單元浪費,而列存儲就不會出現這個問題,在Hbase里,如果每一個column 單元沒有值,那麼是佔用空間的。下面我們通過兩張圖來形象的表示這種關系:
上圖是傳統的RDBMS設計的Feed表,我們可以看出feed有多少列是固定的,不能增加,並且為null的列浪費了空間。但是我們再看看下圖,下圖為Hbase,Cassandra,Bigtable的數據模型圖,從下圖可以看出,Feed表的列可以動態的增加,並且為空的列是不存儲的,這就大大節約了空間,關鍵是Feed這東西隨著系統的運行,各種各樣的Feed會出現,我們事先沒辦法預測有多少種Feed,那麼我們也就沒有辦法確定Feed表有多少列,因此Hbase,Cassandra,Bigtable的基於列存儲的數據模型就非常適合此場景。說到這里,採用Hbase的這種方式,還有一個非常重要的好處就是Feed會自動切分,當Feed表中的數據超過某一個閥值以後,Hbase會自動為我們切分數據,這樣的話,查詢就具有了伸縮性,而再加上Hbase的弱事務性的特性,對Hbase的寫入操作也將變得非常快。
上面說了Column family,那麼我之前說的Row key是啥東東,其實你可以理解row key為RDBMS中的某一個行的主鍵,但是因為Hbase不支持條件查詢以及Order by等查詢,因此Row key的設計就要根據你系統的查詢需求來設計了額。我還拿剛才那個Feed的列子來說,我們一般是查詢某個人最新的一些Feed,因此我們Feed的Row key可以有以下三個部分構成<userId><timestamp><feedId>,這樣以來當我們要查詢某個人的最進的Feed就可以指定Start Rowkey為<userId><0><0>,End Rowkey為<userId><Long.MAX_VALUE><Long.MAX_VALUE>來查詢了,同時因為Hbase中的記錄是按照rowkey來排序的,這樣就使得查詢變得非常快。
三 Hbase的優缺點
1 列的可以動態增加,並且列為空就不存儲數據,節省存儲空間.
2 Hbase自動切分數據,使得數據存儲自動具有水平scalability.
3 Hbase可以提供高並發讀寫操作的支持
Hbase的缺點:
1 不能支持條件查詢,只支持按照Row key來查詢.
2 暫時不能支持Master server的故障切換,當Master宕機後,整個存儲系統就會掛掉.
四.補充
1.數據類型,HBase只有簡單的字元類型,所有的類型都是交由用戶自己處理,它只保存字元串。而關系資料庫有豐富的類型和存儲方式。
2.數據操作:HBase只有很簡單的插入、查詢、刪除、清空等操作,表和表之間是分離的,沒有復雜的表和表之間的關系,而傳統資料庫通常有各式各樣的函數和連接操作。
3.存儲模式:HBase是基於列存儲的,每個列族都由幾個文件保存,不同的列族的文件時分離的。而傳統的關系型資料庫是基於表格結構和行模式保存的
4.數據維護,HBase的更新操作不應該叫更新,它實際上是插入了新的數據,而傳統資料庫是替換修改
5.可伸縮性,Hbase這類分布式資料庫就是為了這個目的而開發出來的,所以它能夠輕松增加或減少硬體的數量,並且對錯誤的兼容性比較高。而傳統資料庫通常需要增加中間層才能實現類似的功能
F. HBase列族是怎麼定義的,一個表要定義幾個列族較好求幫助,謝謝了
HBase表中的每個列都歸屬於某個列族,列族必須作為表模式(schema)定義的一部分預先給出;
列名以列族作為前綴,每個「列族」都可以有多個列成員(column);
HBase把同一列族裡面的數據存儲在同一目錄下,由幾個文件保存。
目前
hbase
不能很好地處理
多個列族
建議
只用
1
~
2
個列族
最好只用一個
G. 什麼是RAID它有什麼特點
RAID是英文Rendant Array of Independent Disks的縮寫,翻譯成中文意思是「獨立磁碟冗餘陣列」,有時也簡稱磁碟陣列(Disk Array)。
簡單的說,RAID是一種把多塊獨立的硬碟(物理硬碟)按不同的方式組合起來形成一個硬碟組(邏輯硬碟),從而提供比單個硬碟更高的存儲性能和提供數據備份技術。組成磁碟陣列的不同方式成為RAID級別(RAID Levels)。數據備份的功能是在用戶數據一旦發生損壞後,利用備份信息可以使損壞數據得以恢復,從而保障了用戶數據的安全性。在用戶看起來,組成的磁碟組就像是一個硬碟,用戶可以對它進行分區,格式化等等。總之,對磁碟陣列的操作與單個硬碟一模一樣。不同的是,磁碟陣列的存儲速度要比單個硬碟高很多,而且可以提供自動數據備份。
RAID技術的兩大特點:一是速度、二是安全,由於這兩項優點,RAID技術早期被應用於高級伺服器中的SCSI介面的硬碟系統中,隨著近年計算機技術的發展,PC機的CPU的速度已進入GHz 時代。IDE介面的硬碟也不甘落後,相繼推出了ATA66和ATA100硬碟。這就使得RAID技術被應用於中低檔甚至個人PC機上成為可能。RAID通常是由在硬碟陣列塔中的RAID控制器或電腦中的RAID卡來實現的。
RAID技術經過不斷的發展,現在已擁有了從 RAID 0 到 6 七種基本的RAID 級別。另外,還有一些基本RAID級別的組合形式,如RAID 10(RAID 0與RAID 1的組合),RAID 50(RAID 0與RAID 5的組合)等。不同RAID 級別代表著不同的存儲性能、數據安全性和存儲成本。但我們最為常用的是下面的幾種RAID形式。
(1) RAID 0
(2) RAID 1
(3) RAID 0+1
(4) RAID 3
(5) RAID 5
RAID級別的選擇有三個主要因素:可用性(數據冗餘)、性能和成本。如果不要求可用性,選擇RAID0以獲得最佳性能。如果可用性和性能是重要的而成本不是一個主要因素,則根據硬碟數量選擇RAID 1。如果可用性、成本和性能都同樣重要,則根據一般的數據傳輸和硬碟的數量選擇RAID3、RAID5。