




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、大數(shù)據(jù)導(dǎo)論孟憲偉 許桂秋 主編 萬世明 檀大耀 梁烽 董國忠 孟劍 副主編數(shù)據(jù)中國“百校工程”項目系列教材數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)專業(yè)系列規(guī)劃教材BIG DATATechnology第4章 大數(shù)據(jù)存儲與管理 本章主要內(nèi)容如下。(1)數(shù)據(jù)的存儲模式。(2)大數(shù)據(jù)時代的存儲管理系統(tǒng)。4.1 數(shù)據(jù)存儲概述4.1.1 數(shù)據(jù)的存儲介質(zhì) 存儲介質(zhì)是數(shù)據(jù)存儲的載體,是數(shù)據(jù)存儲的基礎(chǔ)。存儲介質(zhì)并不是越貴越好、越先進越好,我們要根據(jù)不同的應(yīng)用環(huán)境,合理選擇存儲介質(zhì)。早期的存儲介質(zhì)有紙帶、卡片、磁帶等,目前常見的數(shù)據(jù)存儲介質(zhì)有機械硬盤、固態(tài)硬盤、可記錄光盤、U盤、閃存卡等。1機械硬盤 組成:機械硬盤即傳統(tǒng)普通硬盤,主
2、要由盤片、磁頭、磁頭停泊區(qū)、磁頭臂等組成,如圖4-1所示。圖4-1 機械硬盤 讀/寫原理:機械硬盤的磁頭可沿盤片的半徑方向運動,加上盤片每分鐘幾千轉(zhuǎn)的高速旋轉(zhuǎn),磁頭就可以定位在盤片的指定位置進行數(shù)據(jù)的讀/寫操作。機械硬盤中所有的盤片都裝在一個旋轉(zhuǎn)軸上。每張盤片之間是平行的,在每個盤片的存儲面上有一個磁頭,磁頭與盤片之間的距離比頭發(fā)絲的直徑還小,所有的磁頭連在一個磁頭控制器上,磁頭控制器負責各個磁頭的運動。另外,機械硬盤在讀取的時候,各個部件在做機械運動,所以會產(chǎn)生一定的熱量和噪聲。 穩(wěn)定性:機械硬盤都是磁碟型的,數(shù)據(jù)存儲在磁碟扇區(qū)里,所以機械硬盤不能摔,通電不能移動,否則易損壞。 優(yōu)缺點:優(yōu)點
3、在于便宜,性價比高,可以用較少的花費獲得較大容量,使用壽命長;缺點是相對固態(tài)硬盤來說,讀/寫速度較慢;防震性也沒有固態(tài)硬盤好。2固態(tài)硬盤 組成:固態(tài)硬盤(Solid State Drive,SSD)是用固態(tài)電子存儲芯片陣列制成的硬盤,由控制單元和存儲單元(Flash芯片、DRAM芯片)組成,如圖4-2所示。圖4-2 固態(tài)硬盤 讀/寫原理:與普通磁盤的數(shù)據(jù)讀/寫原理不同,固態(tài)硬盤的讀取直接由控制單元讀取存儲單元,不存在機械運動,因此讀取速度非常快。相對機械硬盤,固態(tài)硬盤的讀取速度提高了兩倍多。由于固態(tài)硬盤屬于無機械部件及閃存芯片,所以具有發(fā)熱量小、散熱快等特點,而且沒有機械馬達和風(fēng)扇,工作噪聲值
4、為0分貝。 穩(wěn)定性:固態(tài)硬盤使用閃存顆粒(即內(nèi)存、MP3、U盤等存儲介質(zhì))制作而成,所以內(nèi)部不存在任何機械部件,這樣即使在高速移動甚至伴隨翻轉(zhuǎn)傾斜的情況下,也不會影響正常使用。而且在發(fā)生碰撞和震蕩時,能夠?qū)?shù)據(jù)丟失的可能性降到最小。相較機械硬盤,固態(tài)硬盤更可靠。 優(yōu)缺點:固態(tài)硬盤的優(yōu)點是讀取和寫入速度快,缺點是價格較高,有寫入次數(shù)的限制,讀/寫有一定的壽命限制。 3可記錄光盤 常使用的可記錄光盤分為CD-R、CD-RW、DVDR/RW多種格式,如圖4-3所示。圖4-3 可記錄光盤(1)CD-R是一次刻錄、可多次讀取的光盤,標準容量為650MB,現(xiàn)在常用的刻錄容量為720MB。(2)CD-RW是
5、可以多次刻錄、反復(fù)擦寫的光盤,容量為650MB。(3)目前主流的DVD刻錄盤有兩種DVD-R/RW和DVD+R/RW。4U盤 U盤是一種Flash存儲設(shè)備,是用Flash芯片(Flash RAM,電可擦寫存儲器)作為存儲介質(zhì)制作的移動存儲器,如圖4-4所示。U盤采用通用串行總線(Universal Serial Bus,USB)接口,可反復(fù)擦寫的性能大大加強了數(shù)據(jù)的安全性。U盤使用極為方便,無須外接電源,支持即插即用和熱插拔,只要用戶計算機的主板上有USB接口,就可以使用。由U盤發(fā)展起來的MP3、MP4播放機也可當數(shù)據(jù)存儲設(shè)備使用。圖4-4 U盤5閃存卡 閃存卡一般用于數(shù)碼類的產(chǎn)品中,如用于手
6、機、數(shù)碼照相機、數(shù)碼攝像機、數(shù)碼錄音筆等。常用類型有SD卡、MiniSD卡、MicroSD(TF)卡、CF卡、記憶棒等,如圖4-5所示。圖4-5 閃存卡6數(shù)據(jù)存儲介質(zhì)的選擇原則 數(shù)據(jù)存儲介質(zhì)的選擇主要考慮如下原則。(1)耐久性 耐久性能高的存儲介質(zhì)不容易損壞,降低了數(shù)據(jù)損失的風(fēng)險。因而存儲數(shù)據(jù)應(yīng)選用對環(huán)境要求低、不容易損傷、耐久性能高的介質(zhì)。(2)容量恰當 介質(zhì)的高容量不僅有利于存儲空間的減少,還便于管理,但會使存儲的成本增加。對大容量數(shù)據(jù),如果存儲介質(zhì)容量低,將不利于存儲數(shù)據(jù)的完整。介質(zhì)的存儲容量最好與所管理的數(shù)據(jù)量大小相匹配。(3)低費用 介質(zhì)的價格低,可以減少存儲管理與系統(tǒng)運行的費用。(
7、4)廣泛的可接受性 為減少IT業(yè)界對存儲介質(zhì)不支持的風(fēng)險,我們應(yīng)當選用具有廣泛可使用性的存儲介質(zhì),特別應(yīng)注意選用能滿足工業(yè)標準的存儲介質(zhì)。 4.1.2 數(shù)據(jù)的存儲模式 目前,數(shù)據(jù)有3種常見的存儲模式(見圖4-6),它們被廣泛應(yīng)用于企業(yè)存儲設(shè)備中:附加直接模式(Direct-Attached Storage,DAS);附加網(wǎng)絡(luò)模式(Network-Attached Storage,NAS);存儲區(qū)域網(wǎng)絡(luò)模式(Storage Area Network,SAN)。圖4-6 數(shù)據(jù)的存儲模式1DAS DAS將存儲設(shè)備通過SCSI接口直接連接到一臺服務(wù)器上使用,如圖4-7所示。 DAS是通過小型計算機系統(tǒng)
8、接口(Small Computer System Interface,SCSI),在計算機與外部設(shè)備之間進行連接。圖4-7 DAS(1) DAS依賴主機的操作系統(tǒng)來實現(xiàn)數(shù)據(jù)的讀/寫、管理、備份等工作,如圖4-8所示。圖4-8 DAS(2)(1)DAS的優(yōu)點 配置簡單:DAS購置成本低,配置簡單,僅僅是一個外接的SCSI接口。 使用簡單:使用方法與使用本機硬盤并無太大差別。 使用廣泛:在中小型企業(yè)中,應(yīng)用十分廣泛。(2)DAS的缺點 擴展性差:在新的應(yīng)用需求出現(xiàn)時,需要為新增的服務(wù)器單獨配置新的存儲設(shè)備。 資源利用率低:不同的應(yīng)用服務(wù)器存儲的數(shù)據(jù)量隨著業(yè)務(wù)發(fā)展出現(xiàn)不同,有部分應(yīng)用存儲空間不夠,而
9、另一些卻有大量的存儲空間。 可管理性差:數(shù)據(jù)分散在應(yīng)用服務(wù)器各自的存儲設(shè)備上,不便于集中管理、分析和使用。 異構(gòu)化嚴重:企業(yè)在發(fā)展過程中采購不同廠商、不同型號的存儲設(shè)備,設(shè)備之間的異構(gòu)化嚴重,使維護成本很高。 I/O瓶頸:SCSI接口處理能力會成為數(shù)據(jù)讀/寫的瓶頸。2NAS NAS存儲設(shè)備是一種帶有操作系統(tǒng)的存儲設(shè)備,也叫作網(wǎng)絡(luò)文件服務(wù)器。NAS設(shè)備直接連接到TCP/IP網(wǎng)絡(luò)上,網(wǎng)絡(luò)服務(wù)器通過TCP/IP網(wǎng)絡(luò)存取與管理數(shù)據(jù)。 應(yīng)用:文檔、圖片、電影的共享等。 典型的NAS架構(gòu)如圖4-9所示。圖4-9 典型的NAS架構(gòu)(1)NAS的優(yōu)點 即插即用:容易部署,把NAS設(shè)備接入以太網(wǎng)就可以使用。 支
10、持多平臺:可以使用Linux等主流操作系統(tǒng)。(2)NAS的缺點 NAS設(shè)備與客戶機通過以太網(wǎng)連接,NAS使用網(wǎng)絡(luò)進行數(shù)據(jù)的備份和恢復(fù),因此數(shù)據(jù)存儲或備份時都會占用網(wǎng)絡(luò)帶寬。 存儲數(shù)據(jù)通過普通數(shù)據(jù)網(wǎng)絡(luò)傳輸,因此容易產(chǎn)生數(shù)據(jù)泄漏的安全問題。 只能以文件級訪問,不適合塊級的應(yīng)用。3SAN SAN是一個采用網(wǎng)狀通道(Fibre Channel,F(xiàn)C)技術(shù),通過FC交換機連接存儲陣列和應(yīng)用服務(wù)器,建立專用于數(shù)據(jù)存儲的區(qū)域網(wǎng)絡(luò),如圖4-10所示。 SAN支持數(shù)以百計的磁盤,提供了海量的存儲空間,解決了大容量存儲問題;這個海量空間可以從邏輯層面上按需要分成不同大小的邏輯單元,再分配給應(yīng)用服務(wù)器。SAN允許企
11、業(yè)獨立地增加它們的存儲容量。SAN的結(jié)構(gòu)允許任何服務(wù)器連接到任何存儲陣列,這樣不管數(shù)據(jù)放在哪里,服務(wù)器都可以直接存取所需的數(shù)據(jù)。圖4-10 SAN(1)SAN的優(yōu)點 傳輸速度快:SAN采用高速的傳輸媒介,并且SAN網(wǎng)絡(luò)獨立于應(yīng)用服務(wù)器系統(tǒng)之外,因此存取速度很快。 擴展性強:SAN的基礎(chǔ)是一個專用網(wǎng)絡(luò),增加一定的存儲空間或增加幾臺應(yīng)用服務(wù)器,都非常方便。 磁盤使用率高:整合了存儲設(shè)備和采用了虛擬化技術(shù),因而整體空間的使用率大幅提升。 (2)SAN的缺點 價格貴:不論是SAN陣列柜還是SAN必需的光纖通道交換機,其價格都是十分昂貴的,就連服務(wù)器上使用的光通道卡的價格也是不易被小型企業(yè)所接受的。 異
12、地部署困難:需要單獨建立光纖網(wǎng)絡(luò),異地擴展比較困難。4不同應(yīng)用場景對應(yīng)的存儲選擇 CPU密集的應(yīng)用環(huán)境:某種應(yīng)用極其消耗CPU資源,其程序內(nèi)部邏輯復(fù)雜而且對磁盤訪問量不高。這種程序在運行時根本不用或只需少量讀取磁盤上的數(shù)據(jù),只是在程序載入的時候讀入一點點程序數(shù)據(jù)而已。進程運行后便會使CPU的核心處于全速狀態(tài),這會造成其他進程在同一時間只能獲得少量的執(zhí)行時間,進而嚴重影響性能。 I/O密集的應(yīng)用環(huán)境:某種程序的內(nèi)部邏輯并不復(fù)雜、耗費的CPU資源不多,但要隨時讀取磁盤上的數(shù)據(jù),如FTP服務(wù)器。 對高并發(fā)隨機小塊I/O或共享訪問文件的應(yīng)用環(huán)境:我們往往會采用NAS。因為對小塊的I/O讀/寫并不會對網(wǎng)
13、絡(luò)造成大的影響,并且NAS提供了網(wǎng)絡(luò)文件共享協(xié)議。4.2 大數(shù)據(jù)時代的存儲管理系統(tǒng) 在普通PC中,目前已經(jīng)被廣泛使用的存儲管理系統(tǒng)有普通的文件系統(tǒng)、鍵-值數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫。 在大數(shù)據(jù)時代,普通PC的存儲容量已經(jīng)無法滿足大數(shù)據(jù)需求,需要進行存儲技術(shù)的變革,我們采用分布式平臺來存儲大數(shù)據(jù)。 4.2.1 文件系統(tǒng)1文件系統(tǒng)簡介 在計算機中,文件系統(tǒng)(File System)是提供了命名文件及放置文件的邏輯存儲和恢復(fù)等功能的系統(tǒng)。DOS、Windows、OS/2、Macintosh和UNIX-based操作系統(tǒng)都有文件系統(tǒng)。在此系統(tǒng)中,文件被放置在分等級的(樹狀)結(jié)構(gòu)中的某一處。文件被放進目錄(W
14、indows中的文件夾)或子目錄。 文件系統(tǒng)是軟件系統(tǒng)的一部分,它的存在使應(yīng)用可以方便地使用抽象命名的數(shù)據(jù)對象和大小可變的空間。2操作系統(tǒng)和文件系統(tǒng)的關(guān)系 文件系統(tǒng)是操作系統(tǒng)用于存儲設(shè)備(磁盤)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu),即在存儲設(shè)備上組織文件的方法。 操作系統(tǒng)中負責管理和存儲文件信息的軟件機構(gòu)被稱為文件管理系統(tǒng),簡稱文件系統(tǒng)。文件系統(tǒng)是對文件存儲設(shè)備的空間進行組織和分配,負責文件存儲并對存入的文件進行保護和檢索的系統(tǒng)。具體地說,它負責為用戶建立文件,允許用戶進行存入、讀出、修改等操作。 4.2.2 分布式文件系統(tǒng)1分布式文件系統(tǒng)簡介 普通文件系統(tǒng)的存儲容量有限,但是大數(shù)據(jù)一般都是海量數(shù)據(jù)
15、,無法在以前的普通文件系統(tǒng)進行存儲。 分布式文件系統(tǒng)把文件分布存儲到多個計算機節(jié)點上,成千上萬的計算機節(jié)點構(gòu)成計算機集群。和以前使用多個處理器和專用高級硬件的并行化處理裝置不同的是,目前的分布式文件系統(tǒng)所采用的計算機集群,都是由普通硬件構(gòu)成的,這就大大降低了硬件上的成本開銷。 計算機集群的基本架構(gòu)如圖4-11所示。圖4-11 計算機集群的基本架構(gòu)2分布式文件系統(tǒng)的整體結(jié)構(gòu) 如圖4-12所示,分布式文件系統(tǒng)在物理結(jié)構(gòu)上是由計算機集群中的多個節(jié)點構(gòu)成的。這些節(jié)點分為兩類,一類叫“主節(jié)點(Master Node)”或者也被稱為“名稱節(jié)點(NameNode)”,另一類叫“從節(jié)點(Slave Node)
16、”或者也被稱為“數(shù)據(jù)節(jié)點(DataNode)”。圖4-12 分布式文件系統(tǒng)的整體結(jié)構(gòu)3Apache下的分布式文件系統(tǒng) Hadoop是Apache軟件基金會旗下的一個分布式系統(tǒng)基礎(chǔ)架構(gòu)。Hadoop框架最核心的設(shè)計就是HDFS、MapReduce,為海量的數(shù)據(jù)提供存儲和計算。 MapReduce主要運用于分布式計算,HDFS主要是Hadoop的存儲,用于海量數(shù)據(jù)的存儲。HDFS是一個分布式文件系統(tǒng),具有高容錯的特點。它可以部署在廉價的通用硬件上,提供高吞吐率的數(shù)據(jù)訪問,適合那些需要處理海量數(shù)據(jù)集的應(yīng)用程序。 HDFS使用的是傳統(tǒng)的分級文件體系,因此,用戶可以像使用普通文件系統(tǒng)一樣,創(chuàng)建、刪除目錄
17、和文件,在目錄間轉(zhuǎn)移文件,重命名文件等。 在HDFS中,一個文件被分成多個塊,以塊作為存儲單位,塊的作用如下。(1)支持大規(guī)模文件存儲(2)簡化系統(tǒng)設(shè)計(3)適合數(shù)據(jù)備份 HDFS采用了主從(Master/Slave)結(jié)構(gòu)模型,如圖4-13所示。一個HDFS集群包括一個名稱節(jié)點(NameNode)和若干個數(shù)據(jù)節(jié)點(DataNode)。 名稱節(jié)點作為中心服務(wù)器,負責管理文件系統(tǒng)的命名空間及客戶端對文件的訪問。 集群中的數(shù)據(jù)節(jié)點負責處理客戶端的讀/寫請求,在名稱節(jié)點的統(tǒng)一調(diào)度下進行數(shù)據(jù)塊的創(chuàng)建、刪除和復(fù)制等操作。 每個數(shù)據(jù)節(jié)點的數(shù)據(jù)實際上是保存在本地Linux文件系統(tǒng)中的。圖4-13 HDFS的體
18、系結(jié)構(gòu) HDFS主要組件的功能(見圖4-14)。圖4-14 HDFS主要組件的功能(1)NameNode 名稱節(jié)點(NameNode)存儲元數(shù)據(jù),元數(shù)據(jù)被保存在內(nèi)存中(磁盤上也保存了一份),保存文件Block、DataNode之間的映射關(guān)系;NameNode記錄了每個文件中各個塊所在的DataNode的位置信息。 元數(shù)據(jù)的內(nèi)容包括文件的復(fù)制等級、修改和訪問時間、訪問權(quán)限、塊大小及組成文件的塊。對目錄來說,NameNode存儲修改時間、權(quán)限和配額元數(shù)據(jù)。(2)DataNode 數(shù)據(jù)節(jié)點(DataNode)負責數(shù)據(jù)的存儲和讀取,數(shù)據(jù)被保存在磁盤中,維護BlockId到DataNode本地文件的映射
19、關(guān)系。DataNode定期向NameNode發(fā)送Block信息以保持聯(lián)系,如果NameNode在一定的時間內(nèi)沒有收到DataNode的Block信息,則認為DataNode已經(jīng)失效了,NameNode會復(fù)制其上的Block到其他DataNode。4.2.3 數(shù)據(jù)庫 數(shù)據(jù)庫(DataBase)就是一個存放數(shù)據(jù)的倉庫。這個倉庫是按照一定的數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的組織形式或數(shù)據(jù)之間的聯(lián)系)來組織、存儲的,我們可以通過數(shù)據(jù)庫提供的多種方式來管理數(shù)據(jù)庫里的數(shù)據(jù)。 數(shù)據(jù)庫家族如圖4-15所示。圖4-15 數(shù)據(jù)庫家族1關(guān)系型數(shù)據(jù)庫 關(guān)系型數(shù)據(jù)庫把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡單的二元關(guān)系(即二維表格形式)。 在關(guān)
20、系型數(shù)據(jù)庫中,程序?qū)?shù)據(jù)的操作幾乎全部建立在一個或多個關(guān)系表格上,即程序通過對這些關(guān)聯(lián)表的表格分類、合并、連接或選取等運算來實現(xiàn)對數(shù)據(jù)的管理。2非關(guān)系型數(shù)據(jù)庫 非關(guān)系型數(shù)據(jù)庫也被稱為NoSQL數(shù)據(jù)庫,如圖4-16所示。 NoSQL的本意是“Not Only SQL”,指的是非關(guān)系型數(shù)據(jù)庫,而不是“No SQL”的意思,因此,NoSQL的產(chǎn)生并不是要徹底否定關(guān)系型數(shù)據(jù)庫,而是成為傳統(tǒng)關(guān)系型數(shù)據(jù)庫的一個有效補充。 NoSQL數(shù)據(jù)庫在特定的場景下可以發(fā)揮出難以想象的高效率和高性能。圖4-16 非關(guān)系型數(shù)據(jù)庫 NoSQL是非關(guān)系型數(shù)據(jù)庫的廣義定義。它打破了長久以來關(guān)系型數(shù)據(jù)庫與ACID理論“大一統(tǒng)”的
21、局面。NoSQL數(shù)據(jù)存儲不需要固定的表結(jié)構(gòu),通常也不存在連接操作。在大數(shù)據(jù)存取上具備關(guān)系型數(shù)據(jù)庫無法比擬的性能優(yōu)勢。該術(shù)語(NoSQL)在2009年初得到了廣泛認同。 當今的應(yīng)用體系結(jié)構(gòu)需要數(shù)據(jù)存儲在橫向伸縮性上能夠滿足需求,而NoSQL存儲就是滿足這個需求而誕生的。 NoSQL典型產(chǎn)品包括Memcached、Redis、MongoDB、HBase等。4.2.4 鍵-值數(shù)據(jù)庫 鍵-值(Key-Value)數(shù)據(jù)庫是一種NoSQL數(shù)據(jù)庫,用戶可以通過Key來添加、查詢或者刪除數(shù)據(jù)。因為使用Key主鍵訪問,所以會獲得很高的性能及擴展性。鍵-值存儲非常適合不涉及過多數(shù)據(jù)關(guān)系和業(yè)務(wù)關(guān)系的數(shù)據(jù),同時能有效
22、減少讀/寫磁盤的次數(shù),比SQL數(shù)據(jù)庫存儲擁有更好的讀/寫性能。 鍵-值數(shù)據(jù)庫主要使用一個哈希表,這個表有一個特定的鍵和一個指針指向特定的數(shù)據(jù)。Key-Value模型對IT系統(tǒng)的優(yōu)勢在于簡單、易部署、高并發(fā)。1鍵-值對的存儲 鍵-值對存儲是數(shù)據(jù)庫最簡單的組織形式。鍵-值對存儲通常都有如下接口。(1)Get(Key):獲取之前存儲于某標示符“Key”之下的一些數(shù)據(jù),如果“Key”下沒有數(shù)據(jù)則報錯。(2)Set(Key, Value):將“Value”存儲到存儲空間中某標示符“Key”下,使我們可以通過調(diào)用相同的“Key”來訪問它。如果“Key”下已經(jīng)有了一些數(shù)據(jù),舊的數(shù)據(jù)將被替換。 (3)Dele
23、te(key):刪除存儲在“Key”下的數(shù)據(jù)。2鍵-值數(shù)據(jù)庫的優(yōu)缺點 優(yōu)點:在鍵已知的情況下查找內(nèi)容,鍵-值數(shù)據(jù)庫的訪問速度比關(guān)系型數(shù)據(jù)庫快好幾個數(shù)量級。 缺點:在鍵未知的情況下查找內(nèi)容,鍵-值數(shù)據(jù)庫的訪問速度是非常糟糕的。因為鍵-值數(shù)據(jù)庫不知道存儲的數(shù)據(jù)是結(jié)構(gòu)的還是內(nèi)容的,它沒有關(guān)系型數(shù)據(jù)庫中那樣的數(shù)據(jù)結(jié)構(gòu),無法像SQL那樣用WHERE語句或者通過任何形式的過濾來請求數(shù)據(jù)庫中的一部分數(shù)據(jù),它必須遍歷所有的鍵,獲取它們對應(yīng)的值,進行某種用戶所需要的過濾,然后保留用戶想要的數(shù)據(jù)。 市場上流行的鍵-值數(shù)據(jù)庫有Memcached、Redis、MemcacheDB、Berkeley DB。 4.2.5
24、 分布式數(shù)據(jù)庫 HBase(分布式數(shù)據(jù)庫)是一種NoSQL(非關(guān)系型數(shù)據(jù)庫)模型,經(jīng)常用于分布式環(huán)境里,是一個分布式的結(jié)構(gòu)化數(shù)據(jù)存儲系統(tǒng),是Apache的一個開源項目,是Google公司的BigTable的開源實現(xiàn)。 HBase的目標是處理非常龐大的表,可以通過水平擴展的方式,利用廉價計算機集群來處理超過10億行數(shù)據(jù)和數(shù)百萬列元素組成的數(shù)據(jù)表。 HBase是一個疏松的、分布式的、已排序的多維度持久化的列族數(shù)據(jù)庫。 列存儲數(shù)據(jù)庫將數(shù)據(jù)存在列族(column family)中,一個列族存儲經(jīng)常被一起查詢的相關(guān)數(shù)據(jù)。例如,如果我們有一個Person類,我們通常會一起查詢其姓名和年齡,而不是薪資。在這
25、種情況下,姓名和年齡就會被放入一個列族中,而薪資則在另外一個列族中。 若要使用HBase,我們需要了解如下6個重要概念。(1)表(table):HBase采用表來組織數(shù)據(jù)。(2)行(row):每個表都由行組成,每個行由行鍵(rowkey)來標識。(3)列族(column family):一個table有多個列族。(4)列限定符:是column family的分類,每個column family可以有不同的分類。(5)時間戳(timestamp):時間戳用來區(qū)分數(shù)據(jù)的不同版本。(6)單元格(cell):在table中,通過行、列族、子列、時間戳來確定一個cell,cell中存儲的數(shù)據(jù)沒有數(shù)據(jù)類型
26、,是字節(jié)數(shù)組byte 。 HBase的結(jié)構(gòu)示例如圖4-17所示。圖4-17 HBase的結(jié)構(gòu)示例 在HBase數(shù)據(jù)庫表中插入數(shù)據(jù)應(yīng)使用put操作。例如,使用如下語句可向數(shù)據(jù)庫表中插入3條數(shù)據(jù)。put t1,rowkey001,f1:col1,value01bput t1,rowkey001,f1:col2,value02put t1,rowkey001,f2:col1,valuef2col1 查看剛才插入的數(shù)據(jù)使用scan命令,結(jié)果如圖4-18所示。圖4-18 使用scan命令查看表的結(jié)果4.2.6 關(guān)系型數(shù)據(jù)庫1關(guān)系型數(shù)據(jù)庫的特點(1)關(guān)系型數(shù)據(jù)庫,是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫,現(xiàn)實世界中
27、的各種實體以及實體之間的各種聯(lián)系均用關(guān)系模型來表示。(2)所謂關(guān)系模型就是“一對一、一對多、多對多”等二維表格模型,因而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系組成的一個數(shù)據(jù)組織。(3)關(guān)系型數(shù)據(jù)庫以行和列的形式存儲數(shù)據(jù),這一系列的行和列被稱為表,一組表組成了數(shù)據(jù)庫。(4)關(guān)系型數(shù)據(jù)庫里面的數(shù)據(jù)是按照“數(shù)據(jù)結(jié)構(gòu)”來組織的,因為有了“數(shù)據(jù)結(jié)構(gòu)”,所以關(guān)系型數(shù)據(jù)庫里面的數(shù)據(jù)是“條理化”的。2關(guān)系型數(shù)據(jù)庫的基本概念(1)表:表是一系列二維數(shù)組的集合,用來代表和存儲數(shù)據(jù)對象之間的關(guān)系。它由縱向的列和橫向的行組成。(2)行:也稱元組或記錄,在表中是一條橫向的數(shù)據(jù)集合。(3)列:也稱字段,在表中是一條縱
28、向的數(shù)據(jù)集合,列也定義了表中的數(shù)據(jù)結(jié)構(gòu)。3結(jié)構(gòu)化查詢語言 結(jié)構(gòu)化查詢語言(Structured Query Language,SQL)用于對關(guān)系型數(shù)據(jù)庫里的數(shù)據(jù)和表進行查詢、更新和管理。 常用操作如下。創(chuàng)建數(shù)據(jù)庫表:CREATE DATABASE 其他參數(shù)查詢:SELECT * FROM 表 WHERE 條件表達式。增加:INSERT INTO 表名 (列名1,列名2,) VALUES (列值1,列值2,)。刪除:DELETE FROM 表名WHERE 條件表達式。修改:UPDATE 表名 SET 列名=值WHERE 條件表達式。4事務(wù)的ACID特性 事務(wù)的ACID特性包括:原子性(Atomi
29、city)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。(1)原子性:整個事務(wù)中的所有操作,要么全部成功,要么全部失敗,沒有中間狀態(tài)。(2)一致性:事務(wù)是按照預(yù)期生效的,一致性的核心一部分靠原子性實現(xiàn),另一部分靠邏輯實現(xiàn)。(3)隔離性:一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對并發(fā)的其他事務(wù)是隔離的。事務(wù)的隔離級別一共有4種狀態(tài),可以在數(shù)據(jù)庫中進行設(shè)置。(4)持久性:在事務(wù)完成以后,保證事務(wù)對數(shù)據(jù)庫所做的更改被持久地保存在數(shù)據(jù)庫之中。 常見的關(guān)系型數(shù)據(jù)庫有Oracle、SQL Server、MySQL、SQLite、PostgreSQL、Sqlite。
30、4.2.7 數(shù)據(jù)倉庫 數(shù)據(jù)倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩(wěn)定的(Non-Volatile)、反映歷史變化(Time Variant)的數(shù)據(jù)集合。 Hive是一個構(gòu)建于Hadoop上的數(shù)據(jù)倉庫工具,支持大規(guī)模數(shù)據(jù)存儲、分析,具有良好的可擴展性。它的底層依賴分布式文件系統(tǒng)HDFS存儲數(shù)據(jù),并使用分布式并行計算模型MapReduce處理數(shù)據(jù)。Hive定義了簡單的類似于SQL的查詢語言HiveQL,用戶可以通過編寫的HiveQL語句運行MapReduce任務(wù)。 下面通過實例簡單介紹Hive的常見操作。1創(chuàng)建
31、表 以下語句在Hive數(shù)據(jù)庫中創(chuàng)建表usr,含有3個屬性,即id、name、age。hive use hive; hivecreate table if not exists usr(id bigint,name string,age int); 以下語句在Hive數(shù)據(jù)庫中,創(chuàng)建表usr,含有3個屬性,即id、name、age,存儲路徑為“/usr/local/hive/warehouse/hive/usr”。hivecreate table if not exists hive.usr(id bigint,name string,age int) location /usr/local/hi
32、ve/warehouse/hive/usr; 2查看數(shù)據(jù)庫 以下語句查看Hive中包含的所有數(shù)據(jù)庫。 以下語句查看Hive中以h開頭的所有數(shù)據(jù)庫。hive show databases; hiveshow databases like h.* ;3查看表和視圖 以下語句查看數(shù)據(jù)庫Hive中所有的表和視圖。 以下語句查看數(shù)據(jù)庫Hive中以u開頭的所有表和視圖。hive use hive; hive show tables; hive show tables in hive like u.* ; 4向表中加載數(shù)據(jù) 以下語句把目錄“/usr/local/data”下的數(shù)據(jù)文件中的數(shù)據(jù)加載進usr表并
33、覆蓋原有數(shù)據(jù)。ive load data local inpath /usr/local/data overwrite into table usr; 以下語句把目錄“/usr/local/data”下的數(shù)據(jù)文件中的數(shù)據(jù)加載到usr表,且不覆蓋原有數(shù)據(jù)。 以下語句把分布式文件系統(tǒng)目錄“hdfs:/master_server/usr/ local/data”下的數(shù)據(jù)文件中的數(shù)據(jù)加載到usr表,并覆蓋原有數(shù)據(jù)。hive load data local inpath /usr/local/data into table usr; hive load data inpath hdfs:/master_
34、server/usr/local/data overwrite into table usr; 圖4-19所示是Hive的應(yīng)用流程。第一個階段是從各種數(shù)據(jù)源獲取數(shù)據(jù),數(shù)據(jù)源可以是文檔、關(guān)系型數(shù)據(jù)庫等;第二個階段是數(shù)據(jù)被抽取轉(zhuǎn)換和加載存放到數(shù)據(jù)倉庫中;第三個階段是分析和挖掘數(shù)據(jù)倉庫中存儲的數(shù)據(jù),然后應(yīng)用到各種場景中,如數(shù)據(jù)挖掘系統(tǒng)、報表分析系統(tǒng)、查詢應(yīng)用等。 圖4-19涉及一些相關(guān)定義:OLTP是傳統(tǒng)的關(guān)系型數(shù)據(jù)庫的主要應(yīng)用,主要是基本的日常事務(wù)處理,如銀行交易;OLAP是數(shù)據(jù)倉庫系統(tǒng)的主要應(yīng)用,支持復(fù)雜的分析操作,側(cè)重決策支持,并且提供直觀易懂的查詢結(jié)果。圖4-19 Hive的應(yīng)用流程4.2.
35、8 文檔數(shù)據(jù)庫 文檔數(shù)據(jù)庫會將數(shù)據(jù)以文檔的形式存儲。每個文檔都是自包含的數(shù)據(jù)單元,是一系列數(shù)據(jù)項的集合。每個數(shù)據(jù)項都有一個名稱與對應(yīng)的值。此值既可以是簡單的數(shù)據(jù)類型,如字符串、數(shù)字和日期等;也可以是復(fù)雜的類型,如有序列表和關(guān)聯(lián)對象。數(shù)據(jù)存儲的最小單位是文檔,同一個表中存儲的文檔屬性可以是不同的,數(shù)據(jù)可以使用XML、JSON或者JSONB等多種形式存儲。 MongoDB是一種用得比較多的文檔數(shù)據(jù)庫,是非關(guān)系型數(shù)據(jù)庫中功能最豐富、最像關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,類似JSON的BSON格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。1MongoDB的基本概念(1)文檔 簡單地說,文檔可以被
36、理解為一個文本文件,不過這個文本文件有固定的格式,即使用BSON的有序鍵-值對;文檔就相當于表中的一條記錄;MongoDB的文檔可以使用不同的字段,并且相同的字段可以使用不同的數(shù)據(jù)類型;文檔中的值不僅可以是在雙引號中的字符串,還可以是其他幾種數(shù)據(jù)類型(甚至可以是整個嵌入的文檔);MongoDB區(qū)分類型和大小寫。(2)文檔的鍵 鍵是字符串類型,MongoDB的文檔不能有重復(fù)的鍵。(3)集合 多個文檔組成一個集合(見圖4-20),相當于關(guān)系型數(shù)據(jù)庫的表,通常包括常規(guī)集合及定長集合;集合存在于數(shù)據(jù)庫中,無固定模式,即使用動態(tài)模式,也就是說,集合不要求每一個文檔使用相同的數(shù)據(jù)類型及列。(4)數(shù)據(jù)庫 一
37、個MongoDB實例可以包含多個數(shù)據(jù)庫;一個數(shù)據(jù)庫可以包含多個集合;一個集合可以包含多個文檔。圖4-20 多個不同的文檔組成了一個集合2MongoDB的適用場景(1)更高的寫入負載 在默認情況下,MongoDB更側(cè)重大數(shù)據(jù)和高頻率的寫入性能,而非事務(wù)安全,MongoDB很適合業(yè)務(wù)系統(tǒng)中有大量“低價值”數(shù)據(jù)的場景。但是應(yīng)當避免在高事務(wù)安全性的系統(tǒng)中使用MongoDB,除非能從架構(gòu)設(shè)計上保證事務(wù)安全。(2)高可用性 MongoDB的主副集(Master-Slave)配置非常簡潔、方便,此外,MongoDB可以快速地處理單節(jié)點故障,自動、安全地完成故障轉(zhuǎn)移。這些特性使MongoDB能在一個相對不穩(wěn)定的環(huán)境中保持高可用性。(3)表結(jié)構(gòu)不明確 數(shù)據(jù)在不斷變大在一些傳統(tǒng)RDBMS中,增加一個字段會鎖住整個數(shù)據(jù)庫/表,或者在執(zhí)行一個重負載的請求時會明顯造成其他請求的性能降級,這些情況通常發(fā)生在數(shù)據(jù)表大于1GB的時候(當大于1TB時更甚)。因為MongoDB是文檔數(shù)據(jù)庫,為非結(jié)構(gòu)化的文檔增加一個新字段是很快速的操作,并且不會影響到已有數(shù)據(jù)。另外,當業(yè)務(wù)數(shù)據(jù)發(fā)生變化時,不需要由DBA修改表結(jié)構(gòu)。4.2.9 圖形數(shù)據(jù)庫 圖形數(shù)據(jù)庫是一種NoSQL數(shù)據(jù)庫,它應(yīng)用圖形理論存儲實體之間的關(guān)系信息。最常見例子就是社會網(wǎng)絡(luò)中人與人之間的關(guān)系。 一個圖形
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人酒水銷售合同范本
- 醫(yī)院柔性引進專家合同范本
- 一年級讀書心得體會
- 口腔助理勞動合同范例
- 半成品乳鴿采購合同范本
- 保本分紅合同范本
- 《認識米》的數(shù)學(xué)教案
- 《茉莉花》教案五篇
- 《爺爺和小樹》教學(xué)反思
- 《樹是我們的好朋友》教案
- 考前沖刺攻略課件
- 2024年12月2025中央統(tǒng)戰(zhàn)部直屬事業(yè)單位應(yīng)屆高校畢業(yè)生公開招聘21人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2024年湖北省煙草專賣局(公司)招聘筆試真題
- 2025中鐵快運股份限公司招聘全日制普通高校畢業(yè)生35人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年浙江寧波寧興集團有限公司招聘筆試參考題庫含答案解析
- 2024年下半年中國海油秋季校園招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 《京東家法》定稿
- 內(nèi)襯修復(fù)用HTPO管材企標
- 部編教材一年級下冊生字筆順筆畫
- 二維火收銀使用手冊
- EN12680.3中文
評論
0/150
提交評論