- 大數據:從基礎理論到最佳實踐
- 祁偉
- 1911字
- 2021-01-07 18:47:55
1.2 大數據的技術轉型
直至今天,我們無論是使用ATM機取款、預訂航班機票,還是查詢交通違章信息,都離不開關系數據庫,都依托于背后的關系數據庫的數據事務處理。在事務處理上,關系模型無處不在。關系數據庫模型成功的關鍵之處,在于該模型的標準化。每個數據單元在一個表中只會出現一次,這不但減少了冗余的存儲成本,而且還使得數據修改只發生在一個位置,數據的一致性得以保持。表中的某一列可被指定為主鍵,主鍵是一個保證無二義性地檢索單條記錄的屬性值,還可以在查詢語法中使用主鍵來連接這些關系。關系數據庫還創造出了結構化查詢語言(Structured Query Language, SQL)來表達關系查詢。關系型數據庫為存儲和查詢數據提供了非常靈活的模型。
關系數據庫模型的另一個重要概念是事務。事務管理器(或者一個事務處理服務)在一個工作單元中維護數據的完整性。一組操作被當作一個工作單元(unit),在一個工作單元中,操作的所有部分一起成功,或失敗并恢復。
凡符合關系模型的數據庫,在事務處理上需要滿足被稱為ACID的特性。
●原子性(Atomicity):一個事務要被完全地、無二義性地做完或撤銷。在任何操作出現一個錯誤的情況下,構成事務的所有操作的效果必須被撤銷,數據應被回滾到事務開始前的狀態。
●一致性(Consistency):一個事務應該保護所有定義在數據上的不變的屬性(例如完整性約束)。在完成了一個成功的事務時,數據應處于一致的狀態。一個一致的事務將保護定義在數據上的所有完整性約束。
●隔離性(Isolation):在同一個環境中,可能有多個事務并發執行,而每個事務都應表現為獨立執行。串行地執行一系列事務的效果應該等同于并發地執行它們。在一個事務執行的過程中,數據的中間狀態不應該被暴露給所有的其他事務;兩個并發的事務應該不能操作同一項數據。
●持久性(Durability):一個被完成的事務的效果應該是持久的。只要事務成功結束,它對數據庫所做的更新就必須永久保存下來。即使發生系統崩潰,重新啟動數據庫系統后,數據庫還能恢復到事務成功結束時的狀態。
關系數據庫有兩個強制性要求:對數據要預先理解,在進行插入操作之前,必須先定義好模式和關系;在寫入操作發生后,保持數據的一致性。
可擴展性是這種計算模式的一大缺陷。當數據容量更大、并發處理性能需求更高時,唯有提高服務器性能指標和可靠性,這是典型的向上擴展模式(Scale Up)。即使可采用并行數據庫集群,最多也只能管理有限數量的服務器,而且這種并行數據庫也同樣要求高配置的服務器才可以運轉,其成本之高可以想象。
隨著信息技術的進步,相比較而言,軟件的重要性將下降,數據的重要性將上升。人類處理、傳輸和保存數據的能力不斷增強。
20多年來,CPU的性能提高了3500倍;內存和磁盤的價格下降到了原來的450萬分之一和360萬分之一;主干網絡帶寬每6個月增加1倍,而每比特費用將趨于零。
另一方面,人類生產數據的能力也在增強,數據正在發生井噴式的增長。這與互聯網、移動互聯網、社交網絡以及未來物聯網大潮的高速發展直接相關。特別是智能手機等手持設備和社交網絡的廣泛使用,使得越來越多的人能夠將可支配時間投入到各種應用中,而未來物聯網的發展,任意物品和設施都有可能24小時不間斷地產生狀態數據。
讓我們看一看當今互聯網應用場景:Facebook管理了超過400億張圖片,所需存儲空間超過100PB,每天發布的新消息超過60億條,所需的存儲空間超過10TB;Twitter一天產生1.9億條微博;搜索引擎一天產生的日志高達35TB,Google一天處理的數據量超過25PB;YouTube一天上傳的視頻總時長為5萬小時……。
數據量的衡量單位,從小到大依次為KB、MB、GB、TB、PB、EB和ZB,相互之間的轉換公式為1024KB=1MB;1024MB=1GB;1024GB=1TB;1024TB=1PB;1024PB=1EB;1024EB=1ZB。我們曾經經歷過MB存儲時代、GB存儲時代,隨著IT技術的快速發展,我們邁入了TB時代,而現在正向PB、EB時代遷移。
盡管隨著時間的推移,商用計算機硬件變得越來越便宜,但是,從歷史和經濟的角度來看,持續不斷地升級到更高配置的服務器硬件是不可行的?;ㄙM數倍的價錢升級一個大型機器,可能無法提供同樣倍數的性能。相比之下,性能一般的小型服務器仍然很便宜。一般情況下,從經濟的角度來看,水平擴展更有意義。換句話說,應該簡單地為系統增加更多便宜的機器,而不是試圖將一個關系型數據庫放到一臺昂貴的大型服務器上。
以關系數據庫技術,不可能支撐今天大數據的應用場景。
對于很多應用場景,尤其是互聯網相關應用來說,并不像銀行業務等對數據的一致性有很高的要求,而更看重數據的高可用性以及架構的可擴展性等技術因素。因此,NoSQL數據庫應運而生,作為適應不同應用場景要求的新型數據存儲與處理架構,它與傳統數據庫有很強的互補作用,而且應用場景更加廣泛。例如,Yahoo公司通過部署包含4000臺普通服務器的Hadoop集群,可以存儲和處理高達4PB的數據,整個分布式架構具有非常強的可擴展性。NoSQL數據庫的廣泛使用,代表了一種技術范型的轉換。