數(shù)據(jù)存儲(chǔ)主要有兩種方式:Database和FileSystem,后面發(fā)展出了Object-oriented storage,但是總的來(lái)看就是存儲(chǔ)結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)兩種。 DB開始是為了結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)和共享而服務(wù)的。FileSystem存儲(chǔ)和共享的是大文件,非結(jié)構(gòu)的數(shù)據(jù),像圖片,文檔,影音等。隨著數(shù)據(jù)量的增大,單機(jī)存儲(chǔ)已經(jīng)不能滿足結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的需求,那么在云計(jì)算的時(shí)代,就出現(xiàn)了分布式存儲(chǔ)和分布式數(shù)據(jù)庫(kù)的解決方案。
1,F(xiàn)ile System, Object-oriented storage
那么對(duì)于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)就出現(xiàn)了分布式文件系統(tǒng)(Lustre),分布式對(duì)象存儲(chǔ)系統(tǒng)(Ceph/S3),P2P存儲(chǔ)系統(tǒng)(Oceanstore)等。
(1)像Lustre這類的分布式文件系統(tǒng)在HPC領(lǐng)域應(yīng)用很廣,對(duì)于文件系統(tǒng)底層硬件的要求相對(duì)比較高,一般是SAN和磁盤陣列這樣的高端存儲(chǔ)。所以這類文件系統(tǒng)的IO性能會(huì)比較高,背后的代價(jià)就是成本比較高。這類存儲(chǔ)產(chǎn)品一般用在銀行、證券、石油、航天等領(lǐng)域。
(2)像Ceph/S3這樣的面向?qū)ο蟠鎯?chǔ)是目前非?;鸬囊环N非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)方式。這是順應(yīng)云計(jì)算大潮的一種存儲(chǔ)方式,用戶存儲(chǔ)提供的不再是POSIX文件系統(tǒng)接口,而是通過(guò)REST等方式訪問(wèn)云端數(shù)據(jù)的接口,用戶不需要維護(hù)和管理任何存儲(chǔ)設(shè)備。而且云計(jì)算服務(wù)提供商會(huì)提供相應(yīng)的SLA來(lái)保證IO性能和數(shù)據(jù)的reliability以及availability,所以這種方式對(duì)于用戶很受歡迎。在現(xiàn)在互聯(lián)網(wǎng)開放平臺(tái)的大潮中,各種各樣的API就是用戶構(gòu)建應(yīng)用的基礎(chǔ),而API背后的服務(wù)就是基于云提供商的。在各種云計(jì)算服務(wù)中,云存儲(chǔ)服務(wù)是其中最重要的。在云計(jì)算領(lǐng)域提倡數(shù)據(jù)和應(yīng)用分離,例如Amazon推薦使用EC2的用戶把數(shù)據(jù)存到S3中而不是存放在自己EC2 Instance的本地硬盤上。最近國(guó)內(nèi)最像Amazon的云計(jì)算服務(wù)提供商盛大云出現(xiàn)了用戶數(shù)據(jù)丟失的情況,仔細(xì)研究了下發(fā)現(xiàn)是用戶云主機(jī)(類似于EC2 Instance)上的數(shù)據(jù)丟失了,原來(lái)是云主機(jī)沒(méi)有備份機(jī)制,所以云主機(jī)磁盤出了問(wèn)題就會(huì)導(dǎo)致數(shù)據(jù)丟失。從AWS(Amazon Web Service)和GCE(Google Compute Engine)的官網(wǎng)可以知道,這兩家頂級(jí)的云計(jì)算服務(wù)提供商都不提供云主機(jī)的本地磁盤備份機(jī)制。我們可以這樣理解,在這種計(jì)算模型下,云主機(jī)EC2 Instance相當(dāng)于計(jì)算機(jī)的CPU和Memory,不具備持久化功能;而云存儲(chǔ)S3具備持久化存儲(chǔ)功能,相當(dāng)于計(jì)算機(jī)的硬盤。所以可以把整個(gè)云看成是一個(gè)新型的計(jì)算機(jī)體系結(jié)構(gòu)。
(3)像Oceanstore這種P2P存儲(chǔ)的方式,在大家共享影音文件方面的應(yīng)用比較成熟。比較典型的包括當(dāng)時(shí)的eMule,Maze等。影音文件一般比較大,我們相當(dāng)于把它存放在廣域網(wǎng)/局域網(wǎng)的大的存儲(chǔ)池里,這樣用戶之間都可以就近下載東西,而且用戶自己也充當(dāng)服務(wù)器的功能為別人提供下載的來(lái)源,省得每次都去中央服務(wù)器那下載,帶寬的bottleneck解決了。但是這類存儲(chǔ)一般不能保證延遲,用戶在下載一個(gè)電影可能需要幾分鐘,那么用戶不太關(guān)心中間的傳輸速度是不是有什么波峰波谷,只要總的帶寬比較高就行了,根據(jù)“文件大小/帶寬=傳輸時(shí)間”只要傳輸時(shí)間最小就行了。但是我覺得隨著云計(jì)算云存儲(chǔ)的普及,主要的云計(jì)算服務(wù)提供商會(huì)在全國(guó)鋪設(shè)多個(gè)存儲(chǔ)和計(jì)算的數(shù)據(jù)中心,這樣就可以分散主數(shù)據(jù)中心的帶寬壓力,形成粒度很大的類似P2P的存儲(chǔ)網(wǎng)絡(luò)。而且隨著CDN技術(shù)的發(fā)展,還有就是網(wǎng)絡(luò)帶寬的不斷提高,P2P這種模式的發(fā)展可能會(huì)受到制約。
2,Database, Data warehouse, Big Data
說(shuō)完FileSystem,就該說(shuō)DB了。RDBMS設(shè)計(jì)的初衷是為了存儲(chǔ)關(guān)系型數(shù)據(jù),也就是存儲(chǔ)的數(shù)據(jù)之間存在著各種范式的嚴(yán)格要求。但是現(xiàn)實(shí)世界中的數(shù)據(jù)不是都那么嚴(yán)格規(guī)范化的,尤其是越來(lái)越多的機(jī)器和人類社會(huì)活動(dòng)中產(chǎn)生的數(shù)據(jù)(如用戶瀏覽互聯(lián)網(wǎng)的日志數(shù)據(jù),社交網(wǎng)絡(luò)數(shù)據(jù),醫(yī)療診斷數(shù)據(jù),交通數(shù)據(jù),金融交易數(shù)據(jù),電子商務(wù)交易數(shù)據(jù)等)是半結(jié)構(gòu)化或者非結(jié)構(gòu)化的。這些數(shù)據(jù)同樣有存儲(chǔ)和分析的需求,而且這些數(shù)據(jù)中往往蘊(yùn)藏著極大的商業(yè)價(jià)值。對(duì)傳統(tǒng)RDBMS中的關(guān)系型數(shù)據(jù)的分析是數(shù)據(jù)倉(cāng)庫(kù)DW干的事,即分析的對(duì)象是各種關(guān)系型數(shù)據(jù)。那么對(duì)于這些非結(jié)構(gòu)化數(shù)據(jù)的分析就不像DW那么簡(jiǎn)單了,除了我們常見的DW的功能,我們?cè)趯?duì)這些“大數(shù)據(jù)”的分析中又出現(xiàn)了回歸,聚類,分類,關(guān)聯(lián)分析等機(jī)器學(xué)習(xí)的需求,那么在“大數(shù)據(jù)”時(shí)代的分析平臺(tái)就不像數(shù)據(jù)倉(cāng)庫(kù)DW那么簡(jiǎn)單了。
那么對(duì)半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)和分析的需求,催生了NoSQL數(shù)據(jù)庫(kù)的誕生。提到NoSQL數(shù)據(jù)庫(kù),我們發(fā)現(xiàn)現(xiàn)在的NoSQL數(shù)據(jù)庫(kù)和RDBMS類似都有兩方面的需求:OLTP和OLAP。當(dāng)然我覺得這兩個(gè)術(shù)語(yǔ)放在這不太合適,畢竟OLTP中的T(Trasaction)現(xiàn)在大多數(shù)NoSQL數(shù)據(jù)庫(kù)是不提供的,所以這兩個(gè)詞只是形象的表示下,從嚴(yán)格意義上是不對(duì)的。通俗的解釋這兩方面的需求就是:用戶對(duì)數(shù)據(jù)的在線存儲(chǔ)訪問(wèn);離線分析型應(yīng)用對(duì)數(shù)據(jù)的訪問(wèn)。前者主要是對(duì)數(shù)據(jù)的CRUD操作,用戶在線訪問(wèn)數(shù)據(jù)比較關(guān)心訪問(wèn)延遲,同時(shí)盡可能高的提高吞吐。后者呢主要是對(duì)數(shù)據(jù)的一次寫多次讀操作,應(yīng)用訪問(wèn)數(shù)據(jù)不太關(guān)心延遲,只在乎吞吐量。那么我們可以把這兩種典型應(yīng)用對(duì)應(yīng)到以前的數(shù)據(jù)庫(kù)DB和數(shù)據(jù)倉(cāng)庫(kù)DW。同時(shí)在“大數(shù)據(jù)”時(shí)代,數(shù)據(jù)的分析型應(yīng)用已經(jīng)不僅僅局限在數(shù)據(jù)倉(cāng)庫(kù)DW的范疇內(nèi),以聚類,分類,關(guān)聯(lián)分析為代表的機(jī)器學(xué)習(xí)應(yīng)用也是重要的需求。