過去30多年中,在哪里存放數(shù)據(jù)以及如何存放數(shù)據(jù)成為了系統(tǒng)開發(fā)領(lǐng)域里最基礎(chǔ)的問題。無論是將數(shù)據(jù)存儲在數(shù)據(jù)庫管理系統(tǒng)(DBMS)中,還是采用云存儲,企業(yè)都無法將這一問題實(shí)現(xiàn)自動(dòng)化。
在AWS云當(dāng)中,用戶有以下幾個(gè)數(shù)據(jù)庫選項(xiàng):
·Amazon RDS
·Amazon DynamoDB
·Amazon Redshift
·Amazon SimpleDB
·Amazon Machine Images多個(gè)關(guān)系型選項(xiàng) (Amazon Elastic Cloud Compute 和Elastic Block Storage (EBS)提供可擴(kuò)展的計(jì)算、存儲與實(shí)例控制)
此外,AWS云還提供了其他三個(gè)大的存儲類別:
·Instance Store (Ephemeral)
·Elastic Block Storage (EBS)
·Amazon Simple Storage Service (S3) (對象存儲)
首先,我們來探討一下使用諸如S3這樣的對象存儲的好處。對象存儲比傳統(tǒng)的文件系統(tǒng)存儲更具擴(kuò)展性,這也是用戶在存儲數(shù)據(jù)時(shí)經(jīng)常考慮的問題。與以目錄層次結(jié)構(gòu)來組織文件的方式不同,對象存儲系統(tǒng)以容器(S3中的bucket)的方式來存儲文件,然后使用唯一ID(S3中的key)對其進(jìn)行檢索。
在對象存儲系統(tǒng)中,存儲和訪問文件的元數(shù)據(jù)比傳統(tǒng)文件系統(tǒng)要少。由于減少了管理文件元數(shù)據(jù)的額外工作,這使得對象存儲的效率變得非常高。也就是說,開發(fā)人員可以通過添加節(jié)點(diǎn)的方式來無限地對系統(tǒng)進(jìn)行橫向擴(kuò)展。
當(dāng)處理非結(jié)構(gòu)化數(shù)據(jù)或歸檔數(shù)據(jù)的時(shí)候,用戶通常會采用對象存儲方式。比如多媒體數(shù)據(jù)(圖片、音頻、視頻等),Web文件,文檔數(shù)據(jù)。事實(shí)上,許多云存儲系統(tǒng)都使用了S3作為它們的存儲系統(tǒng)選項(xiàng)。
此外,對象存儲也適合非關(guān)系型數(shù)據(jù)庫,比如基于Hadoop/MapReduce的數(shù)據(jù)分析應(yīng)用。在存儲日志文件以及傳感器數(shù)據(jù)方面,對象存儲是不錯(cuò)的選擇。
通常來說,數(shù)據(jù)庫(包括AWS的服務(wù))會使用不同的方式和機(jī)制來存儲數(shù)據(jù),主要用來應(yīng)對不同的應(yīng)用場景。拿交易型數(shù)據(jù)存儲舉例,它提供了多用戶訪問機(jī)制,同時(shí)對所存儲的數(shù)據(jù)進(jìn)行了約束。
數(shù)據(jù)庫可以檢索并更新信息,同時(shí)讓底層的物理存儲系統(tǒng)對數(shù)據(jù)庫用戶是透明的。一個(gè)典型的數(shù)據(jù)目錄和并發(fā)控制服務(wù)會保護(hù)數(shù)據(jù)不受多用戶訪問的干擾。
此外,數(shù)據(jù)庫提供了恢復(fù)服務(wù),能夠讓數(shù)據(jù)庫回滾到一致性狀態(tài),同時(shí)提供了更加復(fù)雜的安全服務(wù)以及數(shù)據(jù)通信完整性服務(wù)。數(shù)據(jù)庫還能夠保證數(shù)據(jù)獨(dú)立性,也就是說它可以更加輕松地將數(shù)據(jù)打散為多個(gè)邏輯塊。而且像性能監(jiān)控、數(shù)據(jù)導(dǎo)入導(dǎo)出等都是數(shù)據(jù)庫所能夠提供的服務(wù)。
當(dāng)構(gòu)建一個(gè)業(yè)務(wù)系統(tǒng)的時(shí)候,數(shù)據(jù)庫往往是企業(yè)的首選技術(shù)。而隨著像Amazon S3這樣的存儲系統(tǒng)不斷地完善,它也可以用在一些特定的應(yīng)用場景下。最后是一句老生常談的話,用戶選擇技術(shù)時(shí)還是要將它們與業(yè)務(wù)需求緊密聯(lián)系在一起,切忌盲目。