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